




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、.51單片機(jī)匯編語言萬年歷完美版;*萬年歷制作 BY-信工七班 ;* ;* ;-RCK BIT P0.5SCK BIT P0.4DAT BIT P0.7RST BIT P0.6BUZZER BIT P1.3 ;蜂鳴器BYTE EQU 40H;用于給鎖存器送入數(shù)據(jù)GEWEI EQU 41H;用于存放數(shù)碼管顯示的第一位 SHIWEI EQU 42H;用于存放數(shù)碼管顯示的第二位BAIWEI EQU 43H;用于存放數(shù)碼管顯示的第三位QIANWEI EQU 44H;用于存放數(shù)碼管顯示的第四位TEMP1 EQU 45HTEMP2 EQU 46HCOUNT EQU 47H ;用于擴(kuò)展定時器計數(shù)時間KTIM
2、E EQU 49H TEMP EQU 50HDMS EQU 51H;用于存放運動秒表的最低位DSECOND EQU 52H;用于存放運動秒表的秒DMIN EQU 53H;用于存放運動秒表的分鐘CLKMIN EQU 54H ;用于存放鬧鐘分鐘CLKHOUR EQU 55H;用于存放鬧鐘時CLKF EQU 56H;用于鬧鐘開啟的標(biāo)志位;- ORG 0000HAJMP MAIN ORG 000BH;定時器0中斷入口地址AJMP T0_INTORG 001BH;定時器1中斷入口地址AJMP T1_INT;*主程序*;-MAIN:MOV R4,#00 ;計數(shù)秒MOV R5,#50 ;計數(shù)分MOV R6,
3、#15 ;計數(shù)時 MOV R0,#14H ;2013年MOV R1,#0DH MOV R2,#6 ;6月MOV R3,#18 ;18日MOV COUNT,#0HMOVA,#5 ;開始使A不等于0,用于后面的判斷MOVCLKMIN,#0HMOVCLKHOUR,#0HMOVCLKF,#0HMOV SP,#60HMOV TMOD,#11H ;設(shè)置定時器0為工作模式1 MOV TH0, #03CHMOV TL0, #0B0H ;定時50000 usMOV TH1, #0D8HMOV TL1, #0F0H ;定時1000us=1MS SETB ET0 ;允許定時器中斷SETB ET1SETB EA ;允
4、許全局中斷SETB PT0 ;定時器中斷設(shè)為高優(yōu)先級SETB EX0 ;允許外部中斷SETB EX1 SETB IT0 ;外部中斷設(shè)為下降沿觸發(fā)SETB IT1SETB TR0 ;啟動定時器;-START:MOVDPTR,#TABLELJMPKEYSCAN ;首先進(jìn)入時間顯示,由于地址相差太遠(yuǎn)所以代碼順序有所改變;-MARK2:LJMPKEYSCAN ;地址差跳遠(yuǎn)無法跳轉(zhuǎn),此處進(jìn)行中間跳轉(zhuǎn)到時間顯示界面KEYCLK:MOVA,CLKF;此處為鬧鐘設(shè)置剛進(jìn)入時的程序,由按鍵s12進(jìn)入JNZKEYCLKF;進(jìn)入后通過CLKF來判斷鬧鐘功能是否啟動,未啟動時正常 ;顯示為SHOWCLKF,啟動時顯示
5、SHOWCLKF1,此兩種顯示差一個數(shù)碼管最低位標(biāo)志的點KEYCLK1:LCALLSHOWCLK ;此處判定未啟動鬧鐘功能時的顯示LCALLS4;在鬧鐘界面查看有無切換顯示模式(此處也可認(rèn)為是確定 ;按鍵)的按鍵s4按下,JZMARK2 ;按下后跳轉(zhuǎn)到時間顯示LCALLS8;在鬧鐘顯示界面下查看啟動鬧鐘功能的鍵s8是否按下MOVA,CLKFJNZKEYCLKF;按下后顯示SHOWCLKF1的顯示LCALLS16;未按下則顯示沒有鬧鐘標(biāo)志的數(shù)碼管顯示,再查看有無進(jìn) ;入調(diào)節(jié)s16的鍵按下,CJNE A,#7EH,KEYCLK1 ;未按下繼續(xù)鬧鐘界面顯示 KEYCLK2:LCALLSCLKMIN
6、;按下進(jìn)入調(diào)節(jié)MOVA,CLKMIN;顯示設(shè)置分鐘的調(diào)節(jié)MOVTEMP,ALCALLKEYSUB1;通過加減鍵s8,s12來設(shè)置鬧鐘LCALLKEYADD1MOVA,TEMPSUBBA,#60;調(diào)節(jié)分鐘不超過59JCREMAIN0MOVTEMP,#0REMAIN0:MOVA,TEMPMOVCLKMIN,ALCALLS16;查看有無進(jìn)入調(diào)節(jié)s16的鍵按下,CJNE A,#7EH,KEYCLK2 ;未按下繼續(xù)顯示分鐘調(diào)節(jié)KEYCLK3:LCALLSCLKHOUR;按下進(jìn)入顯示時調(diào)節(jié)MOVA,CLKHOURMOVTEMP,A;送入?yún)?shù),通過加減鍵進(jìn)行調(diào)節(jié)設(shè)置LCALLKEYSUB2LCALLKEYA
7、DD2MOVA,TEMPSUBBA,#24;時的設(shè)置不超過24JCREMAIN1MOVTEMP,#0;超過24置0REMAIN1:MOVA,TEMPMOVCLKHOUR,ALCALLS16CJNE A,#7EH,KEYCLK3 ;再次判斷有無調(diào)節(jié)的切換鍵(按3次為確定)按下KEYCLK4:LCALLSHOWCLK;按下后跳轉(zhuǎn)為鬧鐘的界面正常顯示LCALLS4;再判斷有無切換顯示模式的鍵按下,按下跳轉(zhuǎn)顯示JZKEYSCANLCALLS8;再判斷有無啟動(關(guān)閉)鬧鐘功能的鍵按下MOVA,CLKF;根據(jù)CLKF(鬧鐘功能啟動)的標(biāo)志位顯示不同的鬧鐘界面JNZKEYCLKF;鬧鐘功能啟動,跳轉(zhuǎn)到KEY
8、CLKF顯示鬧鐘啟動標(biāo)記GOON:LCALLS16;未啟動則又判斷有無進(jìn)入調(diào)節(jié)的鍵按下CJNEA,#7EH,KEYCLK4;沒有按下繼續(xù)正常顯示AJMPKEYCLK2;按下后重復(fù)KEYCLK2開始的內(nèi)容KEYCLKF:LCALLSHOWCLK1;顯示出鬧鐘功能啟動后的標(biāo)記(數(shù)碼管最低位標(biāo)記)LCALLS4;查看有無切換顯示模式(鬧鐘設(shè)置確定后)鍵按下JZKEYSCAN;按下后跳轉(zhuǎn)到顯示時間的界面LCALLS8;未按則掃描開啟(關(guān)閉)鬧鐘功能的鍵按下MOVA,CLKFJZKEYCLK4;根據(jù)鬧鐘功能的標(biāo)記位跳轉(zhuǎn)顯示,若判斷鬧鐘功能關(guān)閉則 ;跳轉(zhuǎn)到KEYCLK4 顯示無標(biāo)志的鬧鐘LCALLS16;
9、若判斷鬧鐘功能開啟則掃描有無進(jìn)入調(diào)節(jié)的按鍵s16按下CJNEA,#7EH,KEYCLKF;未按下則繼續(xù)顯示有標(biāo)記的鬧鐘界面AJMPKEYCLK2;按下后則又進(jìn)入調(diào)節(jié)界面KEYCLK2;-MARK3:LJMP MARK1 ;地址差跳遠(yuǎn)無法跳轉(zhuǎn),此處進(jìn)行中間跳轉(zhuǎn)到鬧鐘界面;-KEYSCAN:LCALLHOURMINUTE ;顯示時間PUSHACC ;為s12的判斷先把A入堆棧,否則s12出會出現(xiàn)判斷錯誤LCALLS4;查看有無切換鍵s4按下,按下跳轉(zhuǎn)顯示秒JZKEYSCAN1 MOVA,CLKF ;在顯示時間時判斷鬧鐘功能是否開啟,未開則跳轉(zhuǎn)顯示JZGOMOVA,R6 ;判斷是否與鬧鐘設(shè)置的時間相
10、等,R6-時CJNEA,CLKHOUR,GOMOVA,R5;R5-分CJNEA,CLKMIN,GOLCALLSOUND ;鬧鐘功能開啟,時分相等,則鬧鈴響;-GO:POPACC; 如果不pop,A=0一直成立,此時出現(xiàn)錯誤跳轉(zhuǎn)LCALLS12 ;查看有無進(jìn)入鬧鐘設(shè)置的鍵按下JZMARK3 ; 按下則跳入顯示鬧鐘設(shè)置界面LCALLS16;查看有無進(jìn)入調(diào)節(jié)鍵s16按下,按下進(jìn)入調(diào)節(jié)CJNE A,#7EH,KEYSCAN;未按下則 繼續(xù)顯示時間SMINUTE:LCALLMINUTE ;s16按下后進(jìn)入分調(diào)節(jié)顯示MOVTEMP,R5;將要調(diào)節(jié)的分鐘送入函數(shù)參數(shù)LCALLKEYADD1 ;進(jìn)入調(diào)節(jié)后查看
11、是否按下加法鍵s8,按下加一 LCALL KEYSUB1;進(jìn)入調(diào)節(jié)后查看是否按下減法鍵s8,按下減一 MOVA,TEMPSUBBA,#60;調(diào)節(jié)不超過60JCREMAIN2MOVTEMP,#0REMAIN2:MOVR5,TEMP;把運算完后的分鐘送出顯示LCALLS16CJNE A,#7EH,SMINUTE;沒有s16按下,繼續(xù)顯示分調(diào)節(jié)SHOUR: LCALLHOUR;按下后進(jìn)入顯示時調(diào)節(jié)MOVTEMP,R6;R6為 裝時 的寄存器,送入?yún)?shù)進(jìn)行調(diào)節(jié)LCALLKEYADD2LCALL KEYSUB2MOVA,TEMPSUBBA,#24;調(diào)節(jié)不超過24JCREMAIN3MOVTEMP,#0RE
12、MAIN3:MOVR6,TEMPLCALLS16 ;再次按下s16鍵可確定時間調(diào)節(jié)完成CJNE A,#7EH,SHOURAJMPKEYSCAN;調(diào)節(jié)完后重新正常顯示時間;-;-KEYSCAN1:LCALLSHOWSECOND;按切換鍵s4后進(jìn)入的秒顯示LCALLS4;與時間顯示的時候一樣查看有無切換模式的鍵按下JZKEYSCAN2;按下則跳轉(zhuǎn)顯示日期LCALLS12;此處為查看有無進(jìn)入鬧鐘功能的鍵按下,有則跳轉(zhuǎn)JZMARK1LCALLS16;若無鬧鐘鍵按下,查看有無進(jìn)入調(diào)節(jié)的鍵s16按下CJNE A,#7EH,KEYSCAN1SMS:LCALLMS;調(diào)節(jié)鍵按下顯示需要調(diào)節(jié)內(nèi)容MOVA,COUN
13、T ;與之前的一樣把調(diào)節(jié)參數(shù)送入進(jìn)行調(diào)節(jié),此處調(diào)姐秒顯示的低位MOVTEMP,ALCALLKEYADD1LCALL KEYSUB1MOVA,TEMPSUBBA,#60;調(diào)節(jié)不超過60JCREMAIN4MOVTEMP,#0MOVA,TEMPREMAIN4:MOVA,TEMPMOVCOUNT,ALCALLS16 ;查看有無切換調(diào)節(jié)內(nèi)容的鍵s16按下CJNE A,#7EH,SMS;沒有s16鍵按下則顯示原先調(diào)節(jié)內(nèi)容SSECOND: LCALLSECOND ;有鍵s16按下則顯示進(jìn)入秒的調(diào)節(jié)MOVTEMP,R4 ;參數(shù)送入進(jìn)行調(diào)節(jié)LCALLKEYADD2 LCALL KEYSUB2MOVA,TEMPS
14、UBBA,#60;調(diào)節(jié)不超過60JCREMAIN9MOVTEMP,#0REMAIN9:MOVR4,TEMPLCALLS16 ;再次按下s16鍵可確定時間調(diào)節(jié)完成CJNE A,#7EH,SSECOND ;未按下則繼續(xù)顯示選中的調(diào)節(jié)內(nèi)容AJMPKEYSCAN1;-MARK1:LJMPKEYCLK;地址差跳遠(yuǎn)無法跳轉(zhuǎn),此處進(jìn)行中間跳轉(zhuǎn)到鬧鐘界面;-KEYSCAN2:LCALLSHOWDAY ;此處為日期顯示,當(dāng)切換模式鍵按下兩下后進(jìn)入顯示LCALLS4 ;與時間顯示的時候一樣查看有無切換模式的鍵按下JZKEYSCAN3;按下則跳轉(zhuǎn)顯示年份LCALLS12;此處為查看有無進(jìn)入鬧鐘功能的鍵按下,有則跳轉(zhuǎn)
15、JZMARK1LCALLS16;若無鬧鐘鍵按下,查看有無進(jìn)入調(diào)節(jié)的鍵s16按下CJNE A,#7EH,KEYSCAN2SDAY:LCALLDAY;調(diào)節(jié)鍵按下顯示需要調(diào)節(jié)內(nèi)容,此處為日MOV TEMP,R3 ; 把日期寄存器R2的值送入臨時變量用于調(diào)節(jié)LCALLKEYADD1;調(diào)用加減按鍵掃描,按下后進(jìn)行操作LCALL KEYSUB1MOVA,TEMPSUBBA,#32;調(diào)節(jié)不超過31JCREMAIN5MOVTEMP,#0REMAIN5:MOVR3,TEMPLCALLS16 ;查看有無切換調(diào)節(jié)內(nèi)容的鍵s16按下CJNE A,#7EH,SDAY;沒有s16鍵按下則顯示原先調(diào)節(jié)內(nèi)容SSMOUNTH:
16、LCALLMOUNTH;有鍵s16按下則顯示進(jìn)入月的調(diào)節(jié)MOV TEMP,R2LCALLKEYADD2LCALL KEYSUB2MOVA,TEMPSUBBA,#13;調(diào)節(jié)不超過12JCREMAIN6MOVTEMP,#0REMAIN6:MOV R2,TEMPLCALLS16;再次按下s16鍵可確定時間調(diào)節(jié)完成CJNE A,#7EH,SSMOUNTH;未按下則繼續(xù)顯示選中的調(diào)節(jié)內(nèi)容AJMPKEYSCAN2;-;-KEYSCAN3:LCALLSHOWYEAR;此處為日期顯示,當(dāng)切換模式鍵按下三下后進(jìn)入顯示LCALLS4JZSHOW0;代碼的內(nèi)容除了顯示的內(nèi)容不同其他和以上的一樣LCALLS12JZM
17、ARK1LCALLS16CJNE A,#7EH,KEYSCAN3SYEAR1:LCALLYEAR1MOVTEMP,R1LCALLKEYADD1LCALL KEYSUB1MOVA,TEMPSUBBA,#100;調(diào)節(jié)不超過99JCREMAIN7MOVTEMP,#0REMAIN7:MOVR1,TEMPLCALLS16 ; CJNE A,#7EH,SYEAR1SYEAR2: LCALLYEAR2MOVTEMP,R0LCALLKEYADD2LCALL KEYSUB2MOVA,TEMPSUBBA,#100;調(diào)節(jié)不超過99JCREMAIN8MOVTEMP,#0REMAIN8:MOVR0,TEMPLCALLS
18、16CJNE A,#7EH,SYEAR2AJMPKEYSCAN3;-MARK:LJMPKEYSCAN ;地址差跳遠(yuǎn)無法跳轉(zhuǎn),此處進(jìn)行中間跳轉(zhuǎn)到時間顯示界面;-SHOW0:MOV DMS,#0;切換鍵按下四次后此時切換到運動秒表計時從0開始計時MOV DMIN,#0MOV DSECOND,#0LCALLSHOWDD ; 剛進(jìn)入運動秒表模式,顯示全為0LCALLS4JZMARKLCALLS16CJNEA,#7EH,SHOW0 ;運動秒表開始鍵按下,則計時開始,否則繼續(xù)顯示0SETBTR1;開啟定時器1SHOWD:LCALLSHOWDD;開始鍵s16按下后顯示變化的數(shù)字LCALLS4;查看有無模式顯
19、示鍵的按下JZMARK;按下則跳轉(zhuǎn)顯示LCALLS16;查看s16有無按下CJNEA,#7EH,SHOWD ;再次按下該鍵s16,停止計時CLRTR1;關(guān)閉定時器1SHOWTING:LCALLSHOWDD;顯示為定時的內(nèi)容LCALLS4;查看有無模式顯示鍵的按下JZMARKLCALLS16CJNEA,#7EH,SHOWTING ;再次按下s16,顯示繼續(xù)上次 狀態(tài)開始計時SETBTR1;再次開啟定時器SHOWTING1:LCALLSHOWDD;顯示定時變化的定時內(nèi)容LCALLS4JZMARKLCALLS16CJNEA,#7EH,SHOWTING1;再按一下s16再次進(jìn)入暫停狀態(tài)CLRTR1SH
20、OWTING2:LCALLSHOWDDLCALLS4JZMARKLCALLS16CJNEA,#7EH,SHOWTING2AJMPSHOW0;再按一下s16 內(nèi)容清零,重新進(jìn)入初始化運動秒表模式;-此段主要為調(diào)節(jié)、顯示的過程內(nèi)容;*主程序結(jié)束*;-出程序結(jié)束,一下為各個子函數(shù);向74hc595發(fā)送一個字,并顯示數(shù)據(jù);-SENDBYTE: MOV BYTE,A;送入需要寫入鎖存器的參數(shù) MOV A, #1;用1來移位選取各個位的數(shù)據(jù) ANL A,BYTE;用與 來選取數(shù)據(jù) JNZ SEND CLR DAT;與后 結(jié)果為0則送入0 CLR SCK;將寫入的數(shù)據(jù)進(jìn)行右移 SETB SCK AJMP L
21、OOP;跳轉(zhuǎn) 繼續(xù)重復(fù)7次SEND: SETB DAT;與后結(jié)果不為0,則送入數(shù)據(jù)1 CLR SCK SETB SCK ;-送入第一位數(shù)據(jù)LOOP: MOV R7,#7 MOV A, #1LOOP1: RL A MOV B,A ANL A,BYTE JNZ SEND1SEND0: CLR DAT;送0 AJMP SUOCUNSEND1: SETB DAT;送1 AJMP SUOCUN SUOCUN: CLR SCK SETB SCK MOV A,B DJNZ R7,LOOP1 CLR RCK SETB RCK RET ;-以上為數(shù)據(jù)進(jìn)行輸入鎖存DISPLAY: ACALL JISUANDISP
22、LAY1: MOV P0,#00H MOV A,GEWEI ACALL SENDBYTE ORL P0,#08H;給出最左邊數(shù)碼管的位選 MOV R7,#10H LCALL DLY ;-顯示最左邊的數(shù)碼管 MOV P0,#00H MOV R7,#03H LCALL DLY MOV A,SHIWEI ACALL SENDBYTE ORL P0,#04H;給出第二位數(shù)碼管的位選 MOV R7,#10H LCALL DLY ;-顯示第二位數(shù)碼管 MOV P0,#00H MOV R7,#03H LCALL DLY MOV A,BAIWEI ACALL SENDBYTE ORL P0,#02H;給出第三
23、位數(shù)碼管的位選 MOV R7,#10H LCALL DLY ;-顯示第三位數(shù)碼管 MOV P0,#00H MOV R7,#03H LCALL DLY MOV A,QIANWEI ACALL SENDBYTE ORL P0,#01H;給出第三位數(shù)碼管的位選 MOV R7,#10H LCALL DLY ;-顯示第四位數(shù)碼管 RET ; -以上為數(shù)據(jù)顯示;計算各位數(shù)的值把要顯示的數(shù)進(jìn)行分解;- JISUAN: MOV A,TEMP1 MOV B,#10 DIV AB MOV TEMP1,B MOVC A,A+DPTR MOV SHIWEI,A MOV A,TEMP1 MOVC A,A+DPTR MO
24、V GEWEI,A MOV A,TEMP2 MOV B,#10 DIV AB MOV TEMP2,B MOVC A,A+DPTR MOV QIANWEI,A MOV A,TEMP2 MOVC A,A+DPTR MOV BAIWEI,A RET ;-以上為計算各個位數(shù);-;顯示高兩位數(shù)(用于調(diào)節(jié)的時候顯示);-DISPLAY4: ACALL JISUAN MOV P0,#00H MOV A,BAIWEI ACALL SENDBYTE ORL P0,#02H MOV R7,#03H LCALL DLY ;-顯示第三位數(shù)碼管 MOV P0,#00H MOV R7,#03H LCALL DLY MOV
25、 A,QIANWEI ACALL SENDBYTE ORL P0,#01H MOV R7,#03H LCALL DLY ;-顯示第四位數(shù)碼管 RET;-;只顯示低兩位數(shù)(用于調(diào)節(jié)的時候顯示);-DISPLAY2: LCALL JISUAN MOV P0,#00H MOV A,GEWEI LCALL SENDBYTE ORL P0,#08H MOV R7,#03H LCALL DLY ;-顯示最左邊的數(shù)碼管 MOV P0,#00H MOV R7,#03H LCALL DLY MOV A,SHIWEI LCALL SENDBYTE ORL P0,#04H MOV R7,#03H LCALL DLY
26、 ;-顯示第二位數(shù)碼管 MOV P0,#00H MOV R7,#03H LCALL DLY RET;-;顯示時間子程序;-HOURMINUTE: MOV TEMP2,R6 MOV TEMP1,R5 LCALL JISUAN ORL BAIWEI,#01H ;-第三個數(shù)碼管顯示小數(shù)點 LCALLDISPLAY1 RET ;由于只有四個數(shù)碼管,此處顯示時、分SHOWSECOND: MOV TEMP2,R4 MOV A,COUNT MOV TEMP1,A LCALLJISUAN ORLBAIWEI,#01H LCALL DISPLAY1 RET ;此處單獨顯示秒 SHOWYEAR: MOV TEMP
27、2,R0 MOV TEMP1,R1 LCALL DISPLAY RETSHOWDAY: MOV TEMP2,R2 MOV TEMP1,R3 LCALL DISPLAY RETSHOWCLK: MOVTEMP2,CLKHOUR MOVTEMP1,CLKMIN LCALLJISUAN ORLBAIWEI,#01H LCALLDISPLAY1 RETSHOWCLK1: MOVTEMP2,CLKHOUR MOVTEMP1,CLKMIN LCALLJISUAN ORLBAIWEI,#01H ORLGEWEI,#01H LCALLDISPLAY1 RET;-;調(diào)節(jié)時間日期時獨立顯示每兩位(用于調(diào)節(jié)的時候顯
28、示);-MS:MOVTEMP1,COUNTLCALLDISPLAY2RETSECOND:MOVTEMP2,R4LCALLDISPLAY4RETMINUTE:MOVTEMP1,R5LCALLDISPLAY2RETHOUR:MOVTEMP2,R6LCALLDISPLAY4RETDAY:MOVTEMP1,R3LCALLDISPLAY2RETMOUNTH:MOVTEMP2,R2LCALLDISPLAY4RETYEAR1:MOVTEMP1,R1LCALLDISPLAY2RETYEAR2:MOVTEMP2,R0LCALLDISPLAY4RETSCLKMIN:MOVTEMP1,CLKMINLCALLDISP
29、LAY2RETSCLKHOUR:MOVTEMP2,CLKHOURLCALLDISPLAY4RET;-;鍵盤掃描函數(shù);-;切換調(diào)節(jié)顯示內(nèi)容鍵S16: MOV P2,#0FFH CLR P2.7 JB P2.0,S16END MOV R7,#18H LCALL DLY JNB P2.0,$ ;當(dāng)鍵盤松開時往下執(zhí)行否則停留在這一步 MOV A,#7EHS16END: RET;切換模式顯示內(nèi)容鍵S4: MOV P2,#0FFH CLR P2.7 JB P2.3,S4END MOV R7,#18H LCALL DLY JNB P2.3,$ ;當(dāng)鍵盤松開時往下執(zhí)行否則停留在這一步 MOV A,#0H;設(shè)置
30、掃描標(biāo)志位A=0S4END: RET;設(shè)置鬧鐘鍵掃描與減法鍵位同一鍵s12S12: MOV P2,#0FFH CLR P2.7 JB P2.1,S12END MOV R7,#18H LCALL DLY JNB P2.1,$ ;當(dāng)鍵盤松開時往下執(zhí)行否則停留在這一步 MOV A,#0;設(shè)置掃描標(biāo)志位A=0S12END: RET;用于確定啟動鬧鐘功能的鍵盤掃描,與加法鍵位同一個S8: MOV P2,#0FFH CLR P2.7 JB P2.2,S8END MOV R7,#18H LCALL DLY JNB P2.2,$ ;當(dāng)鍵盤松開時往下執(zhí)行否則停留在這一步 MOV A,CLKF CPLA;設(shè)置掃描
31、標(biāo)志位A=1 MOVCLKF,AS8END: RET;單步、連續(xù)調(diào)節(jié)加法鍵;-;-KEYADD2: MOV P2,#0FFH CLR P2.7 JB P2.2,ADDEND2 MOV R7,#18H LCALL DLYJT1: JNB P2.2,KT1 INC TEMP AJMP ADDEND2KT1: INC KTIME MOV R7,#10H LCALL DLY;用于調(diào)節(jié)高兩位 MOV A,KTIME CJNE A,#30,JT1 ADD2: INC TEMP MOVA,TEMP CJNEA,#99,ON2 MOVTEMP,#0ON2: MOV R7,TEMP MOV TEMP2,R7 L
32、CALL DISPLAY4 MOV R7,#30H LCALL DLY JNB P2.2,ADD2 ADDEND2: RET KEYADD1: MOV P2,#0FFH CLR P2.7 JB P2.2,ADDEND1 MOV R7,#18H LCALL DLYJT2: JNB P2.2,KT2 INC TEMP AJMP ADDEND1;用于調(diào)節(jié)低兩位KT2: INC KTIME MOV R7,#10H LCALL DLY MOV A,KTIME CJNE A,#30,JT2 ADD1: INC TEMP MOVA,TEMP CJNEA,#99,ON3 MOVTEMP,#0ON3: MOV
33、R7,TEMP MOV TEMP1,R7 LCALL DISPLAY2 MOV R7,#30H LCALL DLY JNB P2.2,ADD1 ADDEND1: RET;-;單步、連續(xù)調(diào)節(jié)減法鍵KEYSUB2: MOV P2,#0FFH CLR P2.7 JB P2.1,SUBEND2 MOV R7,#18H LCALL DLYJT3: JNB P2.1,KT3 DEC TEMP AJMP SUBEND2KT3: INC KTIME MOV R7,#10H ;用于調(diào)節(jié)高兩位 LCALL DLY MOV A,KTIME CJNE A,#30,JT3 SUB2: DEC TEMP MOVA,TEMP CJNEA,#0,ON MOVTEMP,#99ON: MOV R7,TEMP MOV TEMP2,R7 LCALL DISPLAY4 MOV R7,#30H LCALL DLY JNB P2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)工作群組管理制度
- 食品公司軍事化管理制度
- 倉庫進(jìn)出物資管理制度
- pdca醫(yī)院管理制度
- 企業(yè)產(chǎn)權(quán)收購管理制度
- 企業(yè)壞賬考核管理制度
- 企業(yè)叉車安全管理制度
- 牙髓炎的定義
- 企業(yè)融資資產(chǎn)管理制度
- vocs臺賬管理制度
- 2002版《水利工程施工機(jī)械臺時費定額》
- 國家開放大學(xué)本科《理工英語4》一平臺機(jī)考第二大題詞匯與結(jié)構(gòu)總題庫
- 山東省菏澤市鄄城縣2023-2024學(xué)年七年級下學(xué)期7月期末英語試題
- 國際法(第七版) 課件 第九章 外交和領(lǐng)事關(guān)系法
- 國家開放大學(xué)本科《會計實務(wù)專題》形考作業(yè)一至四試題及答案
- 2024年哈爾濱鐵道職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫各版本
- 水表檢定記錄全冊
- 安徽省合肥市廬陽區(qū)2022-2023學(xué)年五年級下學(xué)期期末科學(xué)試卷
- DG-TJ08-2411-2023 地下結(jié)構(gòu)隔排水主動抗浮技術(shù)標(biāo)準(zhǔn)
- 三期(孕期、產(chǎn)期、哺乳期)員工風(fēng)險評估
- 國家開放大學(xué)《土地利用規(guī)劃》本章自測參考答案
評論
0/150
提交評論