注册 登录
编程论坛 单片机编程

急需电子时钟调时的汇编程序

飞越009 发布于 2010-10-16 22:14, 873 次点击
我以编出电子时钟的运行程序(如下),可是不会写调时间的程序,麻烦各位帮帮忙。。我把我写的时间运行程序和原理图发在这里。
        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

只有本站会员才能查看附件,请 登录

0 回复
1