Mình đang làm một đồ án về mạch đồng hồ số với led 7 đoạn mình chỉ viết được chương trình đếm giờ phút giây và mô phỏng chạy trên protues rồi nhưng bị gặp khó khăn về mấy cái nút nhấn để tăng phút và giờ bạn nào giỏi về 89C51 giúp mình với hoặc ai có đoạn code nào thì cho mình xin nhé code viết bằng Assembler ấy .
Nếu ai có thì gửi cho mình theo địa chỉ nay nhé : tuanvupro1989@gmail.com
Mong các huynh đệ trong giang hồ ra tay tương trợ .
Mình vẽ trên orcad có các linh kiện như sau:
Port 0 giao tiếp với IC giải mã 74247
Led 7 đoạn là loại katot
Transistor là loại npn
Nút nhấn port 3.0 tang giờ
Nút nhấn port 3,1 tăng phút
Nút nhấn port 3.2 vào chương trình tăng thời gian
Nút nhấn port 3.3 thoát chương trình tăng thời gian
Nút reset thiết lập lại trang thái ban đầu
Chương trình đếm giờ phút giây chưa có nút nhấn để ngắt:
;O NHO R5 CHUA GIO
;O NHO R6 CHUA PHUT
;O NHO R7 CHUA GIAY
;40 = DON VI GIAY
;41 = CHUC GIAY
;42 = DON VI PHUT
;43 = CHUC PHUT
;44 = DON VI GIO
;45 = CHUC GIO
$MOD51
ORG 0000H
MAIN:
MOV R5,#0
MOV R6,#0
MOV R7,#0
HIENTHILAI:
CALL DOIBCD
MOV R0,#50
LAP:
CALL HIENTHI
DJNZ R0,LAP
INC R7
CJNE R7,#60,HIENTHILAI
MOV R7,#0
INC R6
CJNE R6,#60,HIENTHILAI
MOV R6,#0
INC R5
CJNE R5,#24,HIENTHILAI
JMP MAIN
DOIBCD:
MOV A,R5
MOV B,#10
DIV AB
MOV 44H,B
MOV 45H,A
MOV A,R6
MOV B,#10
DIV AB
MOV 42H,B
MOV 43H,A
MOV A,R7
MOV B,#10
DIV AB
MOV 40H,B
MOV 41H,A
RET
HIENTHI:
MOV P1,#01H
MOV P0,40H
CALL DELAY
MOV P1,#02H
MOV P0,41H
CALL DELAY
MOV P1,#04H
MOV P0,42H
CALL DELAY
MOV P1,#08H
MOV P0,43H
CALL DELAY
MOV P1,#10H
MOV P0,44H
CALL DELAY
MOV P1,#20H
MOV P0,45H
CALL DELAY
RET
DELAY:
MOV TMOD,01H
MOV TH0,#HIGH(-50000)
MOV TL0,#LOW(-50000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
END
Chân thành cám ơn các bạn
Nếu ai có thì gửi cho mình theo địa chỉ nay nhé : tuanvupro1989@gmail.com
Mong các huynh đệ trong giang hồ ra tay tương trợ .
Mình vẽ trên orcad có các linh kiện như sau:
Port 0 giao tiếp với IC giải mã 74247
Led 7 đoạn là loại katot
Transistor là loại npn
Nút nhấn port 3.0 tang giờ
Nút nhấn port 3,1 tăng phút
Nút nhấn port 3.2 vào chương trình tăng thời gian
Nút nhấn port 3.3 thoát chương trình tăng thời gian
Nút reset thiết lập lại trang thái ban đầu
Chương trình đếm giờ phút giây chưa có nút nhấn để ngắt:
;O NHO R5 CHUA GIO
;O NHO R6 CHUA PHUT
;O NHO R7 CHUA GIAY
;40 = DON VI GIAY
;41 = CHUC GIAY
;42 = DON VI PHUT
;43 = CHUC PHUT
;44 = DON VI GIO
;45 = CHUC GIO
$MOD51
ORG 0000H
MAIN:
MOV R5,#0
MOV R6,#0
MOV R7,#0
HIENTHILAI:
CALL DOIBCD
MOV R0,#50
LAP:
CALL HIENTHI
DJNZ R0,LAP
INC R7
CJNE R7,#60,HIENTHILAI
MOV R7,#0
INC R6
CJNE R6,#60,HIENTHILAI
MOV R6,#0
INC R5
CJNE R5,#24,HIENTHILAI
JMP MAIN
DOIBCD:
MOV A,R5
MOV B,#10
DIV AB
MOV 44H,B
MOV 45H,A
MOV A,R6
MOV B,#10
DIV AB
MOV 42H,B
MOV 43H,A
MOV A,R7
MOV B,#10
DIV AB
MOV 40H,B
MOV 41H,A
RET
HIENTHI:
MOV P1,#01H
MOV P0,40H
CALL DELAY
MOV P1,#02H
MOV P0,41H
CALL DELAY
MOV P1,#04H
MOV P0,42H
CALL DELAY
MOV P1,#08H
MOV P0,43H
CALL DELAY
MOV P1,#10H
MOV P0,44H
CALL DELAY
MOV P1,#20H
MOV P0,45H
CALL DELAY
RET
DELAY:
MOV TMOD,01H
MOV TH0,#HIGH(-50000)
MOV TL0,#LOW(-50000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
END
Chân thành cám ơn các bạn
Comment