急需电子时钟调时的汇编程序
我以编出电子时钟的运行程序(如下),可是不会写调时间的程序,麻烦各位帮帮忙。。我把我写的时间运行程序和原理图发在这里。BUF_1 EQU 31H
BUF_2 EQU 32H
BUF_3 EQU 33H
BUF_4 EQU 34H
BUF_5 EQU 35H
BUF_6 EQU 36H
org 0000h
ljmp main
org 000bh
ljmp vot0
org 0030h
main: mov sp,#60h
mov TMOD,#01H ;0000 0001
mov TH0,#(65536-10000)/256
mov TL0,#(65536-10000)%256
setb et0
setb ea
setb tr0
mov r1,#BUF_6
mov r2,#11111011b
loop: lcall dis_buf
lcall display
sjmp loop
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dis_buf:
mov dptr,#LED_TAB
mov a,r6
mov b,#10
div ab ;秒钟的个位存于B中,十位存于A中
movc a,@a+dptr
mov BUF_5,a ;秒钟的十位的段码存于BUF_5
mov a,b
movc a,@a+dptr
mov BUF_6,a ;秒钟的个位的段码存于BUF_6
mov a,r5
mov b,#10
div ab
movc a,@a+dptr
mov BUF_3,a ;分钟的十位的段码存于BUF_3
mov a,b
movc a,@a+dptr
mov BUF_4,a ;分钟的个位的段码存于BUF_4
mov a,r4
mov b,#10
div ab
movc a,@a+dptr
mov BUF_1,a ;时钟的个位的段码存于BUF_1
mov a,b
movc a,@a+dptr
mov BUF_2,a ;时钟的个位的段码存于BUF_2
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
display:
jbc F0, display_1
sjmp display_ret
display_1:
orl p1,#0fch ;1111 1100 关显示
mov p2,@r1
mov a,r2
anl p1,a ;0111 1100
rl a
mov r2,a ;下一个位码存于R2
dec r1 ;指向下一个段码地址
cjne r1,#30h,display_ret
mov r1,#BUF_6
mov r2,#11111011b
display_ret:
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
vot0: setb F0
inc r7 ;
cjne r7,#100,vot0_ret
mov r7,#0
inc r6 ;做1s的计数
cjne r6,#60,vot0_ret
mov r6,#0
inc r5 ;做1分钟的计数
cjne r5,#60,vot0_ret
mov r5,#0
inc r4
cjne r4,#24,vot0_ret
mov r4,#0
vot0_ret:
mov TH0,#(65536-10000)/256
mov TL0,#(65536-10000)%256
reti
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LED_TAB:
DB 40H,79H,24H,30H,19H,12H ,02H,78H,00H,10H ;0,1,2,3,4,5,6,7,8,9