新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機時鐘匯編程序

51單片機時鐘匯編程序

作者: 時間:2016-12-01 來源:網絡 收藏
終于到了……感動ing...自己也可以DIY一個電子時鐘了。

電路板和原件要另外找,南寧市的電子元件稀少得真難找啊,弄好后焊接,看來要找個好點的焊臺,這樣焊接電路時比較方便。

本文引用地址:http://m.butianyuan.cn/article/201612/324116.htm

電路如下:

;簡單的89C2051時鐘程序
;顯示方式為.12:34之12小時制
;P1口輸出段數據,P3口輸出位數據
;P1.7為秒點,P3.7為PM輸出
;P3.4校時,P3.5校分
;晶振12MHz


flash equ 31h
sec equ 32h ;定義秒存儲位置
min equ 33h ;定義分存儲位置
hour equ 34h
hourk bit p3.4 ;調時按鈕
mink bit p3.5 ;調分按鈕
pm bit p3.7 ;PM輸出端
org 0000h
ajmp start
org 000bh
ajmp int_t0
org 0100h
start: mov a,#00h ;清0
mov 30h,a
movflash,a
mov sec,a ;秒清0
mov min,#00 ;分清0
mov hour,#12
mov sp,#60h ;重設堆棧指針
setb pm ;PM清0
mov p1,#0ffh
mov p3,#0ffh
mov tmod,#01h ;設定定時器0工作于方式1
mov tl0,#0b0h ;設定定時初始值50ms
mov th0,#3ch
setb ea ;啟動定時
setb et0
setb tr0
key: lcall disp ;按鍵處理子程序
jb hourk,mmm
hhh: lcall disp
jnb hourk,hhh
inc hour ;時加1
mov a,hour
cjne a,#12,ppp
cpl pm ;PM取反
ppp: cjne a,#13,key
mov hour,#01h ;12小時到,清零.
mmm: jb mink,key
nnn: lcall disp
jnb mink,nnn
inc min
mov a,min
cjne a,#60,key
mov min,#00h ;一小時時間到
ajmp key
int_t0:push acc ;保護現(xiàn)場
mov tl0,#0b0h ;賦定時初值
mov th0,#3ch
inc 30h ;20H地址加1
mov a,30h
cjne a,#10,reti1
mov 30h,#00h ;半秒鐘時間到
inc flash ;半秒加1
mov a,flash
cjne a,#2,reti1
movflash,#00h
inc sec ;秒加1
mov a,sec
cjne a,#60,reti1
mov sec,#00h ;一分鐘時間到
inc min ;分加1
mov a,min
cjne a,#60,reti1
mov min,#00h ;一小時時間到
inc hour ;時加1
mov a,hour
cjne a,#12,cont
cpl pm ;PM取反
cont: cjne a,#13,reti1
mov hour,#01h ;12小時到,清零.
reti1: pop acc ;恢復現(xiàn)場
reti ;中斷返回
disp: mov a,#10
mov b,a
mov a,hour
div ab
cjne a,#01,zero
jmp normal
zero: mov a,#10 ;消隱無效零
normal:mov dptr,#tab
movc a,@a+dptr
mov p1,a
clr p3.0
lcall dely
setb p3.0
mov a,b
mov dptr,#tab
movc a,@a+dptr
mov p1,a
clr p3.1
lcall dely
setb p3.1
mov a,#10
mov b,a
mov a,min
div ab
mov dptr,#tab
movc a,@a+dptr
mov p1,a
clr p3.3
lcall dely
setb p3.3
mov a,b
mov dptr,#tab
movc a,@a+dptr
mov p1,a
clr p3.2
lcall dely
setb p3.2
mov a,flash
cjne a,#00,light
setb p1.7
lcall dely
jmp over
light: clr p1.7
lcall dely
over: ret ;子程序返回
tab: db 88h,0afh,91h,0a1h,0a6h,0e0h,0c0h,0adh,80h,0a0h,0ffh;共陽段碼表0123456789不亮
dely: mov r6,#10
d1: mov r7,#20
d2: djnz r7,d2
djnz r6,d1
ret

end



評論


技術專區(qū)

關閉