數(shù)字鐘在單片機上的實現(xiàn)(匯編語言)(共38頁)_第1頁
數(shù)字鐘在單片機上的實現(xiàn)(匯編語言)(共38頁)_第2頁
數(shù)字鐘在單片機上的實現(xiàn)(匯編語言)(共38頁)_第3頁
數(shù)字鐘在單片機上的實現(xiàn)(匯編語言)(共38頁)_第4頁
數(shù)字鐘在單片機上的實現(xiàn)(匯編語言)(共38頁)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、武漢大學電子信息學院電子系統(tǒng)綜合設計課程論文數(shù)字鐘在單片機上的實現(xiàn)(匯編語言)專 業(yè): 年 級: 作 者: _ _ 指導教師: 2012年 06 月 29 日II目 錄1 作品的背景與意義12 功能指標設計12.1設計要求12.1.1 基本要求12.1.2 拓展要求12.2 功能設計方案13 作品方案設計23.1總體方案的選擇23.2模塊劃分及分析33.3 單模塊設計流程圖34 模塊源程序75 系統(tǒng)測試35測試數(shù)據(jù):366 心得體會36電子系統(tǒng)綜合設計課程論文1 作品的背景與意義數(shù)字鐘是一種用數(shù)字電路技術實現(xiàn)時、分、秒計時的鐘表。與機械鐘相比具有更高的準確性和直觀性,具有更長的使用壽命,已得到

2、廣泛的使用。數(shù)字鐘的設計方法有許多種,例如可用中小規(guī)模集成電路組成電子鐘,也可以利用專用的電子鐘芯片配以顯示電路及其所需要的外圍電路組成電子鐘,還可以利用單片機來實現(xiàn)電子鐘等等。這些方法都各有其特點,其中利用單片機實現(xiàn)的電子鐘具有編程靈活,以便于功能的擴展。2 功能指標設計2.1設計要求2.1.1 基本要求1. 設計一個精確的1秒定時器; 2. 根據(jù)1秒定時器,設計一個帶小時、分鐘、秒的時鐘,并將小時、分鐘、秒顯示在LED上; 3. 設計小時、分鐘、秒的修改按鍵,可分別調(diào)整小時、分鐘、秒(按鍵設計參考電子表)。 2.1.2 拓展要求1. 增加小時、分鐘、秒的鍵盤直接修改功能; 2. 設計鬧鐘功

3、能,最多支持5個鬧鐘,可分別查看和修改鬧鐘時間,可分別設置鬧鐘開關;3. 增加萬年歷功能。2.2 功能設計方案1. 實現(xiàn)正常走時(秒-分-時-日-月-年進位);2. 能夠設置時間和日期;3. 能夠自動區(qū)分平閏年和大小月及2月;4. 具有5個鬧鐘及其設置功能;5. 在任何設置狀態(tài)下,修改位會閃爍顯示。3 作品方案設計3.1總體方案的選擇以T0計時器中斷產(chǎn)生1s信號,T1計時器中斷刷新數(shù)碼管。系統(tǒng)軟件流程圖如下所示:設計時使T0優(yōu)先級高于T1以確保準確計時,初始化完成后,程序一直處于主循環(huán)模塊,主循環(huán)模塊中有設置按鍵的檢測模塊,當遇到設置信號暫時跳出主循環(huán)去執(zhí)行相應的設置模塊,時間設置,日期設置,

4、鬧鐘設置3大模塊彼此之間是相互獨立且平行的,他們和主循環(huán)模塊也不干擾。因此,當進入任何一個模塊時,其他模塊中的所有功能和按鍵都暫時失效,程序由始至終中斷服務一直打開。3.2模塊劃分及分析MAIN:初始化程序模塊進行初值的分配(棧頂?shù)刂?,初始時間,初始日期,初始化鬧鐘及相關標志地址)各定時器,中斷初始化。ZHUXUNHUAN:主循環(huán)模塊程序主要執(zhí)行部分,包含鬧鐘檢測,獨立按鍵檢測(日期時間轉換檢測),矩陣按鍵檢測(鬧鐘設置,日期設置,時間設置)3大檢測部分。SERVE:1s中斷服務中斷走時:秒分時日月年XIAGSHI:刷屏中斷服務(顯示中斷服務)以人眼不能分辨的頻率一次刷新8或6位數(shù)碼管來顯示時

