秒表程序 匯編語言_第1頁
秒表程序 匯編語言_第2頁
秒表程序 匯編語言_第3頁
秒表程序 匯編語言_第4頁
秒表程序 匯編語言_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、;存放小時變量;存放分鐘變量;存放秒鐘變量;存放10ms計數(shù)值;存放按鍵當前端口狀況值;存放按鍵上次端口狀況值;存放按鍵計數(shù)單元;LCD 地址變量;按鍵1引腳定義;按鍵2引腳定義;LCD RS引腳定義;LCD RW引腳定義;LCD RS引腳定義;程序由地址0開始執(zhí)行;定時器0中斷地址設(shè)置主程序;開始;堆棧指針指向60H;E=0,禁止讀/寫LCM;調(diào)LCD控制子程序;初始化變量;按鍵上次端口設(shè)置1;初始化定時器;調(diào)用工作菜單子程序;時間計數(shù)處理;調(diào)用清零鍵子程序;判斷是否有鍵按下;無鍵按下轉(zhuǎn)LOOP;交換數(shù)據(jù);調(diào)用按鍵功能子程序;跳LOOP處循環(huán);初始變量清零;A清為零;K1_C初始為0;DED

2、A初始為0;SEC初始為0;MIN初始為0;定義計時單元地址HOUR EQU 30HMINEQU 31HSECEQU 32HDEDA EQU 33H;按鍵端口狀況值K1_N EQU 34HK1_P EQU 35HK1_C EQU 37HX EQU 36H;按鍵引腳定義K1 EQU P3.3K2 EQU P3.4;LCD引腳定義RSEQU P3.5RW EQU P3.6EEQU P3.7ORG 0000HJMP MAINORG 0BHJMP T0_INT;MAIN:MOV SP,#60HCLR EACALL SET_LCDACALL INITMOV K1_P,#01HACALL INIT_TIM

3、ERACALL MEULOOP:ACALL CONVACALL LOOP1ACALL KEYJZ LOOPMOV K1_P,K1_NACALL KEY0JMP LOOP;初始變量清零子程序INIT:CLR AMOV K1_C,AMOV DEDA,AMOV SEC,AMOV MIN,AMOV HOUR,A;HOUR初始為0MOV K1_N,A;K1_N初始為0MOV K1_P,A;K1_P初始為0CLR TR0RET;定時器初始化設(shè)置子程序;啟動中斷INIT_TIMER:;定時器初始化MOV TMOD,#01H;定時器0模式1MOV IE, #10000010BRET;中斷服務程序;開通中斷T0

4、_INT:;定時器T0中斷程序PUSH ACCINC DEDA;入棧保護MOV A,DEDACJNE A,#100,TTMOV DEDA,#0;10ms計數(shù)值加1INC SECMOV A,SECCJNE A,#60,TT;秒加1INC MINMOV SEC,#0MOV A,MINCJNE A,#60,TT;分加1INC HOURMOV MIN,#0MOV A,HOURCJNE A,#24,TTMOV DEDA,#0;時加1MOV SEC,#0MOV MIN,#0MOV HOUR,#0;秒、分、時單元清0TT: POP ACC;出棧RETI;中斷程序返回;判斷鍵是否按下子程序LOOP1:;判清零

5、鍵是否按下;;判清零鍵是否按下;跳轉(zhuǎn)主程序處;A清零JMP MAINLOOP2: RET;判斷K1鍵是否按下KEY:CLR AMOVK1_N,A;A值送入K1_NMOVC,K1;K1值送入CRLCA;同進位標志左移一位ORLK1_N,A;兩個位作邏輯OR運算MOVA,K1_N;K1_N值送入AXRLA,K1_P;有鍵按下,A中內(nèi)容不為零RET;K1鍵第一次按功能子程序KEY0:MOV A, K1_PJB ACC.0,KEY3INC K1_CMOV A, K1_CCJNE A,#01H,KEY1MOV DPTR,#MENU1MOV A,#1CALL LCD_PRINTSETB TR0RET;K1

6、鍵第二次按功能子程序KEY1:MOV A,K1_CCJNE A,#02H,KEY2MOV DPTR,#MENU2MOV A,#1CALL LCD_PRINTCLR TR0RET;K1鍵第三次按功能子程序KEY2:MOV A, K1_CCJNE A, #03H,KEY3MOV DPTR,#MENU3MOV A, #1CALL LCD_PRINTSETB TR0RET;K1鍵第四按功能子程序KEY3:MOV A,K1_CCJNE A,#04H,KEY4MOV DPTR,#MENU4;K1_P值送入A;A的0位是1,轉(zhuǎn)KEY3;K1_C 加 1;K1_C值送入A;K1鍵是否第一次按?;是,存入MEN

7、U1信息;設(shè)置第一行顯示;調(diào)用顯示字符子程序;啟動中斷;K1_C值送入A;K1鍵是否第二次按?;是,存入MENU2信息;設(shè)置第一行顯示;調(diào)用顯示字符子程序;停止中斷;K1_C值送入A;K1鍵是否第三次按?;是,存入MENU3信息;設(shè)置第一行顯示;調(diào)用顯示字符子程序;啟動中斷;K1_C值送入A;K1鍵是否第四次按?;是,存入MENU4信息MOV A,#1CALL LCD_PRINTCLR TR0KEY4:RET;設(shè)置第一行顯示;調(diào)用顯示字符子程序;啟動中斷;子程序返回LCD顯示;LCD控制子程序SET_LCD:;CLR EACALL INIT_LCD;初始化 LCDMOV R5,#10ACALL

