www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀] ;*********************************************************************************************;;以下程序能用于24小時計時,能作為秒表使用,能定時鬧鈴1分鐘(也可關).;使用方法:開機后在00:00:00起

;*********************************************************************************************;
;以下程序能用于24小時計時,能作為秒表使用,能定時鬧鈴1分鐘(也可關).
;使用方法:開機后在00:00:00起開始計時,(1)長按P1.0進入調分狀態(tài):分單元閃爍
;按P1.0加1,按P1.1減1.再長按P1.0進入時調整狀態(tài),時單元閃爍,加減調整同調分.

;按長按退出調整狀態(tài).(2)按下P1.1進入秒表狀態(tài):按P1.2暫停,再按P1.2秒表清零,再按
;P1.2秒表又啟動,按P1.1退出秒表回到時鐘狀態(tài).(3)按P1.3進入設定鬧時狀態(tài):00:00:-,可進
;行分設定,按P1.2分加1,再按P1.3為時調整,00:00:-,按P1.2時加1,按P1.1鬧鈴有效,顯示為00:00:-0,再按
;P1.1鬧鈴無效(顯示00:00:-,),按P1.3調鬧鐘結束.在鬧鈴時可按P1.3停鬧,不按鬧鈴1分鐘.
;定時器T0、T1溢出周期為50MS,T0為秒計數用,T1為調整時閃爍及秒表定時用,
;P1.0、P1.1、P1.2、P1.3為調整按鈕,P0口為字符輸出口,P2為掃描口,P1.7為蜂嗚器口,采用共陽顯示管。
;50H-55H為鬧鐘定時單元,60H-65H為秒表計時單元,70H-75H為顯示時間單元,76H-79H為分時計時單元。
;03H標志=0時鐘閃爍,=1秒表,05H=0,不鬧鈴,=1要鬧鈴.07H每秒改變一次,用作間隔嗚叫.
;***********************************************************************************************;
DISPFIRSTEQU30H;顯示首址存放單元
BELLEQUP1.7;小喇叭
CONBSEQU2FH;存放報時次數
;
;****************************************
;;中斷入口程序;;
;****************************************
;
ORG0000H;程序執(zhí)行開始地址
LJMPSTART;跳到標號START執(zhí)行
ORG0003H;外中斷0中斷程序入口
RETI;外中斷0中斷返回
ORG000BH;定時器T0中斷程序入口
LJMPINTT0;跳至INTTO執(zhí)行
ORG0013H;外中斷1中斷程序入口
RETI;外中斷1中斷返回
ORG001BH;定時器T1中斷程序入口
LJMPINTT1;跳至INTT1執(zhí)行
ORG0023H;串行中斷程序入口地址
RETI;串行中斷程序返回
;
;****************************************
;;以下程序開始;;
;****************************************
;整點報時用
QQQQ:MOVA,#10H
MOVB,79H
MULAB
ADDA,78H
MOVCONBS,A
BSLOOP:LCALLDS20MS
LCALLDL1S
LCALLDL1S
LCALLDL1S
DJNZCONBS,BSLOOP
CLR08H;清整點報時標志
AJMPSTART1
;
;****************************************
;;主程序開始;;
;****************************************
;
START:LCALLST;上電顯示年月日及班級學號
MOVR0,#00H;清00H-7FH內存單元
MOVR7,#80H;
CLEARDISP:MOV@R0,#00H;
INCR0;
DJNZR7,CLEARDISP;
MOV20H,#00H;清20H(標志用)
MOV7AH,#0AH;放入"熄滅符"數據
MOVTMOD,#11H;設T0、T1為16位定時器
MOVTL0,#0B0H;50MS定時初值(T0計時用)
MOVTH0,#3CH;50MS定時初值
MOVTL1,#0B0H;50MS定時初值(T1閃爍定時用)
MOVTH1,#3CH;50MS定時初值
SETBEA;總中斷開放
SETBET0;允許T0中斷
SETBTR0;開啟T0定時器
MOVR4,#14H;1秒定時用計數值(50MS×20)
MOVDISPFIRST,#70H;顯示單元為70-75H
;以下主程序循環(huán)
START1:LCALLDISPLAY;調用顯示子程序
JNBP1.0,SETMM1;P1.0口為0時轉時間調整程序
JNBP1.1,FUNSS;秒表功能,P1.1按鍵調時時作減1加能
JNBP1.2,FUNPT;秒表STOP,PUSE,CLR
JNBP1.3,TSFUN;定時鬧鈴設定
JB08H,QQQQ
AJMPSTART1;P1.0口為1時跳回START1
;
FUNPT:LJMPFUNPTT
;以下鬧鈴時間設定程序,按P1.3進入設定
TSFUN:LCALLDS20MS
JBP1.3,START1;
WAIT113:JNBP1.3,WAIT113;等待鍵釋放
JB05H,CLOSESP;鬧鈴已開的話,關鬧鈴
MOVDISPFIRST,#50H;進入鬧鈴設定程序,顯示50-55H鬧鐘定時單元
MOV50H,#0CH;"-"鬧鈴設定時顯示格式00:00:-
MOV51H,#0AH;"黑"
;
DSWAIT:SETBEA
LCALLDISPLAY
JNBP1.2,DSFINC;分加1
JNBP1.0,DSDEC;分減1
JNBP1.3,DSSFU;進入時調整
AJMPDSWAIT
;
CLOSESP:CLR05H;關鬧鈴標志
CLRBELL
AJMPSTART1
DSSFU:LCALLDS20MS;消抖
JBP1.3,DSWAIT
LJMPDSSFUNN;進入時調整
;
SETMM1:LJMPSETMM;轉到時間調整程序SETMM
;
DSFINC:LCALLDS20MS;消抖
JBP1.2,DSWAIT
DSWAIT12:LCALLDISPLAY;等鍵釋放
JNBP1.2,DSWAIT12
CLREA
MOVR0,#53H;
LCALLADD1;鬧鈴設定分加1
MOVA,R3;分數據放入A

