當前位置:編程學習大全網 - 編程語言 - 長按和短按匯編程序

長按和短按匯編程序

帶鬧鐘的智能電子鐘

源程序

源程序如下: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空白

結束

  • 上一篇:用C語言編程裁判打分。
  • 下一篇:幼兒園中班數學圖形教案三篇
  • copyright 2024編程學習大全網