8、 DELAYMOV DPTR,#LMESS1 ;指針指到顯示消息1MOV A,#1;顯示在第一行ACALL LCD_PRINT;調(diào)用顯示字符子程序MOV DPTR,#LMESS2 ;指針指到顯示消息2MOV A,#2;顯示在第二行ACALL LCD_PRINT;調(diào)用顯示字符子程序RET;LMESS1: DB 0 ;LCD 第一行顯示消息LMESS2: DB 0 ;LCD第二行顯示消息;LCD初始化子程序INIT_LCD:MOV A,#38HACALL WR_COMMACALL DELAY1MOV A,#0CHACALL WR_COMMACALL DELAY1MOV A,#01HACALL WR

9、_COMMACALL DELAY1RET;寫指令子程序WR_COMM:MOV P1,ACLR RSCLR RWSETB EACALL DELAY1CLR E;設(shè)置8位、2行、5x7點陣; 調(diào)用寫指令子程序;調(diào)用延時子程序;開顯示,光標不閃爍;調(diào)用寫指令子程序;調(diào)用延時子程序;清除LCD顯示屏;調(diào)用寫指令子程序 ;調(diào)用延時子程序;RS=0,選擇指令寄存器;RW=0,選擇寫模式;E=1,允許讀/寫LCM;調(diào)用延時子程序;E=0,禁止讀/寫LCM;寫數(shù)據(jù)子程序WR_DATA:MOV P1,ASETB RS;RS=1,選擇數(shù)據(jù)寄存器CLR RW;RW=0,選擇寫模式SETB E;E=1,允許讀/寫LC

10、MACALL DE;調(diào)用延時子程序CLR E;E=0,禁止讀/寫LCMACALL DE;調(diào)用延時子程序RET;清除該行LCD的字符CLR_LINE:MOVR0,#24CL1: MOV A,#ACALL WR_DATADJNZ R0,CL1RET;LCD存入工作菜單RET;存入工作菜單;第一行MEU:MEU:MOV DPTR,#MENU0MOV A,#1CALL LCD PRINTRET; 工作菜單MENU0:DB0MENU1:DB0MENU2:DB0MENU3:DB0MENU4:DB0;菜單顯示子程序;一行、二行顯示字符LCD_PRINT:CJNE A,#1,LINE2 LINE1:ACALL

11、 CLR_LINEMOV A, #80HACALL WR_COMMJMP FILLLINE2:ACALL CLR_LINEMOV A,#0C0HACALL WR_COMM FILL: CLR A;判斷是否為第一行;清除該行字符數(shù)據(jù);設(shè)置LCD的第一行地址;寫入命令;清除該行字符數(shù)據(jù);設(shè)置LCD的第二行地址;填入字符MOVC A,A+DPTR;由消息區(qū)取出字符CJNE A,#0,LC1;判斷是否為結(jié)束碼RET;寫入數(shù)據(jù)LC1: ACALL WR_DATAINC DPTR;指針加1JMP FILL;繼續(xù)填入字符RET;轉(zhuǎn)換數(shù)據(jù)子程CONV:;轉(zhuǎn)換為ASCII碼并顯示MOV A,HOUR;加載小時數(shù)

12、據(jù)MOV X,#5;設(shè)置位置ACALL SKOW_LINE2;顯示數(shù)據(jù)INC X;MOV A,#:;MOV B,X;ACALL LCDP2;MOV A,MIN;加載分鐘數(shù)據(jù)INC X;設(shè)置位置ACALL SKOW_LINE2;顯示數(shù)據(jù)INC X;MOV A,#:;MOV B,X;ACALL LCDP2;MOV A,SEC;加載秒數(shù)數(shù)據(jù)INC X;設(shè)置位置ACALL SKOW_LINE2;顯示數(shù)據(jù)INC X;MOV A,#:;MOV B,X;CALL LCDP2;MOV A,DEDA;加載秒數(shù)數(shù)據(jù)INC X;設(shè)置位置ACALL SKOW_LINE2;顯示數(shù)據(jù)RET;在LCD的第一行顯示數(shù)字SKO

13、W_LINE2:MOV B,#10;設(shè)置被除數(shù)DIV AB;結(jié)果A存商數(shù),B存余數(shù)ADD A,#30H;A為十位數(shù),轉(zhuǎn)換為字符PUSH B;B放入堆棧暫存MOV B,X;設(shè)置LCD顯示的位置ACALL LCDP2;由LCD顯示出來POP B;出棧MOV A,BADD A,#30HINC XMOV B,XACALL LCDP2RET;在LCD的第二行顯示字符LCDP2:PUSH ACCMOV A,BADD A,#0C0HCALL WR_COMMPOP ACCCALL WR_DATARETDEX:MOV R7,#180DE1:NOPDJNZ R7,DE1RET;延時10MSDELAY:MOV R6,#50D1:MOV R7,#

溫馨提示

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

評論

0/150

提交評論