CLRC;清進位標志
CJNEA,#60H,ADDHH22;
ADDHH22:JCDSWAIT;小于60分時返回
ACALLCLR0;大于或等于60分時分計時單元清0
AJMPDSWAIT
DSDEC:LCALLDS20MS;消抖
JBP1.0,DSWAIT
DSWAITEE:LCALLDISPLAY;等鍵釋放
JNBP1.0,DSWAITEE
CLREA
MOVR0,#53H;
LCALLsub1;鬧鈴設定分減1
LJMPDSWAIT

;以下秒表功能/時鐘轉換程序
;按下P1.1可進行功能轉換
FUNSS:LCALLDS20MS
JBP1.1,START11
WAIT11:JNBP1.1,WAIT11
CPL03H
JNB03H,TIMFUN
MOVDISPFIRST,#60H;顯示秒表數據單元
MOV60H,#00H
MOV61H,#00H
MOV62H,#00H
MOV63H,#00H
MOV64H,#00H
MOV65H,#00H
MOVTL1,#0F0H;10MS定時初值()
MOVTH1,#0D8H;10MS定時初值
SETBTR1
SETBET1
START11:LJMPSTART1
TIMFUN:MOVDISPFIRST,#70H;顯示時鐘數據單元
CLRET1
CLRTR1
START12:LJMPSTART1
;以下秒表暫停清零功能程序
;按下P1.2暫?;蚯?,按下P1.1退出秒表回到時鐘計時
FUNPTT:LCALLDS20MS
JBP1.2,START12
WAIT22:JNBP1.2,WAIT21
CLRET1
CLRTR1
WAIT33:JNBP1.1,FUNSS
JBP1.2,WAIT31
LCALLDS20MS
JBP1.2,WAIT33
WAIT66:JNBP1.2,WAIT61
MOV60H,#00H
MOV61H,#00H
MOV62H,#00H
MOV63H,#00H
MOV64H,#00H
MOV65H,#00H
WAIT44:JNBP1.1,FUNSS
JBP1.2,WAIT41
LCALLDS20MS
JBP1.2,WAIT44
WAIT55:JNBP1.2,WAIT51
SETBET1
SETBTR1
AJMPSTART1
;以下鍵等待釋放時顯示不會熄滅用
WAIT21:LCALLDISPLAY
AJMPWAIT22
WAIT31:LCALLDISPLAY
AJMPWAIT33
WAIT41:LCALLDISPLAY
AJMPWAIT44
WAIT51:LCALLDISPLAY
AJMPWAIT55
WAIT61:LCALLDISPLAY
AJMPWAIT66
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;1秒計時程序;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;T0中斷服務程序
INTT0:PUSHACC;累加器入棧保護
PUSHPSW;狀態(tài)字入棧保護
CLRET0;關T0中斷允許
CLRTR0;關閉定時器T0
MOVA,#0B7H;中斷響應時間同步修正
ADDA,TL0;低8位初值修正
MOVTL0,A;重裝初值(低8位修正值)
MOVA,#3CH;高8位初值修正
ADDCA,TH0;
MOVTH0,A;重裝初值(高8位修正值)
SETBTR0;開啟定時器T0
DJNZR4,OUTT0;20次中斷未到中斷退出
ADDSS:MOVR4,#14H;20次中斷到(1秒)重賦初值

