顯示用LED顯示
0.jpg (51.19 KB, 下載次數: 70)
下載附件
2017-12-29 02:47 上傳
0.png (7.9 KB, 下載次數: 55)
下載附件
2017-12-29 02:48 上傳
單片機源程序如下:
- ;;;;;;;;;;;;;;;電子時鐘;;;;;;;;;;;;;;;
- ;;;定時計數器方式2,每次定時100us;;;;;
- ;;;;;;;;;;;;;;;晶振:6MHZ;;;;;;;;;;;;;
- ORG 0000H
- AJMP MAIN
- ORG 000BH //T0中斷入口地址
- LJMP IT0P
- ORG 0100H
- MAIN: MOV SP,#60H
- MOV TMOD,#02H //設置T0方式為方式2
- MOV TL0,#0CEH //給T0裝入計數初值
- MOV TH0,#0CEH
- SETB ET0 //開啟中斷
- SETB TR0
- SETB PT0
- SETB EA
- MOV R7,#0FAH //1s循環次數
- MOV R6,#28H
- MOV 54H,#03H //時個位存儲單元
- MOV 55H,#02H //時十位存儲單元
- MOV 52H,#09H //分個位存儲單元
- MOV 53H,#05H //分十位存儲單元
- MOV 50H,#00H //秒個位存儲單元
- MOV 51H,#03H //秒十位存儲單元
- HERE: LCALL DISP //調用顯示子程序
- JNB P3.0,MIN
- JNB P3.1,HOUR
- SJMP HERE
- MIN: LCALL SETM
- SJMP HERE
- HOUR: LCALL KEY2
- SJMP HERE
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- IT0P: CLR EA
- CLR TR0 //保護現場
- PUSH Acc
- PUSH PSW
- SETB TR0
- DJNZ R7,RETURN //判斷定時時間是否到25ms
- MOV R7,#0FAH //重裝定時常數
- DJNZ R6,RETURN //判斷是否到1s,不到1s繼續計時
- MOV R6,#028H //重裝定時常數
- MOV A,50H //將秒的個位與10相比較,到10則將其清零,之后加1并將其放在50H存儲
- INC A
- MOV 50H,A
- CJNE A,#0AH,RETURN
- CLR A
- MOV 50H,A
- MOV A,51H //將秒的十位與6相比較,到6則將其清零,之后加1并將其放在51H存儲
- INC A
- MOV 51H,A
- CJNE A,#06H,RETURN
- CLR A
- MOV 51H,A
- MOV A,52H //將分的個位與10相比較,到10則將其清零,之后加1并將其放在52H存儲
- INC A
- MOV 52H,A
- CJNE A,#0AH,RETURN
- CLR A
- MOV 52H,A
- MOV A,53H //將分的十位與6相比較,到6則將其清零,之后加1并將其放在53H存儲
- INC A
- MOV 53H,A
- CJNE A,#06H,RETURN
- CLR A
- MOV 53H,A
- MOV A,54H //將時的個位與4相比較,不到4則跳出,到4則進行時十位的比較
- INC A
- CJNE A,#04H,RETURN
- MOV A,55H //若時個位大于等于4,十位小于2時則跳轉
- CJNE A,#02H,LOOP
- CLR A //24時到時將其個位、十位清零
- MOV 54H,A
- MOV 55H,A
- LJMP RETURN
- LOOP: MOV A,54H //判斷時個位是否到10,到10則進位(時十位加1),不到10則跳出
- CJNE A,#0AH,RETURN
- MOV A,55H
- INC A
- MOV 55H,A
- RETURN: CLR EA //恢復現場
- POP PSW
- POP Acc
- SETB EA
- RETI
- ;;;;;;;;;;;;;;;;;;;;;;調時、調分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- SETM: CLR TR0
- LCALL DISP
- LCALL DISP
- JB P3.0,OUT
- STM1: LCALL DISP
- LCALL DISP
- JNB P3.0,STM1
- MOV A,54H //將時的個位與4相比較,不到4則跳出,到4則進行時十位的比較
- ADD A,#01H
- MOV 54H,A
- CJNE A,#04H,HX
- HX: JC OUT
- MOV A,55H //若時個位大于等于4,十位小于2時則跳轉
- CJNE A,#02H,LOOP0
- CLR A //24時到時將其個位、十位清零
- MOV 54H,A
- MOV 55H,A
- LJMP OUT
- LOOP0:MOV A,54H //判斷時個位是否到10,到10則進位(時十位加1),不到10則跳出
- CJNE A,#0AH,OUT
- MOV 54H,#00H
- MOV A,55H
- ADD A,#01H
- MOV 55H,A
- OUT: SETB TR0
- RET
- KEY2:
- OUT1: RET
- ;;;;;;;;;;;;;;;;;;;;;;;顯示子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- DISP: MOV R0,#01H //位選信號,選中最右邊八段數碼管
- MOV R1,#50H
- CIR: MOV A,R0
- MOV P1,A //把01H送給P1口控制最右端的八段數碼管
- MOV DPTR,#TAB //表首值送給DPTR
- MOV A,@R1
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
(電子時鐘).rar
(51.2 KB, 下載次數: 25)
2017-12-28 22:46 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|