專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

單片機(jī)電子鐘設(shè)計(jì)

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2008年05月23日   【字體:

這里給大家介紹一個(gè)51單片機(jī)電子鐘匯編程序設(shè)計(jì)方法:

org 00h
a_bit equ 30h         ;秒寄存器
b_bit equ 31h         ;10秒寄存器
c_bit equ 32h         ;分寄存器
d_bit equ 33h         ;10分寄存器
e_bit equ 34h         ;小時(shí)寄存器
f_bit equ 35h         ;10小時(shí)集存器

 org 0000h
 ajmp star
 org 0030h

star:
 mov a,#00h  ;把各個(gè)位全部清0
 mov a_bit,a
 mov b_bit,a
 mov c_bit,a
 mov d_bit,a
 mov e_bit,a
 mov f_bit,a
stlop:  acall display  ;51單片機(jī)電子鐘程序的計(jì)算部分

       inc a_bit       ;秒位加1
        mov a,a_bit    ;送a
        cjne a,#10,stlop;如果秒到10那么轉(zhuǎn)到10秒處理
        mov a_bit,#00h  ;秒位清0
        inc b_bit       ;10秒位加1
        mov a,b_bit     ;送a
        cjne a,#6,stlop ;如果10秒到了6那么到分處理
        mov b_bit,#00h  ; 10秒位清0
        inc c_bit
        mov a,c_bit
        cjne a,#10,stlop
        mov c_bit,#00h
        inc d_bit
        mov a,d_bit
        cjne a,#6,stlop
        mov d_bit,#00h
        inc e_bit
        mov a,e_bit
        cjne a,#10,stlop
        mov e_bit,#00h
        inc f_bit
        mov a,f_bit
        cjne a,#3,stlop
        mov f_bit,#00h
 ajmp stlop  ;重新開始計(jì)算

display: ;顯示子程序-51單片機(jī)電子鐘直接顯示在七段數(shù)碼管上
         mov dptr,#numtab ;指定查表啟始地址
         mov r0,#4
dpl1:    mov r1,#250     ;顯示1000次
dplop:   mov a,a_bit     ;取秒位的值
         MOVC A,@A+DPTR  ;查秒位數(shù)的7段代碼
         mov p0,a        ;送出到P0口顯示
         clr p2.6        ;開個(gè)位顯示
         acall d1ms      ;顯示1ms
         setb p2.6     ;關(guān)閉顯示

         mov a,b_bit    ;取10秒位的值
         MOVC A,@A+DPTR ;查10秒位的7段代碼
         mov p0,a      ;送出10秒位到P0口顯示

         clr p2.5      ;開10秒位顯示
         acall d1ms    ;顯示1ms
         setb p2.5

         mov a,c_bit   ;取分位
         MOVC A,@A+DPTR ;

         mov p0,a ;
         clr p2.4 ;
         acall d1ms ;

         setb p2.4

         mov a,d_bit   ;取10分位
         MOVC A,@A+DPTR ;

         mov p0,a ;

         clr p2.3 ;

         acall d1ms ;        

 setb p2.3

         mov a,e_bit   ;取小時(shí)位
         MOVC A,@A+DPTR ;
         mov p0,a ;
         clr p2.2 ;
         acall d1ms ;

         setb p2.2

         mov a,f_bit ;取10小時(shí)位
         MOVC A,@A+DPTR ;
         mov p0,a ;
         clr p2.1 ;
         acall d1ms ;
         setb p2.1

         djnz r1,dplop ;100次沒完循環(huán)
         djnz r0,dpl1 ;4個(gè)100次沒完循環(huán)
         ret
D1MS: MOV R7,#20 ;1MS延時(shí)(按12MHZ算)
      DJNZ R7,$
      RET
;七段數(shù)碼管各劃的數(shù)字排列表-http://www.torrancerestoration.com/  提供
numtab: db 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h
;0 1 2 3 4 5 6 7 8 9
end
 

關(guān)閉窗口