5、間或日期及其他設置界面。SHIJIANSHEZHI:時間設置模塊修改時間,其中修改位閃爍顯示加以區(qū)分,內(nèi)嵌了時間的自動檢測和校正代碼,既不允許修改出現(xiàn)不存在的時間。WANNIANLISHEZHI:日期設置模塊修改日期,同樣的修改位閃爍加以區(qū)分,內(nèi)嵌了日期的自動檢測和校正代碼,既不允許出現(xiàn)不存在的日期。NAOZHONGSHEZHI:鬧鐘設置模塊修改鬧鐘時間,鬧鐘開關的置換,修改位閃爍加以區(qū)分,內(nèi)嵌時間自動監(jiān)測和校正代碼已設置正確的時間。3.3 單模塊設計流程圖 在完成的整體設計和模塊劃分后,便進入到工作量最大的單模塊流程設計。主循環(huán):說明:1.初始化時,將保存5個鬧鐘(按時分秒順序排放)的15個

6、地址50H5EH均清零,將對應的5個鬧鐘開關0AH0EH也都清零表示鬧鐘開關狀態(tài),檢測鬧鐘時,從第一個鬧鐘開始分別檢測開關,時分秒只要有任何一項不符合及即檢測下一個鬧鐘,到最后一個鬧鈴也不符合時,進入按鍵檢測部分。2.按鍵檢測包含獨立按鍵和矩陣按鍵兩部分,獨立按鍵很簡單,矩陣按鍵則編寫檢測子程序,將檢測到的鍵值保存在寄存器R7中,沒有檢測到按鍵時不改變R7的數(shù)值。因此,檢測器先將R7里面放入#0FH(只要不是#00H#0CH中的數(shù)即可),然后調(diào)用矩陣鍵盤檢測子程序,再來通過檢測R7的數(shù)值來判斷有無按鍵按下或按下的那個鍵。時間設置模塊: 說明:1.進入時間設置模塊后,時的十位開始閃爍,通過獨立按

7、鍵s17,s18可以向右向左移動閃爍即修改位,修改正確的判斷實際上是對將要修改完成的時間進行合理性的判斷,如合理則修改時間,若不合理則此次按鍵失效。2.檢測到退出信號后,先要將所有初始化過程中改變了的標志位還原,如閃爍開關位等,再調(diào)回主循環(huán)。日期設置模塊: 日期設置模塊和時間設置模塊幾乎完全一樣,所不同的是初始化不一樣及日期設置里面有8位數(shù)碼管需要刷新,而且由于日期比時間復雜,因此該模塊中有兩處日期校正部分,一部分是對按鍵修改是否正確的判斷,使用方法也是使相應按鍵暫時失效(例如:修改前日期是2012:03:31,那么此時月份上得十位1-9所以數(shù)字都暫時失效,日個位上的2-9所以數(shù)字也都全部暫時

8、失效);另一部分是修改后的日期校正,通過調(diào)用該子程序,防止上一部分不能消除的錯誤日期設置(例如:修改前日期是2012:01:31,這時修改月份個位為2則日期變?yōu)?012:02:31,顯然這樣的日期是不存在的,這時校正程序將日期進位,日期更改為2012:03:01)。這部分校正模塊在后面的1s中斷服務中也有使用。下圖為該模塊流程圖:鬧鐘設置模塊: 鬧鐘設置模塊和時間設置一是大同小異,主要區(qū)別在于多了一部分鬧鈴開關的檢測。下圖為該模塊流程圖:4 模塊源程序 ORG 0000H AJMP MAIN ORG 000BH AJMP SERVE ORG 001BH AJMP XIANSHITAB: DB

