当前位置:编程学习 > 汇编语言 >>

4乘四键盘的汇编程序怎么编

答案:下面是矩阵盘检测汇编 dula bit P2.6; wela bit P2.7; KEYBUF EQU 30H ORG 00H START: MOV KEYBUF,#2 WAIT: MOV P3,#0FFH CLR P3.4 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK1 MOV KEYBUF,#0 mov p1,#11111110b LJMP DK1 NK1: CJNE A,#0DH,NK2 MOV KEYBUF,#4 mov p1,#11111100b LJMP DK1 NK2: CJNE A,#0BH,NK3 MOV KEYBUF,#8 mov p1,#11111000b LJMP DK1 NK3: CJNE A,#07H,NK4 MOV KEYBUF,#12 mov p1,#11110000b LJMP DK1 NK4: NOP DK1: call display DK1A: MOV A,P3 ;等待释放 ANL A,#0FH XRL A,#0FH JNZ DK1A NOKEY1: MOV P3,#0FFH CLR P3.5 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK5 MOV KEYBUF,#1 mov p1,#11111110b LJMP DK2 NK5: CJNE A,#0DH,NK6 MOV KEYBUF,#5 mov p1,#11111100b LJMP DK2 NK6: CJNE A,#0BH,NK7 MOV KEYBUF,#9 mov p1,#11111000b LJMP DK2 NK7: CJNE A,#07H,NK8 MOV KEYBUF,#13 mov p1,#11110000b LJMP DK2 NK8: NOP DK2: call display DK2A: MOV A,P3 ;释放 ANL A,#0FH XRL A,#0FH JNZ DK2A NOKEY2: MOV P3,#0FFH CLR P3.6 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY3 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY3 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK9 MOV KEYBUF,#2 mov p1,#11111110b LJMP DK3 NK9: CJNE A,#0DH,NK10 MOV KEYBUF,#6 mov p1,#11111100b LJMP DK3 NK10: CJNE A,#0BH,NK11 MOV KEYBUF,#10 mov p1,#11111000b LJMP DK3 NK11: CJNE A,#07H,NK12 MOV KEYBUF,#14 mov p1,#11110000b LJMP DK3 NK12: NOP DK3: call display DK3A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK3A NOKEY3: MOV P3,#0FFH CLR P3.7 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK13 MOV KEYBUF,#3 mov p1,#11111110b LJMP DK4 NK13: CJNE A,#0DH,NK14 MOV KEYBUF,#7 mov p1,#11111100b LJMP DK4 NK14: CJNE A,#0BH,NK15 MOV KEYBUF,#11 mov p1,#11111000b LJMP DK4 NK15: CJNE A,#07H,NK16 mov p1,#11110000b MOV KEYBUF,#15 LJMP DK4 NK16: NOP DK4: call display DK4A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK4A NOKEY4: LJMP WAIT DELY10MS: MOV R6,#10 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET display: MOV A,KEYBUF ;查表 MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A setb dula clr dula mov P0,#0c0h setb wela clr wela clr p2.3 acall ds1ms ;延时,以便人眼可以观察到 setb p2.3 ;acall ds1ms ret ds1ms: mov r1,#1 ds1lo: mov r2,#200 ds2lo: mov r3,#200 djnz r3,$ djnz r2,ds2lo djnz r1,ds1lo ret ;延时返回 TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H END

上一个:研究高级语言和汇编语言通信的过程。
下一个:汇编的一个问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,