51单片机数码管中断倒计时报警
ORG 0000H
LJMP MAIN
ORG 0003H?? ?;中斷入口
LJMP EXT0
;-----------------------------------------------
MAIN:
SETB IT0;?? ??? ??? ?? 外部中斷0觸發方式?? ? 。P3.2接一個按鍵接地控制中斷啟動。
SETB EA;?? ??? ??? ??? ??? 總中斷允許
SETB EX0;
MOV R2,#0FEH; 11111110
MOV P0,R2
SETB P2.7; 段選置1
CLR P2.7; 段選置0
START:
MOV R0,#0;?? ??? ? 設計數指針初值
MOV DPTR,#TAB;?? ??? 把TAB表頭地址送給數據指針
LOOP:MOV A,R0?? ??? ?;把計數指針送給A
MOVC A,@A+DPTR?? ??? ? ;
MOV P0,A?? ??? ??? ?? ;把碼值送給PO口
LCALL DELAY1000MS;
?? ??? INC R0;?? ??? ?增量指令,計數指針加一
CJNE R0,#10,LOOP;?? ?減一非零,則繼續跳到LOOP處
JMP START
SETB P2.6;
CLR P2.6;
;-------------------------------------------------------------------
EXT0: SETB RS1;?? ??? ??? ? ?? ?????? 改變寄存器組
????? PUSH ACC;?? ??? ??? ??? ??? ?? 將A當前值壓棧
?? ?? MOV R0,#2;?? ??? ??? ??? ?? 置中斷時等待次數
?? ?? MOV A,#6FH;?? ??? ??? ??? ?? 置中斷時數碼管顯示數字
?? ? CLR P2.3;?? ??? ??? ??? ??? ?? 中斷響蜂鳴器
?? ?
FLASH:MOV P0,A;?? ??? ??? ??? ??? ?? 數碼管數據送P0口
????? LCALL DELAY1000MS;?? ??? ?? 延時。
?? ?? DJNZ R0,FLASH;?? ??? ??? ?? 跳出返回
??? SETB P2.3;?? ??? ??? ??? ??? ?? 關蜂鳴器
?? ?? CLR RS1;?? ??? ??? ??? ??? ??? ?回到第0寄存器組
?? ?? POP ACC;?? ??? ??? ??? ??? ??? ?彈出中斷前亮燈數據
?? ?? RETI;?? ??? ??? ??? ??? ??? ??? 中斷返回
;-----------------------------------------------------------------
TAB: DB 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;?? ??? ?共陰數碼管表
?? ??? ??? ?
DELAY1000MS: MOV????? R7,#10??? ;延時1S子程序
DL1:?? MOV????? R6,#200
DL2:?? MOV????? R5,#248
?????? DJNZ???? R5,$
?????? DJNZ???? R6,DL2
?????? DJNZ???? R7,DL1
??????? RET
END
總結
以上是生活随笔為你收集整理的51单片机数码管中断倒计时报警的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一道经典的C++题,关于分钱的问题,适合
- 下一篇: 密码学仿射密码