9、3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,40H ;段選表0,1,2,3,4,5,6,7,8,9,熄滅,-TAB1: DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH,00H,40H;段選表 帶小數(shù)點,同上MAIN: /*/初始化 MOV SP,#60H ;棧指針地址賦值 MOV 3CH,#0CH ;設置界面修改位的閃爍頻率 具體代碼在SERVE 1秒中斷服務中 MOV 37H,#0FFH ;臨時地址 預留給39H MOV 39H,#0FFH ;段位標志 8位數(shù)據(jù)對應8個數(shù)碼管 為0的那位數(shù)碼管始

10、終暗 MOV 3AH,#11111101B ;界面轉換標志*01為時間界面 取反后 *10為萬年歷界面 *00為設置鬧鐘界面 CLR A ;時間萬年歷初始化 時間00:00:00 萬年歷2000。01。01 MOV 30H,A ;時 MOV 31H,A ;分 MOV 32H,A ;秒 MOV 33H,#01H ;日 MOV 34H,#01H ;月 MOV 35H,A ;年 只能顯示2000-2099的時間 MOV 3DH,A ;數(shù)碼管閃爍開關 初始化為關閉狀態(tài) 取反后 11111111 打開 MOV 40H,A ;鬧鐘設置界面預留地址地址 MOV 41H,A MOV 42H,A MOV 43H

11、,A MOV 44H,A MOV 45H,A MOV 46H,A MOV 47H,A MOV 50H,A ;鬧鐘1 時 MOV 51H,A ;鬧鐘1 分 MOV 52H,A ;鬧鐘1 秒 MOV 0AH,A ;鬧鐘1 開關 00000000為關閉狀態(tài) 取反后打開鬧鐘1 MOV 53H,A ;同上 MOV 54H,A MOV 55H,A MOV 0BH,A MOV 56H,A MOV 57H,A ;同上 MOV 58H,A MOV 0CH,A MOV 59H,A ;同上 MOV 5AH,A MOV 5BH,A MOV 0DH,A MOV 5CH,A ;同上 MOV 5DH,A MOV 5EH,A

12、 MOV 0EH,A/中斷,定時器初始化 MOV TMOD,#11H MOV 38H,#14H;T0定時器每50ms溢出一次 溢出20次為一秒 SETB PT0 ;優(yōu)先級設置 1秒中斷為最高級 屏幕刷新優(yōu)先級低 SETB PT1 SETB ET0 SETB ET1 SETB EA MOV TH1,#0DFH ;T1定時器 設置顯示掃描頻率 MOV TL1,#0E0H MOV TH0,#3CH ;T0定時器 設置為50ms MOV TL0,#0B0H SETB TR1 SETB TR0/*/程序主循環(huán) ZHUXUNHUAN:/鬧鐘檢測 MOV A,0AH JZ NAO2 ;檢測鬧鐘開關 若關檢測

13、下一個鬧鐘,否則檢測時間是否為鬧鐘設定時間 MOV A,30H CJNE A,50H,NAO2 MOV A,31H CJNE A,51H,NAO2 MOV A,32H CJNE A,52H,NAO2 AJMP XIANG ;時間為鬧鐘設定時間吻合 進入鬧鈴程序 下同NAO2: MOV A,0BH JZ NAO3 MOV A,30H CJNE A,53H,NAO3 MOV A,31H CJNE A,54H,NAO3 MOV A,32H CJNE A,55H,NAO3 AJMP XIANGNAO3: MOV A,0CH JZ NAO4 MOV A,30H CJNE A,56H,NAO4 MOV A

14、,31H CJNE A,57H,NAO4 MOV A,32H CJNE A,58H,NAO4 AJMP XIANGNAO4: MOV A,0DH JZ NAO5 MOV A,30H CJNE A,59H,NAO5 MOV A,31H CJNE A,5AH,NAO5 MOV A,32H CJNE A,5BH,NAO5 AJMP XIANGNAO5: MOV A,0EH JZ BU MOV A,30H CJNE A,5CH,BU MOV A,31H CJNE A,5DH,BU MOV A,32H CJNE A,5EH,BU AJMP XIANG/檢測獨立按鍵BU: JB T0,ZHU1;檢測s19

