資源描述:
《智能時控開關(guān)設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、;系統(tǒng)晶振是11.0592MHzZ8279EQU0FF82H;8279狀態(tài)/命令口地址D8279EQU0FF80H;8279數(shù)據(jù)口地址LEDMODEQU00H;左邊輸入八位字符顯示;外部譯碼鍵掃描方式,雙鍵互鎖LEDFEQEQU2FH;掃描速率LEDCLSEQU0C1H;清除顯示RAMLEDWR0EQU80H;設(shè)定的將要寫入的顯示RAM地址READKBEQU40H;讀FIFORAM地址0的命令字ORG0000HAJMPSTARTORG001BH;INTT1入口地址AJMPINT_T1ORG0040
2、HSTART:MOVSP,#60HLCALLINIT8279;初始化8279MOVR3,#0H;時MOVR2,#0H;分MOVR7,#0H;秒MOVR0,#0H;10毫秒MOVR6,#0FFH;標(biāo)志MOVTMOD,#10HMOVTL1,#00H;10毫秒的時間常數(shù)MOVTH1,#0DCHLCALLDIS_mSSETBET1SETBEA;允許中斷zSETB4BH;三個定時端子禁止SETB4CHSETB4DHMOV09H,#23HMOV0CH,#23HMOV0FH,#23HMOVR1,#09H;定時時
3、刻的存儲起始地址WAIT:LCALLGETKEY;讀鍵盤CJNEA,#0FFH,CONT;判斷是否有鍵輸入MOVA,BCJNEA,#3CH,KEY_A;輸入鍵是'C',轉(zhuǎn)CLEAR_TLCALLCLEAR_TKEY_A:CJNEA,#3AH,KEY_D;輸入鍵是'A',轉(zhuǎn)START_TLCALLSTART_TKEY_D:CJNEA,#3DH,KEY_B;輸入鍵是'D',轉(zhuǎn)STOP_TLCALLSTOP_TKEY_B:CJNEA,#3BH,KEY_F;輸入鍵是'B',轉(zhuǎn)SET_TLCALLSET_T
4、KEY_F:CJNEA,#3FH,KEY_E;輸入鍵是'F',轉(zhuǎn)SET_FLCALLSET_FKEY_E:CJNEA,#3EH,CONT;輸入鍵是'E',轉(zhuǎn)MONITORAJMPSTOP_LIGHTCONT:CJNER6,#0FFH,WAIT;若無秒標(biāo)志則循環(huán)LCALLDISPLAY;顯示時間MOVR6,#0;清標(biāo)志TIMEON:MOVA,R7;判斷定時1是否來到(秒,分,時)CJNEA,0BH,T2MOVA,R2CJNEA,0AH,T2MOVA,R3CJNEA,09H,T2LCALLTIMEON
5、REPLAY1;轉(zhuǎn)定時響應(yīng)程序1T2:MOVA,R7;判斷定時2是否來到(秒,分,時)CJNEA,0EH,T3MOVA,R2CJNEA,0DH,T3MOVA,R3CJNEA,0CH,T3LCALLTIMEONREPLAY2;轉(zhuǎn)定時響應(yīng)程序2T3:MOVA,R7;判斷定時3是否來到(秒,分,時)CJNEA,11H,WAITMOVA,R2CJNEA,10H,WAITMOVA,R3CJNEA,0FH,WAITLCALLTIMEONREPLAY3;轉(zhuǎn)定時響應(yīng)程序3SJMPWAIT;循環(huán)STOP_LIGHT
6、:SETB4BHSETB4CHSETB4DHMOVR1,#09HSJMPWAIT;停止燈閃爍CLEAR_TIMER:;定時時間清零子程序MOV0BH,#0H;小時清零MOV0AH,#0H;分鐘清零MOV09H,#0H;秒清零MOVR6,#0FFH;置秒標(biāo)志LCALLDIS_mS;顯示毫秒RETCLEAR_T:;時間清零子程序CLRTR1;關(guān)計數(shù)器MOVR3,#0H;小時清零MOVR2,#0H;分鐘清零MOVR7,#0H;秒清零MOVR0,#0H;10毫秒清零MOVR6,#0FFH;置秒標(biāo)志LCAL
7、LDIS_mS;顯示毫秒RETSTART_T:;電子鐘計時子程序SETBTR1RETSTOP_T:;電子鐘停止計時子程序CLRTR1RETSET_F:CLRTR1;設(shè)置定時值子程序MOVR4,#7LCALLGETWORD;讀小時數(shù)CJNEA,#0FFH,INVALID_TIEMR;判斷輸入合法性MOVA,BADDA,#232JCINVALID_TIEMR;判斷輸入小時值<24MOVA,BMOVB,#10DIVABSWAPAADDA,BMOV@R1,A;保存輸入的值INCR1MOVR4,#5LCAL
8、LGETWORD;讀分鐘數(shù)CJNEA,#0FFH,INVALID_TIEMR;判斷輸入合法性MOVA,BADDA,#196JCINVALID_TIEMR;判斷輸入分鐘數(shù)<60MOVA,BMOVB,#10DIVABSWAPAADDA,BMOV@R1,A;保存輸入的值INCR1MOVR4,#3LCALLGETWORD;讀分鐘數(shù)CJNEA,#0FFH,INVALID_TIEMR;判斷輸入合法性MOVA,BADDA,#196JCINVALID_TIEMR;判斷輸入分鐘值<60MOVA,BM