代碼如下:
ORG 0000H
SJMP MAIN
ORG 000BH
LJMP T0_ISR
ORG 0030H
MAIN: MOV P0,#3FH ; 初始化賦值
MOV P1,#0FFH
MOV P2,#3FH
MOV R0,#00H
MOV R1,#24
MOV DPTR,#TAB
KEY: JB P3.0,$ ; 判斷啟動鍵是否按下
ACALL DELAY30MS
JNB P3.0,$
ACALL START
SJMP KEY ;
START: MOV TMOD,#01H ; 啟動程式
MOV TH0,#0D8H
MOV TL0,#0EFH
SETB ET0
SETB EA
SETB TR0
STOP: JB P3.2,ZTJX ; 判斷復位鍵是否按下
ACALL DELAY30MS
JNB P3.2,$
SJMP MAIN ; 復位程式
ZTJX: JB P3.1,XS ; 判斷暫停鍵是否按下
ACALL DELAY30MS
JNB P3.1,$
ZT:CLR TR0 ; K2按下后暫停計數,開關中斷
CLR ET0
CLR EA
JB P3.1,$ ; K2再次按下繼續計時
ACALL DELAY30MS
JNB P3.1,$
JX: SETB ET0 ; 第二次按下暫停鍵后繼續計時
SETB EA
SETB TR0
XS: MOV A,R1 ; 顯示子程式
MOV B ,#10
DIV AB
MOVC A, @A+DPTR
MOV P0,A ; 顯示秒十位
MOV A,B
MOVC A, @A+DPTR
MOV P2,A ; 顯示秒個位
CJNE R0,#100,STOP ; 1s時間到否,未到直接轉數碼管顯示
MOV R0,#00H; 1s時間到,RO重賦初值
MOV A,R1 ; R1減1,不為0轉數碼管顯示,為0則重新開始
CLR C
SUBB A,#1
MOV R1,A
JNC STOP ; 計數未到0繼續判斷暫停鍵和停止鍵
MOV R1,#24 ; 計數到0停止計數并關中斷
CLR ET0
CLR EA
CLR TR0
SJMP SND ; 跳到報警程式
SJMP KEY ; 跳回開始檢測啟動鍵
RET
DEL AY30MS: MOV R6,#150 ; 延時程式子程式
AAA: MOV R7,#100
DJNZ R7,$
DJNZ R6,AAA
RET
T0_ISR:CLR TR0 ; 中斷程式子程式
MOV TH0,#0D8H
MOV TL0,#0EFH
INC R0
SEPB TR0
RETI
SND: CLR P1.0 ; 報警程式子程式(紅色發光二極管亮一下就滅)
MOV R7,#0FFH
DL: MOV R6,#0FFH
DL1: DJNZ R6,DL1
DJNZ R7,DL
SETB P1.0
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/23134.html
標籤:匯編語言
下一篇:python 讀寫共享檔案