CPL07H;鬧鈴時間隔嗚叫用
MOVR0,#71H;指向秒計時單元(71H-72H)
ACALLADD1;調用加1程序(加1秒操作)
MOVA,R3;秒數據放入A(R3為2位十進制數組合)
CLRC;清進位標志
CJNEA,#60H,ADDMM;
ADDMM:JCOUTT0;小于60秒時中斷退出
ACALLCLR0;大于或等于60秒時對秒計時單元清0
MOVR0,#77H;指向分計時單元(76H-77H)
ACALLADD1;分計時單元加1分鐘
MOVA,R3;分數據放入A
CLRC;清進位標志
CJNEA,#60H,ADDHH;
ADDHH:JCOUTT0;小于60分時中斷退出
ACALLCLR0;大于或等于60分時分計時單元清0
LCALLDS20MS;正點報時
SETB08H
MOVR0,#79H;指向小時計時單元(78H-79H)
ACALLADD1;小時計時單元加1小時
MOVA,R3;時數據放入A
CLRC;清進位標志
CJNEA,#24H,HOUR;
HOUR:JCOUTT0;小于24小時中斷退出
ACALLCLR0;大于或等于24小時小時計時單元清0
OUTT0:MOV72H,76H;中斷退出時將分、時計時單元數據移
MOV73H,77H;入對應顯示單元
MOV74H,78H;
MOV75H,79H;
LCALLBAOJ
POPPSW;恢復狀態(tài)字(出棧)
POPACC;恢復累加器
SETBET0;開放T0中斷
RETI;中斷返回
;
;****************************************
;;閃動調時程序秒表功能程序;;
;****************************************
;T1中斷服務程序,用作時間調整時調整單元閃爍指示或秒表計時
INTT1:PUSHACC;中斷現場保護
PUSHPSW;
JB03H,MMFUN;=1時秒表
MOVTL1,#0B0H;裝定時器T1定時初值
MOVTH1,#3CH;
DJNZR2,INTT1OUT;0.3秒未到退出中斷(50MS中斷6次)
MOVR2,#06H;重裝0.3秒定時用初值
CPL02H;0.3秒定時到對閃爍標志取反
JB02H,FLASH1;02H位為1時顯示單元"熄滅"
MOV72H,76H;02H位為0時正常顯示
MOV73H,77H;
MOV74H,78H;
MOV75H,79H;
INTT1OUT:POPPSW;恢復現場
POPACC;
RETI;中斷退出
FLASH1:JB01H,FLASH2;01H位為1時,轉小時熄滅控制
MOV72H,7AH;01H位為0時,"熄滅符"數據放入分
MOV73H,7AH;顯示單元(72H-73H),將不顯示分數據
MOV74H,78H;
MOV75H,79H;
AJMPINTT1OUT;轉中斷退出
FLASH2:MOV72H,76H;01H位為1時,"熄滅符"數據放入小時
MOV73H,77H;顯示單元(74H-75H),小時數據將不顯示
MOV74H,7AH;
MOV75H,7AH;
AJMPINTT1OUT;轉中斷退出
;
MMFUN:CLRTR1
MOVA,#0F7H;中斷響應時間同步修正,重裝初值(10ms)
ADDA,TL1;低8位初值修正
MOVTL1,A;重裝初值(低8位修正值)
MOVA,#0D8H;高8位初值修正
ADDCA,TH1;
MOVTH1,A;重裝初值(高8位修正值)
SETBTR1;開啟定時器T0
MOVR0,#61H;指向秒計時單元(71H-72H)
ACALLADD1;調用加1程序(加1秒操作)
CLRC;
MOVA,R3;
JZFSS1;加1后為00,C=0
AJMPOUTT01;加1后不為00,C=1
FSS1:ACALLCLR0;大于或等于60秒時對秒計時單元清0
MOVR0,#63H;指向分計時單元(76H-77H)
ACALLADD1;分計時單元加1分鐘
MOVA,R3;分數據放入A
CLRC;清進位標志
CJNEA,#60H,ADDHH1;
ADDHH1:JCOUTT01;小于60分時中斷退出
LCALLCLR0;大于或等于60分時分計時單元清0
MOVR0,#65H;指向小時計時單元(78H-79H)
ACALLADD1;小時計時單元加1小時

