資源描述:
《鍵盤處理程序》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、鍵盤處理程序開始初始化查看是否有按鍵是哪一個按鍵編碼顯示匯編語言程序ORG0000HSJMPSTARTORG0030HSTART:;設(shè)置堆棧MOVSP,#50HCLRPSW.3CLRPSW.4;寄存器為0號寄存器;初始化顯示緩沖區(qū)MOVR0,#80H;顯示緩沖區(qū)首地址MOVR7,#01H;顯示字符的個數(shù)MOVR6,#01H;標(biāo)志位MOV@R0,#00H;顯示緩沖區(qū)初始化完畢;設(shè)置8255工作方式MOVA,#88HMOVDPTR,#00F3HMOVX@DPTR,A;設(shè)置8255工作方式;查找是否有按鍵KEY:CLRALCALLISKEYJZNK;沒有按鍵LCALLDELAYCLRALCALLIS
2、KEYJZNKLCALLFINDKEYFIND:;SWAPAADDA,35HLCALLJM;調(diào)用解碼程序CJNEA,#0CH,BREA;清零的解碼JMPSTARTBREA:MOVR5,A;r5中暫存解碼的結(jié)果CJNER6,#01H,PLUSDECR7PLUS:INCR7MOV33H,R7;把R7壓入堆棧MOVA,#80HADDA,R7DECA;A中為要添加的地址MOVR0,A;MOVA,R5MOV@R0,AINCR6;標(biāo)志位改變LCALLINDISP;調(diào)用顯示程序JMPKEYNK:MOV33H,R7;把R7壓入堆棧LCALLINDISPJMPKEY;解碼程序;正確JM:MOVR4,A;R4中暫
3、存查詢結(jié)果ANLA,#0FHMOVR5,AADDA,R5ADDA,R5;行號乘以3MOVR5,A;放入R5暫存MOVA,R4ANLA,#0F0HRRARRARRARRA;A中的數(shù)右移4位CJNEA,#04H,PP;列號如果等于4就減1變?yōu)?DECAPP:ADDA,R5;A中存放要顯示的數(shù)RET;查看是否有按鍵的程序ISKEY:MOVDPTR,#00F1H;B口地址MOVX@DPTR,AMOVDPTR,#00F2H;C口地址MOVXA,@DPTRCPLAANLA,#70H;如果A不為零則有按鍵RET;確定哪個按鍵的程序FINDKEY:MOVA,#0FEH;行掃描信號從第一行開始MOV35H,#0
4、H;行計數(shù)器;掃描鍵盤SK:MOV36H,A;送出行掃描信號LCALLISKEY;檢測JNZFINDINC35HMOVA,36HRLACJNEA,#0EFH,SK;還沒有送完行掃描信號MOVA,#0;沒找到按鍵SJMPNKRET;顯示程序,只要把要顯示的內(nèi)容送入80h開始的單元,顯示的個數(shù)送入33hINDISP:DISP:MOVR0,#80HMOV34H,33H;34h中存放顯示數(shù)字的個數(shù)MOVR1,#0F0H;a口地址MOVA,#01HMOVDPTR,#TABLESEND1:MOVR1,#0F2HMOVX@R1,A;選同一個數(shù)碼管以供顯示RLAMOV32H,A;暫存MOVA,@R0;取數(shù)MO
5、VCA,@A+DPTR;代碼轉(zhuǎn)化CPLAMOVR1,#0F0HMOVX@R1,A;輸出數(shù)碼管顯示CALLDELAYINCR0MOVA,32HDJNZ34H,SEND1RETTABLE:DB3FH,06H,5BH,4FHDB66H,6DH,7DH,07HDB7FH,6FH,77H,7CHDB39H,5EH,79H,71HDELAY:MOV30H,#0FFHLOPPP:MOV31H,#0FFHlopp:DJNZ31H,loppDJNZ30H,lopppRETENDProteus仿真圖實驗注意事項8255的標(biāo)號一定是U1否則會出現(xiàn)通不過的結(jié)果實驗結(jié)果當(dāng)按下前11個按鍵是按照1:B顯示結(jié)果當(dāng)按下最后一
6、個按鍵時顯示器清零