51单片机实验 电子时钟程序
ljmp Start Hour equ 40h Minute equ 41h Second equ 42h C100us equ 43h Tick equ 10000 T100us equ 256-50 org 000bh T0Int: push PSW push ACC mov a, C100us+1 jnz Goon dec C100us Goon: dec C100us+1 mov a, C100us orl a, C100us+1 jnz Exit mov C100us, #high(Tick) mov C100us+1, #low(Tick) inc Second mov a, Second cjne a, #60, Exit mov Second, #0 inc Minute mov a, Minute cjne a, #60, Exit mov Minute, #0 inc Hour mov a, Hour cjne a, #24, Exit mov Hour, #0 Exit: pop ACC pop PSW reti OUTBIT equ 0e101h CLK164 equ 0e102h DAT164 equ 0e102h IN equ 0e103h LEDBuf equ 60h LEDMAP: db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h Delay: mov r7, #0 DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop ret DisplayLED: mov r0, #LEDBuf mov r1, #6 mov r2, #00100000b Loop: mov dptr, #OUTBIT mov a, #0 movx @dptr, a mov a, @r0 mov B, #8 DLP: rlc a mov r3, a mov acc.0, c mov dptr, #DAT164 anl a,#0fdh movx @dptr, a mov dptr, #CLK164 orl a,#02h movx @dptr, a anl a,#0fdh movx @dptr, a mov a, r3 djnz B, DLP mov dptr, #OUTBIT mov a, r2 movx @dptr, a mov r6, #1 call Delay mov a, r2 rr a mov r2, a inc r0 djnz r1, Loop ret ToLED: mov dptr, #LEDMap movc a, @a+dptr ret Start: mov dptr,#0e100h mov a,#03h movx @dptr,a mov TMOD, #02h mov TH0, #T100us mov TL0, #T100us mov IE, #10000010b mov Hour, #0 mov Minute, #0 mov Second, #0 mov C100us, #high(Tick)
mov C100us+1, #low(Tick) setb TR0 MLoop: mov a, Hour mov b, #10 div ab call ToLED mov LEDBuf, a mov a, b call ToLED orl a, #80h mov LEDBuf+1, a mov a, Minute mov b, #10 div ab call ToLED mov LEDBuf+2, a mov a, b call oLED orl a, #80h mov LEDBuf+3, a mov a, Second mov b, #10 div ab call ToLED mov LEDBuf+4, a mov a, b call ToLED mov LEDBuf+5, a call DisplayLED ljmp MLoop end
你可能喜欢
- 电子钟单片机
- 51单片机实验报告
- 51单片机的电子时钟设计
- 51单片机中断实验
- 电子时钟单片机