15、是否按下 按下進入萬年歷界面,否則檢測矩陣鍵盤 MOV A,3AH;界面轉換標志取反即可使得時間和萬年歷界面相互轉換 CPL A MOV 3AH,A/檢測矩陣鍵盤/檢測到按鍵1,2,3,4,5時進入對應的鬧鐘設置界面 檢測到0BH(對應s11)進入時間設置界面 檢測到0CH(對應s12)進入萬年歷設置界面/若未檢測到按鍵 則跳回主程序繼續(xù)下一個檢測周期ZHU1: MOV R7,#0FH ACALL JIANCEANJIAN ;矩陣鍵盤檢測子程序 將檢測到的鍵值存入r7 CJNE R7,#0FH,ZHU2 AJMP ZHUXUNHUANZHU2: CJNE R7,#0BH,ZHU3 AJMP S

16、HIJIANSHEZHIZHU3: CJNE R7,#0CH,ZHU4 AJMP WANNIANLISHEZHIZHU4: CJNE R7,#01H,ZHU5 AJMP NAOZHONGSHEZHIZHU5: CJNE R7,#02H,ZHU6 AJMP NAOZHONGSHEZHIZHU6: CJNE R7,#03H,ZHU7 AJMP NAOZHONGSHEZHIZHU7: CJNE R7,#04H,ZHU8 AJMP NAOZHONGSHEZHIZHU8: CJNE R7,#05H,ZHUXUNHUAN0 AJMP NAOZHONGSHEZHIZHUXUNHUAN0: AJMP ZHUX

17、UNHUAN/*/1秒中斷服務 見書141例6-6SERVE: CLR EA PUSH B PUSH DPH PUSH DPL PUSH PSW PUSH ACC MOV TH0,#3CH MOV TL0,#0B0H MOV A,3DH JZ SE MOV A,3CH CJNE A,#6,SE0 MOV 39H,37HSE0: DJNZ 3CH,SE MOV 39H,#0FFH MOV 3CH,#0CHSE: DJNZ 38H,RETURN MOV 38H,#14H MOV A,#01H ADD A,32H MOV 32H,A CJNE A,#3CH,RETURN MOV 32H,#00H M

18、OV A,#01H ADD A,31H MOV 31H,A CJNE A,#3CH,RETURN MOV 31H,#00H MOV A,#01H ADD A,30H MOV 30H,A CJNE A,#18H,RETURN MOV 30H,#00H MOV A,#01H ADD A,33H MOV 33H,A ACALL NYRRETURN: POP ACC POP PSW POP DPL POP DPH POP B SETB EA RETI/*/年月日校正子程序 用于萬年歷進位和萬年歷設置 防止出現(xiàn)不存在的時間NYR: MOV A,33H CJNE A,#32,MONTH ;日為32時,月進

19、位日置1 MOV 33H,#01H AJMP MONTH0MONTH: CJNE A,#31,MONTH1 ;日為31時 分辨大小月及2月 MOV A,34H CJNE A,#4,MONTH2 MOV 33H,#01H AJMP MONTH0MONTH2: CJNE A,#2,MONTH6 MOV 33H,#01H AJMP MONTH0MONTH6: CJNE A,#6,MONTH9 MOV 33H,#01H AJMP MONTH0MONTH9: CJNE A,#9,MONTH11 MOV 33H,#01H AJMP MONTH0MONTH11: CJNE A,#11,RETURN0 MOV