OUTT01:
POPPSW;恢復狀態(tài)字(出棧)
POPACC;恢復累加器
RETI;中斷返回;
;****************************************
;;加1子程序;;
;****************************************
;
;
ADD1:MOVA,@R0;取當前計時單元數據到A
DECR0;指向前一地址
SWAPA;A中數據高四位與低四位交換
ORLA,@R0;前一地址中數據放入A中低四位
ADDA,#01H;A加1操作
DAA;十進制調整
MOVR3,A;移入R3寄存器
ANLA,#0FH;高四位變0
MOV@R0,A;放回前一地址單元
MOVA,R3;取回R3中暫存數據
INCR0;指向當前地址單元
SWAPA;A中數據高四位與低四位交換
ANLA,#0FH;高四位變0
MOV@R0,A;數據放入當削地址單元中
RET;子程序返回
;
;****************************************
;;分減1子程序;;
;****************************************
;
SUB1:MOVA,@R0;取當前計時單元數據到A
DECR0;指向前一地址
SWAPA;A中數據高四位與低四位交換
ORLA,@R0;前一地址中數據放入A中低四位
JZSUB11
DECA;A減1操作
SUB111:MOVR3,A;移入R3寄存器
ANLA,#0FH;高四位變0
CLRC;清進位標志
SUBBA,#0AH
SUB1111:JCSUB1110
MOV@R0,#09H;大于等于0AH,為9
SUB110:MOVA,R3;取回R3中暫存數據
INCR0;指向當前地址單元
SWAPA;A中數據高四位與低四位交換
ANLA,#0FH;高四位變0
MOV@R0,A;數據放入當削地址單元中
RET;子程序返回
;
SUB11:MOVA,#59H
AJMPSUB111
SUB1110:MOVA,R3;移入R3寄存器
ANLA,#0FH;高四位變0
MOV@R0,A
AJMPSUB110
;****************************************
;;時減1子程序;;
;****************************************
;
SUBB1:MOVA,@R0;取當前計時單元數據到A
DECR0;指向前一地址
SWAPA;A中數據高四位與低四位交換
ORLA,@R0;前一地址中數據放入A中低四位
JZSUBB11;00減1為23(小時)
DECA;A減1操作
SUBB111:MOVR3,A;移入R3寄存器
ANLA,#0FH;高四位變0
CLRC;清進位標志
SUBBA,#0AH;時個位大于9為9
SUBB1111:JCSUBB1110;
MOV@R0,#09H;大于等于0AH,為9
SUBB110:MOVA,R3;取回R3中暫存數據
INCR0;指向當前地址單元
SWAPA;A中數據高四位與低四位交換
ANLA,#0FH;高四位變0
MOV@R0,A;時十位數數據放入
RET;子程序返回
;
SUBB11:MOVA,#23H
AJMPSUBB111
SUBB1110:MOVA,R3;時個位小于0A不處理
ANLA,#0FH;高四位變0
MOV@R0,A;個位移入
AJMPSUBB110
;****************************************
;;清零程序;;
;****************************************
;對計時單元復零用
CLR0:CLRA;清累加器
MOV@R0,A;清當前地址單元
DECR0;指向前一地址
MOV@R0,A;前一地址單元清0
RET;子程序返回
;
;****************************************
;;時鐘時間調整程序;;
;****************************************
;當調時按鍵按下時進入此程序
SETMM:cLRET0;關定時器T0中斷
CLRTR0;關閉定時器T0
LCALLDL1S;調用1秒延時程序
LCALLDS20MS;消抖
JBP1.0,CLOSEDIS;鍵按下時間小于1秒,關閉顯示(省電)
MOVR2,#06H;進入調時狀態(tài),賦閃爍定時初值
MOV70H,#00H;調時時秒單元為00秒
MOV71H,#00H
SETBET1;允許T1中斷
SETBTR1;開啟定時器T1
SET2:JNBP1.0,SET1;P1.0口為0(鍵未釋放),等待
SETB00H;鍵釋放,分調整閃爍標志置1
SET4:JBP1.0,SET3;等待鍵按下
LCALLDL05S;有鍵按下,延時0.5秒
LCALLDS20MS;消抖
JNBP1.0,SETHH;按下時間大于0.5秒轉調小時狀態(tài)
MOVR0,#77H;按下時間小于0.5秒加1分鐘操作
LCALLADD1;調用加1子程序
MOVA,R3;取調整單元數據
CLRC;清進位標志
CJNEA,#60H,HHH;調整單元數據與60比較
HHH:JCSET4;調整單元數據小于60轉SET4循環(huán)
LCALLCLR0;調整單元數據大于或等于60時清0
CLRC;清進位標志
AJMPSET4;跳轉到SET4循環(huán)
CLOSEDIS:SETBET0;省電(LED不顯示)狀態(tài)。開T0中斷
SETBTR0;開啟T0定時器(開時鐘)
CLOSE:JBP1.0,CLOSE;無按鍵按下,等待。
LCALLDS20MS;消抖
JBP1.0,CLOSE;是干擾返回CLOSE等待
WAITH:JNBP1.0,WAITH;等待鍵釋放
LJMPSTART1;返回主程序(LED數據顯示亮)
SETHH:CLR00H;分閃爍標志清除(進入調小時狀態(tài))
SETB01H;小時調整標志置1
SETHH1:JNBP1.0,SET5;等待鍵釋放
SET6:JBP1.0,SET7;等待按鍵按下
LCALLDL05S;有鍵按下延時0.5秒
LCALLDS20MS;消抖
JNBP1.0,SETOUT;按下時間大于0.5秒退出時間調整
MOVR0,#79H;按下時間小于0.5秒加1小時操作
LCALLADD1;調加1子程序
MOVA,R3;
CLRC;
CJNEA,#24H,HOUU;計時單元數據與24比較
HOUU:JCSET6;小于24轉SET6循環(huán)
LCALLCLR0;大于或等于24時清0操作
AJMPSET6;跳轉到SET6循環(huán)
SETOUT:JNBP1.0,SETOUT1;調時退出程序。等待鍵釋放
LCALLDS20MS;消抖
JNBP1.0,SETOUT;是抖動,返回SETOUT再等待
CLR01H;清調小時標志
CLR00H;清調分標志
CLR02H;清閃爍標志
CLRTR1;關閉定時器T1
CLRET1;關定時器T1中斷
SETBTR0;開啟定時器T0
SETBET0;開定時器T0中斷(計時開始)
LJMPSTART1;跳回主程序
SET1:LCALLDISPLAY;鍵釋放等待時調用顯示程序(調分)
AJMPSET2;防止鍵按下時無時鐘顯示
SET3:LCALLDISPLAY;等待調分按鍵時時鐘顯示用
JNBP1.1,FUNSUB;減1分操作
AJMPSET4;調分等待
SET5:LCALLDISPLAY;鍵釋放等待時調用顯示程序(調小時)
AJMPSETHH1;防止鍵按下時無時鐘顯示
SET7:LCALLDISPLAY;等待調小時按鍵時時鐘顯示用
JNBP1.1,FUNSUBB;小時減1操作
AJMPSET6;調時等待
SETOUT1:LCALLDISPLAY;退出時鐘調整時鍵釋放等待
AJMPSETOUT;防止鍵按下時無時鐘顯示
;FUNSUB,分減1程序?
FUNSUB:LCALLDS20MS;消抖
JBP1.1,SET41;干擾,返回調分等待
FUNSUB1:JNBP1.1,FUNSUB1;等待鍵放開
MOVR0,#77H;
LCALLSUB1;分減1程序
LJMPSET4;返回調分等待
;
SET41:LJMPSET4;
;FUNSUBB,時減1程序;
FUNSUBB:LCALLDS20MS;消抖
JBP1.1,SET61;干擾,返回調時等待
FUNSUBB1:JNBP1.1,FUNSUBB1;等待鍵放開
MOVR0,#79H;
LCALLSUBB1;時減1程序
LJMPSET6;返回調時等待
;
SET61:LJMPSET6
;***************************************
;;顯示程序;;
;***************************************
;顯示數據在70H-75H單元內,用六位LED共陽數碼管顯示,P0口輸出段碼數據,P2口作
;掃描控制,每個LED數碼管亮1MS時間再逐位循環(huán)。
DISPLAY:MOVR1,DISPFIRST;指向顯示數據首址
MOVR5,#0FEH;掃描控制字初值
PLAY:MOVA,R5;掃描字放入A
MOVP2,A;從P2口輸出
MOVA,@R1;取顯示數據到A
MOVDPTR,#TAB;取段碼表地址
MOVCA,@A+DPTR;查顯示數據對應段碼
MOVP0,A;段碼放入P1口
MOVA,R5;
JBACC.2,LOOP5;小數點處理
CLRP0.7;
LOOP5:JBACC.4,LOOP6;小數點處理
CLRP0.7;
LOOP6:LCALLDL1MS;顯示1MS
INCR1;指向下一地址
MOVA,R5;掃描控制字放入A
JNBACC.5,ENDOUT;ACC.5=0時一次顯示結束
RLA;A中數據循環(huán)左移
MOVR5,A;放回R5內
MOVP0,#0FFH
AJMPPLAY;跳回PLAY循環(huán)
ENDOUT:MOVP2,#0FFH;一次顯示結束,P2口復位
MOVP0,#0FFH;P0口復位
RET;子程序返回
TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH
;共陽段碼表"0""1""2""3""4""5""6""7""8""9""不亮"“A”“-”
;
;****************************
;SDISPLAY,上電顯示子程序
;****************************
;不帶小數點顯示,有“A”“-”顯示功能
SDISPLAY:MOVR1,DISPFIRST
MOVR5,#0FEH;掃描控制字初值
SPLAY:MOVA,R5;掃描字放入A
MOVP2,A;從P2口輸出
MOVA,@R1;取顯示數據到A
MOVDPTR,#TABS;取段碼表地址
MOVCA,@A+DPTR;查顯示數據對應段碼
MOVP0,A;段碼放入P1口
MOVA,R5;
LCALLDL1MS;顯示1MS
INCR1;指向下一地址
MOVA,R5;掃描控制字放入A
JNBACC.5,ENDOUTS;ACC.5=0時一次顯示結束
RLA;A中數據循環(huán)左移
MOVR5,A;放回R5內
AJMPSPLAY;跳回PLAY循環(huán)
ENDOUTS:MOVP2,#0FFH;一次顯示結束,P2口復位
MOVP0,#0FFH;P0口復位
RET;子程序返回
TABS:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0C6H,0BFH,88H
;顯示數"0123456789不亮C-A"
;內存數"01234567890AH0BH0CH0DH"
;STAB表,啟動時顯示2006年12月23日、C04-2-28(學號)用
STAB:DB0AH,0AH,0AH,0AH,0AH,0AH,08H,02H,0CH,02H,0CH,04H,00H,0BH,0AH,0AH
DB03H,02H,0CH,02H,01H,0CH,06H,00H,00H,02H,0AH,0AH,0AH,0AH,0AH,0AH
;注:0A不亮,0B顯示“A”,0C顯示“-”
;
;***********************************************************
;ST,上電時顯示年月班級用,采用移動顯示,先右移,接著左移.
;***********************************************************
ST:MOVR0,#40H;將顯示內容移入40H-5FH單元
MOVR2,#20H;
MOVR3,#00H;
CLRA;
MOVDPTR,#STAB;
SLOOP:MOVCA,@A+DPTR;
MOV@R0,A;
MOVA,R3;
INCA;
MOVR3,A;
INCR0;
DJNZR2,SLOOP;移入完畢
MOVDISPFIRST,#40H;以下程序從左往右移
SSLOOP:MOVR2,#50;控制移動速度
SSLOOP1:LCALLSDISPLAY;
DJNZR2,SSLOOP1;
INCDISPFIRST
MOVA,DISPFIRST
CJNEA,#5AH,SSLOOP;
MOVDISPFIRST,#5AH;以下程序從右往左移
MOVR3,#1BH;顯示27個單元
SSLOOP2:MOVR2,#32H;控制移動速度
SSLOOP12:LCALLSDISPLAY;
DJNZR2,SSLOOP12;
DECDISPFIRST
DJNZR3,SSLOOP2;
RET
;*******************************************
;;延時程序;;
;*******************************************
;
;1MS延時程序,LED顯示程序用
DL1MS:MOVR6,#14H
DL1:MOVR7,#19H
DL2:DJNZR7,DL2
DJNZR6,DL1
RET
;20MS延時程序,采用調用顯示子程序以改善LED的顯示閃爍現象
DS20MS:CLRBELL
LCALLDISPLAY
LCALLDISPLAY
LCALLDISPLAY
SETBBELL
RET
;延時程序,用作按鍵時間的長短判斷
DL1S:LCALLDL05S
LCALLDL05S
RET
DL05S:MOVR3,#20H;8毫秒*32=0.196秒
DL05S1:LCALLDISPLAY
DJNZR3,DL05S1
RET
;*************************************
;以下是鬧鈴時間設定程序中的時調整程序
;*************************************
DSSFUNN:LCALLDISPLAY;等待鍵釋放
JNBP1.3,DSSFUNN
MOV50H,#0AH;時調整時顯示為00:00:-.
MOV51H,#0CH
WAITSS:SETBEA
LCALLDISPLAY
JNBP1.2,FFFF;時加1鍵
JNBP1.0,DDDD;時減1
JNBP1.3,OOOO;鬧鈴設定退出鍵
JNBP1.1,ENA;鬧鈴設定有效或無效按鍵
AJMPWAITSS
OOOO:LCALLDS20MS;消抖
JBP1.3,WAITSS
DSSFUNNM:LCALLDISPLAY;鍵釋放等待
JNBP1.3,DSSFUNNM
MOVDISPFIRST,#70H
LJMPSTART1
ENA:LCALLDS20MS;消抖;
JBP1.1,WAITSS
DSSFUNMMO:LCALLDISPLAY;鍵釋放等待
JNBP1.1,DSSFUNMMO
CPL05H
JNB05H,WAITSS11
MOV50H,#00H;05H=1,鬧鈴開,顯示為00:00:0。
AJMPWAITSS
WAITSS11:MOV50H,#0aH;鬧鈴不開,顯示為00:00:-.
AJMPWAITSS
FFFF:LCALLDS20MS;消抖;
JBP1.2,WAITSS
DSSFUNMM:LCALLDISPLAY;鍵釋放等待
JNBP1.2,DSSFUNMM
CLREA
MOVR0,#55H
LCALLADD1
MOVA,R3;

CLRC;
CJNEA,#24H,ADDHH33N;
ADDHH33N:JCWAITSS;小于24點返回
ACALLCLR0;大于等于24點清零
AJMPWAITSS
DDDD:LCALLDS20MS;消抖;
JBP1.0,WAITSS
DSSFUNDD:LCALLDISPLAY;鍵釋放等待
JNBP1.0,DSSFUNDD
CLREA
MOVR0,#55H
LCALLSUBB1
LJMPWAITSS
;*********************
;以下是鬧鈴判斷子程序
;*********************
BAOJ:JNB05H,BBAO;05H=1,鬧鐘開,要比較數據
MOVA,79H;從時十位、個位、分十位、分個位順序比較
CJNEA,55H,BBAO
MOVA,78H
CLRC
BB3:CJNEA,54H,BBAO
MOVA,77H
CLRC
CJNEA,53H,BBAO
MOVA,76H
CLRC
BB2:CJNEA,52H,BBAO
JNB07H,BBAO;07H在1秒到時會取反
CLRBELL;時分相同時嗚叫(1秒間隔叫)
RET
;
BBAO:SETBBELL;不相同或鬧鈴不開
RET
;********************************************************
END;程序結束

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