Thông báo

Collapse
No announcement yet.

Cần giúp về code ASM mạch hẹn giờ

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Cần giúp về code ASM mạch hẹn giờ

    Hiện em đang làm đề tài mạch hẹn giờ dùng 89c51,mạch thì em đã hoàn thành,còn phần code chương trình thì em đang bí,mong được mấy anh chị trong diễn đàn giúp đỡ.Nguyên lý hoạt động của mạch là khi có nhấn nút ở nút nhấn p3.3 thì bộ đếm ở led tăng lên 1 ,nhấn nút giảm ở chân p3.4 thì bộ đếm giảm 1.khi nhấn nút Start ở p3.2 thì bộ đếm bắt đầu đếm ngược cho đến khi = 0 thì đưa ra tín hiệu ở chân p3.5 làm led sáng.em còn gà quá mong mấy anh chị giúp em phần code này với.code asm


    mạch mô phỏng : http://www.mediafire.com/?x9yia3a64abz4xh

  • #2
    Bạn chép về thử nhé:
    Code:
    ;PHAN KHAI BAO BIEN NGO VAO
    TANG		BIT 	P3.2
    GIAM		BIT	P3.3
    START		BIT	P3.4
    ;PHAN KHAI BAO BIEN NGO RA
    DATA_LED1 	EQU	P2
    DATA_LED2	EQU	P1
    DENBAO		BIT	P3.5
    ;PHAN KHAI BAO O NHO SU DUNG TRONG CHUONG TRINH
    SODEM		EQU	30H
    DEM_TG		EQU	31H
    TT_GIAM		BIT	7FH
    ORG	0000H
    	LJMP SETUP
    ORG	000BH
    	LJMP NGAT_TIMER_0	;NGAT DE GIAM SO DEM
    ORG	0030H
    SETUP:
    	SETB EA		;CHO PHEP NGAT TOAN CUC
    	SETB ET0	;CHO PHEP NGAT TIMER0
    	MOV TH0,#HIGH(-50000)
    	MOV TL0,#LOW(-50000)
    	SETB TR0
    	SETB DENBAO	;TAT DEN BAO HIEU
    	MOV SODEM,#90
    	MOV DEM_TG,#0
    	CLR TT_GIAM	;MAC DINH LA CHUA CHO GIAM
    	MOV DPTR,#TB_LED
    MAIN:
    	LCALL HIENTHI
    	JB TANG,KTGIAM
    	JNB TANG,$
    	INC SODEM
    	MOV A,SODEM
    	CJNE A,#100,THOATTANG
    	MOV SODEM,#99
    THOATTANG:
    	JMP MAIN
    KTGIAM:
    	JB GIAM,KTSTART
    	JNB GIAM,$
    	DEC SODEM
    	MOV A,SODEM
    	CJNE A,#-1,THOATGIAM
    	MOV SODEM,#0
    THOATGIAM:
    	JMP MAIN
    KTSTART:
    	JB START,MAIN
    	JNB START,$
    	SETB TT_GIAM
    	JMP MAIN
    NGAT_TIMER_0:
    	CLR TR0
    	MOV TH0,#HIGH(-50000)
    	MOV TL0,#LOW(-50000)
    	SETB TR0
    	PUSH ACC
    	INC DEM_TG
    	MOV A,DEM_TG
    	CJNE A,#200,THOATNGAT
    	MOV DEM_TG,#0
    	JNB TT_GIAM,THOATNGAT
    	MOV A,SODEM
    	CJNE A,#0,TIEPTUC
    	CLR DENBAO
    	JMP THOATNGAT
    TIEPTUC:
    	DEC SODEM
    THOATNGAT:
    	POP ACC
    	RETI
    HIENTHI:
    	MOV A,SODEM
    	MOV B,#10
    	DIV AB
    	MOVC A,@A+DPTR
    	MOV DATA_LED1,A
    	MOV A,B
    	MOVC A,@A+DPTR
    	MOV DATA_LED2,A
    	RET
    TB_LED:
    	DB 01000000B	;0
    	DB 01111001B	;1
    	DB 00100100B	;2
    	DB 00110000B	;3
    	DB 00011001B	;4
    	DB 00010010B	;5
    	DB 00000010B	;6
    	DB 01011000B	;7
    	DB 00000000B	;8
    	DB 00010000B	;9
    END
    Chúc bạn thành công.
    Công ty TNHH Tự Động Hóa Đạt Lân
    32/36, Ông Ích Khiêm, F14, Q11
    ĐT: 08.3974 7308 - 0937.197.001
    email:
    Webite:

    Comment


    • #3
      thanks anh rất nhiều code hoạt động rất tốt và giải thích rất cặn kẽ

      Comment


      • #4
        tuyệt vời.., nhưng nếu sau khi đếm lùi xong mình muốn nó lập lại vài ba lần hay lập lại mãi mãi với số đã nhập thì phải sủa code như thế nào hả anh? thank !

        Comment


        • #5
          Nguyên văn bởi danh Xem bài viết
          tuyệt vời.., nhưng nếu sau khi đếm lùi xong mình muốn nó lập lại vài ba lần hay lập lại mãi mãi với số đã nhập thì phải sủa code như thế nào hả anh? thank !
          Hehe, bạn quả là người biết chịu khó suy nghĩ để phát triển vấn đề đấy, vậy mình gợi ý cho bạn viết thử nhé, nếu khó khăn thì mọi người sẽ hỗ trợ bạn.
          - Trong trường hợp bạn muốn lặp lại vài ba lần thì bạn dùng thêm một biến đếm lần lặp nữa, mỗi lần số đếm giảm về 0 thì bạn tăng số đếm lần lặp đó lên, kiểm tra với số lần lặp mình cài đặt, nếu đã bằng thì thôi không lặp nữa.
          - Trong trường hợp bạn muốn lặp mãi mãi thì chỉ việc khi phím START được nhấn lưu số đếm vào một biến tạm nào đó, khi số đếm về 0 thì bạn nạp lại giá trị cho số đếm từ biến tạm này, thế là xong.
          Chúc bạn thành công.
          Công ty TNHH Tự Động Hóa Đạt Lân
          32/36, Ông Ích Khiêm, F14, Q11
          ĐT: 08.3974 7308 - 0937.197.001
          email:
          Webite:

          Comment


          • #6
            Nguyên văn bởi vothanhlong Xem bài viết
            Hehe, bạn quả là người biết chịu khó suy nghĩ để phát triển vấn đề đấy, vậy mình gợi ý cho bạn viết thử nhé, nếu khó khăn thì mọi người sẽ hỗ trợ bạn.
            - Trong trường hợp bạn muốn lặp lại vài ba lần thì bạn dùng thêm một biến đếm lần lặp nữa, mỗi lần số đếm giảm về 0 thì bạn tăng số đếm lần lặp đó lên, kiểm tra với số lần lặp mình cài đặt, nếu đã bằng thì thôi không lặp nữa.
            - Trong trường hợp bạn muốn lặp mãi mãi thì chỉ việc khi phím START được nhấn lưu số đếm vào một biến tạm nào đó, khi số đếm về 0 thì bạn nạp lại giá trị cho số đếm từ biến tạm này, thế là xong.
            Chúc bạn thành công.
            cảm ơn anh đã gợi ý, e hiểu ý của a nhưng viết code e rất yếu, a cho e 1 đoạn code mẫu ( làm sườn thôi) để tham khảo được không a? giúp e thêm chút nữa nha a.

            Comment

            Về tác giả

            Collapse

            nhok_oc_tiu Tìm hiểu thêm về nhok_oc_tiu

            Bài viết mới nhất

            Collapse

            Đang tải...
            X