20、 33H,#01H AJMP MONTH0MONTH1: CJNE A,#30,MONTH29 ;日為30時分辨2月 MOV A,34H CJNE A,#02H,RETURN0 MOV 33H,#01H AJMP MONTH0MONTH29: CJNE A,#29,RETURN0 ;日為29時分辨閏平年2月 MOV A,34H CJNE A,#02H,RETURN0 MOV A,35H MOV B,#04H DIV AB MOV A,B JNZ MONO AJMP RETURN0MONO: MOV 33H,#01HMONTH0: MOV A,#01H ;月進位 ADD A,34H MOV 34

21、H,A CJNE A,#0DH,RETURN0 MOV 34H,#01H MOV A,#01H ADD A,35H MOV 35H,A CJNE A,#100,RETURN0 ;年最多只能99 MOV 35H,#00RETURN0: RET/*/屏幕刷新中斷XIANSHI: PUSH B PUSH DPH PUSH DPL PUSH PSW PUSH ACC MOV TH1,#0DFH MOV TL1,#0E0H MOV A,3AH JNB ACC.0,WANNIANLI ;界面顯示判斷/時間界面 MOV A,32H MOV B,#0AH DIV AB MOV 10H,B MOV 11H,A

22、MOV A,31H MOV B,#0AH DIV AB MOV 12H,B MOV 13H,A MOV A,30H MOV B,#0AH DIV AB MOV 14H,B MOV 15H,A MOV 16H,#0AH MOV 17H,#0AH AJMP LIANG/萬年歷界面WANNIANLI: JNB ACC.1,SHEZHI MOV A,33H MOV B,#0AH DIV AB MOV 10H,B MOV 11H,A MOV A,34H MOV B,#0AH DIV AB MOV 12H,B MOV 13H,A MOV A,35H MOV B,#0AH DIV AB MOV 14H,B

23、MOV 15H,A MOV 16H,#00H MOV 17H,#02H AJMP LIANG/鬧鐘設置界面SHEZHI: MOV 10H,40H MOV 11H,41H MOV 12H,42H MOV 13H,43H MOV 14H,44H MOV 15H,45H MOV 16H,46H MOV 17H,47H/刷新屏幕LIANG: MOV R6,#11111110B ;位選 MOV R0,#10H ;利用r0間接訪問功能實現(xiàn)選中位顯示控制 MOV R4,#8H ;刷新8次MAIN0: ;位選子程序 ACALL L CJNE R0,#12H,TT1 MOV DPTR,#TAB1 AJMP K

24、TT1: CJNE R0,#14H,TT2 MOV DPTR,#TAB1 AJMP KTT2: MOV DPTR,#TABK: MOV A,R0 MOVC A,A+DPTR MOV R5,A/數(shù)碼管開關判斷 不刷新39H中對應為0的那段數(shù)碼管 MOV A,39H JNB ACC.0,AC0 JNB ACC.1,AC1 JNB ACC.2,AC2 JNB ACC.3,AC3 JNB ACC.4,AC4 JNB ACC.5,AC5 JNB ACC.6,AC6 JNB ACC.7,AC7 AJMP J0AC0: CJNE R4,#08H,J0 AJMP J1AC1: CJNE R4,#07H,J0

25、AJMP J1AC2: CJNE R4,#06H,J0 AJMP J1AC3: CJNE R4,#05H,J0 AJMP J1AC4: CJNE R4,#04H,J0 AJMP J1AC5: CJNE R4,#03H,J0 AJMP J1AC6: CJNE R4,#02H,J0 AJMP J1AC7: CJNE R4,#01H,J0 AJMP J1 J0: ACALL R ;段選子程序J1: MOV A,R6 RL A MOV R6,A INC R0 ACALL DELAY1 ;延時越長數(shù)碼管越亮 但過長導致刷新過慢數(shù)碼管不能同時全亮 MOV DPTR,#8200H MOV A,#00H MO

