源程序
源程序如下:ORG 0000H節目開始入口
LJMP啟動
ORG 0003H外部中斷0中斷程序入口
雷蒂
ORG 000BH定時器T0中斷程序輸入。
LJMP INTT0跳轉到int來執行。
ORG 0013H;外部中斷1中斷程序入口
雷蒂
ORG 001BH;定時器T1中斷程序輸入。
LJMP int 1
ORG 0023H串行中斷程序入口地址
雷蒂
;-主程序;
啟動:MOV R0,# 70H70到R0,清除70-7FH顯示存儲器。
MOV R7,#0FH
CLEARDISP:MOV @R0,# 00H0存儲在地址為R0 (70H)的存儲器中。
INC R0
DJNZ R7,CLEARDISP
MOV 78H,# 2;默認時間是12:00,鬧鐘是5:00。
MOV 79H,#1
MOV 74H,# 2;防止數碼管通電時顯示00小時。
MOV 75H,#1
MOV 66H,# 1;當中斷退出時間為1達66H時,分鐘和小時計時單位的數據將被移入存儲器標誌。
MOV 68H,# 1;開機默認鬧鐘開啟狀態
MOV 7DH,# 6;鬧鐘是十點。
MOV第七頻道,第三
MOV 69H,#0
MOV 7AH,# 0AH輸入“熄滅”數據
MOV TMOD,# 11H;設T0和T1為16位定時器。
MOV TL0,# 0B0H50毫秒計時初始值(用於T0計時)
MOV TH0,#3CH
SETB EA;完全中斷開啟
SETB ET0;允許T0中斷
SETB TR0;T0定時器開始計數。
MOV R4,# 14H;1秒計時的初始值(50毫秒×20)
START1:LCALL顯示;顯示子程序
LCALL嗶聲;鬧鐘查詢
JNB P1.7,SETTIMEP1.7帶0端口的定時調整程序。
JMP start 1;當P1.7為1時,跳回START1。
;-時間鬧鐘調節系統;
NFLAG:MOV A,68H設置報警開關狀態
CJNE A,#1,BEE68
MOV 68小時,#0
JMP E6
BEE68:MOV 68H,#1
E6:MOV 66H,# 8;當中斷退出時間不為1達66H時,小時和小時計時單位的數據將被移入視頻存儲器標誌。
MOV 72H,7BH
MOV 73H,7CH
MOV 74H,7DH
MOV 75H,7EH
LCALL DDL
LCALL DDL
MOV 72H,68H
MOV 73H,69H
MOV 74H,7AH
MOV 75H,7AH
LCALL DDL
LCALL DDL
MOV 66H,#1
LJMP START1
SETTIME:LCALL DDL
JB P1.7,NFLAG當按下該鍵不到1秒時,設置鬧鐘開關狀態並檢查鬧鐘時間。未關閉時,確保準確,調整超過1秒。
MOV TL1,# 0B0HT1閃爍計時初始值
MOV TH1,#3CH
MOV R2,# 06H進入計時狀態,並設定閃爍計時的初始值。
MOV 66H,# 8;調鬧鐘的時候壹直走,關掉時鐘顯示數據。
SETB et 1;允許T1中斷
SETB tr 1;啟動定時器T1
SET1:LCALL顯示;調用顯示,防止鍵被按下而沒有顯示。
JNB P1.7,set 1;P1.7端口為0,等待按鍵釋放。
MOV R5,# 00H清除設置類型閃爍標誌。
setn 1:INC R5;鬧鐘分鐘調整
設置5:LCALL顯示
JB P1.7,第5套
seetn 1:LCALL DDL;當壹個鍵被按下超過1秒時,它將被連續添加(0.5秒加1)並且少於1秒。
JB P1.7,SET6按鍵釋放查詢,按鍵釋放自動調制
MOV R0,#7CH
LCALL ADD1
MOV A,R3
CLR C
CJNE A,#60H,HHN1
HHN1:JC SEETN1
LCALL CLR0
JMP SEETN1
set 6:INC R5;鬧鐘調整
參見T6:l通話顯示
JB P1.7,參見T6
請參閱TNH1:LCALL DDL
JB P1.7,SETF
MOV R0,#7EH
LCALL ADD1
MOV A,R3
CLR C
CJNE A,#24H,HOUU1
HOUU1:JC SEETNH1
LCALL CLR0
JMP SEETNH1
SETF:來電顯示
JB P1.7,SETF
LCALL DDL
JNB P1.7,襯托;短按該鍵時,長按退出。
CLR ET0
CLR TR0
MOV 70H,# 00H設定時間從00秒開始。
MOV 71H,#00H
INC R5
設置3:LCALL顯示
JB P1.7,套件3
SETMM:LCALL DDL
JB P1.7,套件4
MOV R0 # 77H
LCALL ADD1
MOV A,R3
CLR C
MMH 60H號CJNE A
MMH:JC SETMM
LCALL CLR0
AJMP SETMM
集合4:INC R5
參見4:LCALL顯示
JB P1.7,參見4
SETHH:LCALL DDL
JB P1.7,SETOUT1
MOV R0 # 79H
LCALL ADD1
MOV A,R3
CLR C
CJNE A,#24H,HOUU
HOUU:JC SETHH
LCALL CLR0
AJMP設置HH
SETOUT1:SETB ET0
SETB TR0;開始時間
出發:MOV R5,# 00H清除設置類型閃爍標誌。
CLR tr 1;關閉T1
CLR et 1;關閉T1中斷。
MOV 66H,#1
SETOUT2:LCALL顯示
JNB P1.7,設置2
LJMP START1
;-延時1秒;
快遞單號:MOV 18H,36號
DDL0:MOV 17H,239號
DDL1:LCALL顯示
DJNZ 17H,DDL1
DJNZ 18H,DDL0
浸水使柔軟
;-中斷程序;
INTT0:推送ACC包
推送PSW
CLR ET0
CLR TR0
MOV A,#0B7H
添加壹個,TL0
MOV TL0,A
MOV A,#3CH
ADDC A,TH0
MOV TH0 A
SETB TR0
DJNZ R4,OUTT0中斷前20次,中斷退出。
地址:MOV R4,# 14H;20次中斷(1秒)來重置初始值。
MOV R0,# 71H;指向秒計時單元(70-71H)
ACALL add 1;調用加1程序(加1秒操作)
MOV A,R3;第二個數據放入A(R3是2個十進制數的組合)。
CLR C;清除進位標記
CJNE A,#60H,ADDMM
ADDMM:JC out 01;60秒內退出
ACALL CLR0清除60秒或更長時間。
MOV R0,# 77H方向分鐘和計時單元(76H-77H)
呼叫地址1
MOV A,R3
CLR C
CJNE A,#60H,ADDHH
ADDHH:JC out 0
ACALL CLR0
MOV R0,# 79H指向小時計時單元(78H-79H)
呼叫地址1
MOV A,R3
CLR C
24H,小時
小時:JC OUTT0
ACALL CLR0
out 0:MOV A,66H查詢標誌
CJNE A,#1,out 01
MOV 72H,76H當中斷退出時,分鐘和小時計時單元的數據被移入相應的顯示單元。
MOV 73H,77H
MOV 74H,78H
MOV 75H,79H
out 01:POP PSW;堆棧
流行ACC
SETB ET0;打開T0
RETI;中斷返回
;-加1程序;
ADD1: MOV A,@ R0將當前計時單位數據放入。
DEC R0指向以前的地址
互換A;中數據的高四位和低四位的交換
ORL A,@ R0前壹個地址中的數據放入a的低四位。
加壹個,# 01H;壹加1運算
阿達;小數調整
MOV R3,A;移入R3寄存器
ANL A,# 0FH高四位變為0。
MOV @R0,A;放回以前的地址單元
MOV A,R3;檢索R3的臨時數據
INC R0指向當前地址單元
互換A;中數據的高四位和低四位的交換
ANL A,# 0FH高四位變為0。
MOV @R0,A;數據被放入地址單元進行截斷。
浸水使柔軟
CLR0: CLR C
CLR A;清除累加器
MOV @R0,A;清除當前地址單元
DEC R0指向以前的地址
MOV @R0,A;由先前的地址單元清除。
RET子程序返回
;-
INTT1:推送ACC
推送PSW
MOV TL1,#0B0H
MOV TH1,#3CH
DJNZ R2,intt 1 out;0.3秒前退出中斷(50毫秒中斷6次)
MOV R2,# 06H重新加載0.3秒計時的初始值。
CPL 02H0.3秒反轉閃爍的旗幟。
JB 02H,flash 1;當02H位為1時,顯示單元“熄滅”。
MOV A,R5
荷蘭CJNE A,#01H
JMP NNN1
NL:CJNE A,#02H,NL1
LJMP NNN1
NL1:CJNE A,#03H,NL2
LJMP NLL
NL2:CJNE A,#04H,INTT1OUT
LJMP NLL
NLL:MOV 72H,76H
MOV 73H,77H
MOV 74H,78H
MOV 75H,79H
AJMP INTT1OUT
nnn 1:MOV 72H 7BH
MOV 73H,7CH
MOV 74H,7DH
MOV 75H,7EH
intt 1 out:POP PSW;還原現場
流行ACC
RETI;中斷退出
FLASH1:MOV A,R5
CJNE A,#01H,ML
LJMP MNN1
ML:CJNE A,#02H,ML1
LJMP MNN2
ML1:CJNE A,#03H,MN
LJMP MLL
MN:CJNE A,#04H,INTT1OUT
LJMP MHL
MLL:MOV 72H,7AH
MOV 73H,7AH不顯示子數據的顯示單元(72-73H)。
MOV 74H,78H
MOV 75H,79H
AJMP INTT1OUT
MHL:MOV 72小時,76小時
MOV 73H,77H
MOV 74H,7AH顯示單元(74-75H),小時數據將不顯示。
MOV 75H,7AH
AJMP INTT1OUT
mnn 1:MOV 72H 7AH
MOV 73H,7AH顯示單元(72-73H)將不顯示鬧鐘分鐘數據。
MOV 74H,7DH
MOV 75H,7EH
AJMP INTT1OUT
MOV 72H,7BH
MOV 73H,7CH
MOV 74H,7AH
MOV 75H,7AH顯示單元(74-75H),鬧鐘小時數據不會顯示。
AJMP INTT1OUT
;-顯示;
顯示:MOV DPTR,#顯示數據
MOV A,70H
MOVC A,@A+DPTR
MOV·P3
CLR P1.0
nototherwiseprovided(for)除非另有規定
nototherwiseprovided(for)除非另有規定
nototherwiseprovided(for)除非另有規定
SETB P1.0
MOV A,71H
MOVC A,@A+DPTR
MOV·P3
CLR P1.1
nototherwiseprovided(for)除非另有規定
nototherwiseprovided(for)除非另有規定
nototherwiseprovided(for)除非另有規定
SETB P1.1
MOV A,72H
MOVC A,@A+DPTR
MOV·P3
CLR P1.2
nototherwiseprovided(for)除非另有規定
nototherwiseprovided(for)除非另有規定
查詢鬧鐘分為十個部分。
CJNE A,7CH,BEERE
BB:CLR P1.6
LCALL DDL
SETB P1.6
LCALL DDL
JNB P1.7,比爾
比爾:退休
比爾:SETB P1.6
MOV 68小時,#0
LCALL顯示
JNB P1.7,比爾
JMP·比爾
DISDATA:DB 0C0H,0F9H,64H,70H,59H,52H,42H,0F8H,40H,50H,0FFH0123456789空白
結束