|
一個(gè)用51單片機(jī)做的可校準(zhǔn)時(shí)鐘,是用匯編語(yǔ)言寫(xiě)的,下面是仿真原理圖:
0.png (28.29 KB, 下載次數(shù): 55)
下載附件
2016-9-26 18:38 上傳
0.png (64.54 KB, 下載次數(shù): 65)
下載附件
2016-9-26 18:39 上傳
所有資料下載:
可校準(zhǔn)時(shí)鐘.zip
(56.88 KB, 下載次數(shù): 77)
2016-9-26 18:40 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
匯編語(yǔ)言程序
- ORG 0000H
- LJMP MAIN
- ORG 0003H
- LJMP INT0INT0
- ORG 0013H
- LJMP INT1INT1
- ORG 000BH
- LJMP IT0P
- ORG 0040H
- /**************主程序*******************/
- MAIN:MOV P0,#0FFH
- MOV P1,#0FFH
- MOV P2,#0FFH
- MOV 30H,#14H
- MOV 40H,#00H
- MOV 41H,#00H
- MOV 42H,#00H
- MOV SP,#60H
- MOV TCON,#05H
- MOV TMOD,#01H
- MOV IE,#87H
- MOV IP,#01H
- MOV TH0,#3CH
- MOV TL0,#0B0H
- LOOP: LCALL DISPLAYSECOND
- LCALL DISPLAYMINUTE
- LCALL DISPLAYHOUR
- SECOND0:JNB P2.0,SECOND
- MINUTE0:JNB P2.1,MINUTE
- HOUR0: JNB P2.2,HOUR
- CLEAR0: JNB P2.3,CLEAR
- LAST: LJMP LOOP
- /**************秒調(diào)整程序*******************/
- SECOND: LCALL DELAY100MS
- JNB P2.0,HAVES
- LJMP RETURNS
- HAVES: MOV A,#01H
- ADD A,42H
- DA A
- MOV 42H,A
- CJNE A,#60H,RETURNS
- MOV 42H,#00H
- RETURNS:LCALL DISPLAYSECOND
- LJMP MINUTE0
- /**************分調(diào)整程序*******************/
- MINUTE: LCALL DELAY100MS
- JNB P2.1,HAVEM
- LJMP RETURNM
- HAVEM: MOV A,#01H
- ADD A,41H
- DA A
- MOV 41H,A
- CJNE A,#60H,RETURNM
- MOV 41H,#00H
- RETURNM:LCALL DISPLAYMINUTE
- LJMP HOUR0
- /**************時(shí)調(diào)整程序*******************/
- HOUR: LCALL DELAY100MS
- JNB P2.2,HAVEH
- LJMP RETURNH
- HAVEH: MOV A,#01H
- ADD A,40H
- DA A
- MOV 40H,A
- CJNE A,#24H,RETURNH
- MOV 40H,#00H
- RETURNH:LCALL DISPLAYHOUR
- LJMP CLEAR0
- /**************清零程序*******************/
- CLEAR: LCALL DELAY100MS
- JNB P2.3,HAVEC
- LJMP RETURNC
- HAVEC: CLR TR0
- MOV 40H,#00H
- MOV 41H,#00H
- MOV 42H,#00H
- RETURNC:LJMP LAST
- /**************秒數(shù)碼管顯示程序*******************/
- DISPLAYSECOND:
- SECONDGE: SETB P1.0
- MOV A,42H
- ANL A,#0FH
- LCALL SEG
- LCALL DELAY1MS
- CLR P1.0
- SECONDSHI:SETB P1.1
- MOV A,42H
- SWAP A
- ANL A,#0FH
- LCALL SEG
- LCALL DELAY1MS
- CLR P1.1
- RET
- /**************分?jǐn)?shù)碼管顯示程序*******************/
- DISPLAYMINUTE:
- MINUTEGE: SETB P1.2
- MOV A,41H
- ANL A,#0FH
- LCALL SEG
- LCALL DELAY1MS
- CLR P1.2
- MINUTESHI:SETB P1.3
- MOV A,41H
- SWAP A
- ANL A,#0FH
- LCALL SEG
- LCALL DELAY1MS
- CLR P1.3
- RET
- /**************時(shí)數(shù)碼管顯示程序*******************/
- DISPLAYHOUR:
- HOURGE: SETB P1.4
- MOV A,40H
- ANL A,#0FH
- LCALL SEG
- LCALL DELAY1MS
- CLR P1.4
- HOURSHI: SETB P1.5
- MOV A,40H
- SWAP A
- ANL A,#0FH
- LCALL SEG
- LCALL DELAY1MS
- CLR P1.5
- RET
- /**************啟動(dòng)int0中斷服務(wù)程序*******************/
- INT0INT0:CLR EA
- LCALL DELAY10MS
- JNB INT0,HAVEKEY1
- SETB EA
- RETI
- HAVEKEY1:PUSH PSW
- PUSH Acc
- SETB EA
- SETB TR0
- CLR EA
- POP Acc
- POP PSW
- SETB EA
- RETI
- /************暫停int1中斷服務(wù)程序*******************/
- INT1INT1:CLR EA
- LCALL DELAY10MS
- JNB INT1,HAVEKEY2
- SETB EA
- RETI
- HAVEKEY2:PUSH PSW
- PUSH Acc
- SETB EA
- CLR TR0
- CLR EA
- POP Acc
- POP PSW
- SETB EA
- RETI
- /*****************定時(shí)器0中斷服務(wù)程序*****************/
- IT0P:PUSH PSW
- PUSH Acc
- CLR TR0
- MOV TH0,#3CH
- MOV TL0,#0B0H
- DJNZ 30H,RETURN
- MOV 30H,#14H
- MOV A,#01H
- ADD A,42H
- DA A
- MOV 42H,A
- CJNE A,#60H,RETURN
- MOV 42H,#00H
- MOV A,#01H
- ADD A,41H
- DA A
- MOV 41H,A
- CJNE A,#60H,RETURN
- MOV 41H,#00H
- MOV A,#01H
- ADD A,40H
- DA A
- MOV 40H,A
- CJNE A,#24H,RETURN
- MOV 40H,#00H
- RETURN:
- SETB TR0
- POP Acc
- POP PSW
- RETI
- /*************查表子程序程序***************/
- SEG:MOV DPTR,#TAB
- MOVC A,@A+DPTR
- CPL A
- MOV P0,A
- RET
- TAB:
- DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
- /*************1mS延時(shí)子程序*****************/
- DELAY1MS:MOV R7,#04H
- D1: MOV R6,#7DH
- DJNZ R6,$
- DJNZ R7,D1
- RET
- /*************10mS延時(shí)子程序****************/
- DELAY10MS:MOV R7,#28H
- D2: MOV R6,#7DH
- DJNZ R6,$
- DJNZ R7,D2
- RET
- /*************100mS延時(shí)子程序****************/
- DELAY100MS:MOV R7,#02H
- DEL1:MOV R6,#0C8H
- DEL2:MOV R5,#7DH
- DEL3:DJNZ R5,DEL3
- DJNZ R6,DEL2
- DJNZ R7,DEL1
- RET
- END
復(fù)制代碼 |
|