26、VX DPTR,A DJNZ R4,MAIN0 POP ACC POP PSW POP DPL POP DPH POP B RETIL: MOV DPTR,#8300H MOV A,R6 MOVX DPTR,A RETR: MOV DPTR,#8200H MOV A,R5 MOVX DPTR,A RET /*/延時子程序DELAY: ;延時20毫秒 用于矩陣鍵盤的檢測 MOV 3EH,#120LOOP1: MOV 3FH,#30LOOP2: DJNZ 3FH,LOOP2 DJNZ 3EH,LOOP1 RETMDELAY: MOV 3EH,#5MLOOP1: MOV 3FH,#0AAHMLOOP

27、2: DJNZ 3FH,MLOOP2 DJNZ 3EH,MLOOP1 RETDELAY1: MOV 3EH,#15LOOP11: MOV 3FH,#40LOOP21: DJNZ 3FH,LOOP21 DJNZ 3EH,LOOP11 RETDELAY0: MOV 3EH,#0FFHLOOP10: MOV 3FH,#0FFHLOOP20: DJNZ 3FH,LOOP20 DJNZ 3EH,LOOP10 RET/*/時間設置SHIJIANSHEZHI: MOV 39H,#11011111B;時的十位閃爍 MOV 37H,39H MOV 3DH,#0FFH;開閃爍開關M: JB T1,S1;檢測獨立按

28、按鍵s20 按下則退出時間設置 繼續(xù)進入主循環(huán) MOV 39H,#0FFH MOV 3DH,#00H AJMP ZHUXUNHUANS1: JB INT0,S2;閃爍位即修改為右移 MOV A,37H CJNE A,#11111110B,SS0 RR A RR A RRA MOV 37H,AS10: JNB INT0,S10;右移按鍵松開才繼續(xù)下面的程序 防止一次按鍵右移多位 下同 AJMP MSS0: RR A MOV 37H,AS11:;左移 JNB INT0,S11 AJMP MS2: JB INT1,M1 MOV A,37H CJNE A,#11011111B,SS1 RL A RL

29、A RLA MOV 37H,AS12: JNB INT1,S12 AJMP MSS1: RL A MOV 37H,AS13: JNB INT1,S13 AJMP M/檢測矩陣按鍵 修改時間 M1: MOV R7,#0FH ACALL JIANCEANJIAN CJNE R7,#0FH,SJSZ1 AJMP MSJSZ1: MOV A,37H ;檢測修改的是哪位 JB ACC.5,SJSZ2/修改時十位 只能修改為0,1,2 但時個位部位0,1,2,3時不能修改為2 CJNE R7,#00H,SJS1 AJMP LED6SJS1: CJNE R7,#01H,SJS2 AJMP LED6SJS2:

30、 CJNE R7,#02H,M AJMP LED6LED6: MOV A,30H MOV B,#0AH DIV AB MOV 1FH,B MOV B,#0AH MOV A,R7 MUL AB ADD A,1FH MOV 30H,A MOV A,37H RR A MOV 37H,A AJMP MSJSZ2: JB ACC.4,SJSZ3/修改時個位 但時十位為2時只能修改為0,1,2,3 MOV A,30H MOV B,#0AH DIV AB CJNE A,#02H,LED5 CJNE R7,#00H,SJS4 AJMP LED5SJS4: CJNE R7,#01H,SJS5 AJMP LED5

31、SJS5: CJNE R7,#02H,SJS6 AJMP LED5SJS6: CJNE R7,#03H,MM1 AJMP LED5MM1:AJMP MLED5: MOV B,#0AH MUL AB ADD A,R7 MOV 30H,A MOV A,37H RR A MOV 37H,A AJMP MSJSZ3: JB ACC.3,SJSZ4/修改分十位 只能修改為0,1,2,3,4,5 CJNE R7,#00H,SJ1 AJMP LED4 SJ1: CJNE R7,#01H,SJ2 AJMP LED4 SJ2: CJNE R7,#02H,SJ3 AJMP LED4 SJ3: CJNE R7,#0

