|
基于51單片機(jī)的時(shí)鐘仿真及程序,實(shí)現(xiàn)校時(shí)功能
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機(jī)匯編語(yǔ)言源程序如下:
- ORG 0000H
- LJMP START
- ORG 000BH ;定時(shí)器/計(jì)數(shù)器T0中斷程序入口
- LJMP INTT0
- ////////////////////////////////////////////////////////
- START: MOV R0,#70H
- MOV R7,#0CH
- INIT: MOV @R0,#00H
- INC R0
- DJNZ R7,INIT ;清空70H-7CH中的內(nèi)容,用于存儲(chǔ)時(shí)間的各位數(shù)
- MOV 72H,#10
- MOV 75H,#10 ;數(shù)碼管顯示中間的橫杠,取TAB中的第11個(gè)代碼
- MOV TMOD,#01H ;定時(shí)器方式
- MOV TL0,#0B0H ;初值設(shè)定
- MOV TH0,#03CH
- SETB EA ;開(kāi)中斷,啟動(dòng)
- SETB ET0
- SETB TR0
- START1: LCALL SCAN
- LCALL KEYSCAN
- SJMP START1
- DL1MS: MOV R6,#14H ;延時(shí)1MS子程序
- DL1: MOV R7,#19H
- DL2: DJNZ R7,DL2
- DJNZ R6,DL1
- RET
- DL20MS: MOV R1,#20
- DL3: LCALL DL1MS ;延時(shí)20MS子程序
- DL4: DJNZ R1,DL2
- RET
- //////////////////////////////////////////////////////
- ;數(shù)碼管顯示程序
- SCAN: MOV A,78H ;取秒的個(gè)位給70H,十位給71H
- MOV B,#0AH
- DIV AB
- MOV 71H,A
- MOV 70H,B
- MOV A,79H ;取分的個(gè)位給73H,十位給74H
- MOV B,#0AH
- DIV AB
- MOV 74H,A
- MOV 73H,B
- MOV A,7AH ;取時(shí)的個(gè)位給76H,十位給77H
- MOV B,#0AH
- DIV AB
- MOV 77H,A
- MOV 76H,B
- MOV R1,#70H ;從70H-77H循環(huán)掃描顯示
- MOV R5,#80H
- MOV R3,#08H
- SCAN1: MOV A,R5
- MOV P2,A ;位碼賦給P2
- MOV A,@R1 ;從70H儲(chǔ)存的秒的個(gè)位開(kāi)始掃描,通過(guò)查表將段碼賦給P0
- MOV DPTR,#TAB
- MOVC A,@A+DPTR
- MOV P0,A
- MOV A,R5
- LCALL DL1MS
- INC R1
- MOV A,R5
- RR A ;位碼右移一位
- MOV R5,A
- DJNZ R3,SCAN1 ;8次一個(gè)循環(huán)
- MOV P2,#00H
- MOV P0,#0FFH
- RET
- TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH
- ;“0~9”,“-”的共陽(yáng)極字段碼
- INTT0: PUSH ACC ;定時(shí)器/計(jì)數(shù)器T0中斷服務(wù)程序
- PUSH PSW
- CLR ET0
- CLR TR0
- MOV TL0,#0B0H ;重裝初值
- MOV TH0,#03CH
- SETB TR0
- INC 7BH ;50ms緩沖單元
- MOV A,7BH
- CJNE A,#14H,OUTT0 ;計(jì)滿20次50ms單元清零,秒單元加一
- MOV 7BH,#00
- INC 78H ;
- MOV A,78H ;78H存秒單元
- CJNE A,#3CH,OUTT0 ;秒計(jì)滿60次,分單元加一,秒單元清零
- MOV 78H,#00
- INC 79H ;
- MOV A,79H ;79H存分單元
- CJNE A,#3CH,OUTT0 ;分計(jì)滿60次,時(shí)單元加一,分單元清零
- MOV 79H,#00
- INC 7AH ;7AH存時(shí)單元
- MOV A,7AH
- CJNE A,#18H,OUTT0 ;時(shí)單元滿24清零
- MOV 7AH,#00
- OUTT0:
- SETB ET0
- pop psw
- pop acc
- RETI
- //////////////////////////////////////////////////////////
- ;按鍵處理程序
- KEYSCAN:JNB P1.0,KEYSCAN0
- JNB P1.1,KEYSCAN1
- JNB P1.2,KEYSCAN2
- KEYOUT: RET
- KEYSCAN0: LCALL DL20MS ;防按鍵抖動(dòng)程序
- JB P1.0,KEYOUT
- WAIT0: JNB P1.0,WAIT0 ;k1是高電平則順序執(zhí)行,每按一次循環(huán)一下7CH計(jì)數(shù)加一
- INC 7CH
- MOV A,7CH
- CLR TR0
- CLR ET0
- CJNE A,#03H,KEYOUT ;按三次則繼續(xù)計(jì)時(shí),按不到三次則跳轉(zhuǎn)
- MOV 7CH,#00
- SETB TR0
- SETB ET0
- SJMP KEYOUT
- KEYSCAN1: LCALL DL20MS
- JB P1.1,KEYOUT
- WAIT1: JNB P1.1,WAIT1 ;按k2值加一
- MOV A,7CH
- CJNE A,#02H,KSCAN11 ;判斷k1,按一次則跳轉(zhuǎn)到時(shí)值調(diào)整,按兩次則順序執(zhí)行分值調(diào)整
- INC 79H ;分值加一
- MOV A,79H
- CJNE A,#3CH,KEYOUT ;若分值到60,則清零
- MOV 79H,#00
- SJMP KEYOUT
- KSCAN11: INC 7AH ;小時(shí)加一
- MOV A,7AH
- CJNE A,#18H,KEYOUT ;若小時(shí)滿24,則清零
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
時(shí)鐘程序.zip
(50.17 KB, 下載次數(shù): 42)
2018-3-25 15:46 上傳
點(diǎn)擊文件名下載附件
7黑幣
|
評(píng)分
-
查看全部評(píng)分
|