32、3H,SJ4 AJMP LED4 SJ4: CJNE R7,#04H,SJ5 AJMP LED4 SJ5: CJNE R7,#05H,MM AJMP LED4 MM:AJMP MLED4: MOV A,31H MOV B,#0AH DIV AB MOV 1FH,B MOV A,R7 MOV B,#0AH MUL AB ADD A,1FH MOV 31H,A MOV A,37H RR A MOV 37H,A AJMP MSJSZ4: JB ACC.2,SJSZ5/修改分個位 MOV A,31H MOV B,#0AH DIV AB MOV B,#0AH MUL AB ADD A,R7 MOV 31

33、H,A MOV A,37H RR A MOV 37H,A AJMP MSJSZ5: JB ACC.1,SJSZ6/修改秒十位 只能改為0,1,2,3,4,5 CJNE R7,#00H,SJ10 AJMP LED2 SJ10: CJNE R7,#01H,SJ20 AJMP LED2 SJ20: CJNE R7,#02H,SJ30 AJMP LED2 SJ30: CJNE R7,#03H,SJ40 AJMP LED2 SJ40: CJNE R7,#04H,SJ50 AJMP LED2 SJ50: CJNE R7,#05H,MM0 AJMP LED2 MM0:AJMP MLED2: MOV A,32

34、H MOV B,#0AH DIV AB MOV 1FH,B MOV A,R7 MOV B,#0AH MUL AB ADD A,1FH MOV 32H,A MOV A,37H RR A MOV 37H,A AJMP MSJSZ6:/修改秒個位 MOV A,32H MOV B,#0AH DIV AB MOV B,#0AH MUL AB ADD A,R7 MOV 32H,A MOV 37H,#11011111B AJMP M/*/萬年歷設置WANNIANLISHEZHI: MOV 3AH,#0FEH ;轉換設置界面 MOV 39H,#11011111B ;設置閃爍位 MOV 37H,39H MOV

35、3DH,#0FFH ;開閃爍開關WM: ACALL NYR ;校正 萬年歷 JB T1,WS1 ;s20 按下 退出設置界面 MOV 39H,#0FFH ;關閃爍 MOV 3DH,#00H ;閃爍開關 關 MOV 3AH,#11111101B ;轉換成時間設置界面 AJMP ZHUXUNHUANWS1: JB INT0,WS2 ;修改位 右移 同上 MOV A,37H CJNE A,#11111110B,WSS0 RR A RR A RRA MOV 37H,AS20: JNB INT0,S20 AJMP WMWSS0: RR A MOV 37H,AS21: JNB INT0,S21 AJMP

36、WMWS2: JB INT1,WM1 ;修改位左移 MOV A,37H CJNE A,#11011111B,WSS1 RL A RL A RL A MOV 37H,AS23: JNB INT1,S23 AJMP WMWSS1: RL A MOV 37H,AS24: JNB INT1,S24 AJMP WM/矩陣鍵盤檢測 修改萬年歷 WM1: MOV R7,#0FH ACALL JIANCEANJIAN CJNE R7,#0FH,WSJSZ1 AJMP WMWSJSZ1: MOV A,37H;檢測修改位 JB ACC.5,WSJSZ2/修改年十位 MOV A,35H MOV B,#0AH DIV

37、 AB MOV 1FH,B MOV A,R7 MOV B,#0AH MUL AB ADD A,1FH MOV 35H,A MOV A,37H RR A MOV 37H,A AJMP WMWSJSZ2: JB ACC.4,WSJSZ3/修改年個位 MOV A,35H MOV B,#0AH DIV AB MOV B,#0AH MUL AB ADD A,R7 MOV 35H,A MOV A,37H RR A MOV 37H,A AJMP WMWSJSZ3: JB ACC.3,WSJSZ4/修改月十位 只能為0,1 但月個位不為0,1,2是不能修改為1月個位為0時不能修改為0 CJNE R7,#00H

38、,WSJ1 MOV A,34H MOV B,#0AH DIV AB MOV A,B CJNE A,#00H,WLED4 AJMP WMMM WSJ1: CJNE R7,#01H,WMMM MOV A,34H MOV B,#0AH DIV AB MOV A,B CJNE A,#00H,L1 AJMP WLED4L1: CJNE A,#01H,L2 AJMP WLED4L2: CJNE A,#02H,WMMM AJMP WLED4WMMM:LJMP WMWLED4: MOV A,34H MOV B,#0AH DIV AB MOV 1FH,B MOV A,R7 MOV B,#0AH MUL AB A

39、DD A,1FH MOV 34H,A MOV A,37H RR A MOV 37H,A AJMP WMWSJSZ4: JB ACC.2,WSJSZ5/修改月個位 但月十位為1時只能修改為0,1,2 月十位為0時不能修改為0 MOV A,34H MOV B,#0AH DIV AB CJNE A,#00H,WJ0 CJNE R7,#00H,WLED3 AJMP WWMWJ0: CJNE R7,#00H,WJ1 AJMP WLED3WJ1: CJNE R7,#01H,WJ2 AJMP WLED3WJ2: CJNE R7,#02H,WWM AJMP WLED3WLED3: MOV B,#0AH MUL

40、 AB ADD A,R7 MOV 34H,A MOV A,37H RR A MOV 37H,AWWM: AJMP WMWSJSZ5: JB ACC.1,WSJSZ6/修改日十位 只能為0,1,2,3 日個位不為0,1時不能修改為3 CJNE R7,#00H,WSJ10 AJMP WLED2WSJ10: CJNE R7,#01H,WSJ20 AJMP WLED2WSJ20: CJNE R7,#02H,WSJ30 AJMP WLED2WSJ30: CJNE R7,#03H,WWM MOV A,33H MOV B,#0AH DIV AB MOV A,B CJNE A,#00H,L3 AJMP WLE

41、D2L3: CJNE A,#01H,WWM AJMP WLED2WLED2: MOV A,33H MOV B,#0AH DIV AB MOV 1FH,B MOV A,R7 MOV B,#0AH MUL AB ADD A,1FH MOV 33H,A MOV A,37H RR A MOV 37H,A AJMP WMWSJSZ6:/修改日個位 日十位為3時 只能修改為0,1 MOV A,33H MOV B,#0AH DIV AB CJNE A,#00H,LL4 CJNE R7,#00H,WLED1 AJMP WMLL4: CJNE A,#03H,WLED1 CJNE R7,#00H,WJ4 AJMP

42、 WLED1WJ4: CJNE R7,#01H,WWM AJMP WLED1WLED1: MOV B,#0AH MUL AB ADD A,R7 MOV 33H,A MOV 37H,#11011111B AJMP WM/*/矩陣按鍵檢測子程序JIANCEANJIAN: MOV DPTR,#8000H MOV A,#0F0H MOVX DPTR,A MOV DPTR,#8000H MOVX A,DPTR CPL A JNZ XIAODOU RETXIAODOU: /ACALL DELAY MOV A,#0F0H MOV DPTR,#8000H MOVX A,DPTR CPL A JNZ PAN R

43、ETPAN: MOV DPTR,#8000H MOV A,#11111110B MOVX DPTR,A MOV DPTR,#8000H MOVX A,DPTR JNB ACC.0,KEY10;低電位說明按鍵在該位 JNB ACC.1,KEY20 JNB ACC.2,KEY30 JNB ACC.3,KEY40 MOV DPTR,#8000H MOV A,#11111101B MOVX DPTR,A MOV DPTR,#8000H MOVX A,DPTR JNB ACC.0,KEY50 JNB ACC.1,KEY60 JNB ACC.2,KEY70 JNB ACC.3,KEY80 MOV DPTR,#8000H MOV A,#11111011B MOVX DPTR,A MOV DPTR,#8000H MOVX A,DPTR JNB ACC.0,KEY90 JNB ACC.1,KEY00 JNB ACC.2,TUI JNB ACC.3,KEY0C0 RETKEY10: MOV R7,#01H RETKEY20: MOV R7,#02H RETKEY30: MOV R7,#03H RETKEY40: MOV R7,#04H RET K

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論