正在加载图片...
KEY1: LCALL KS1;查有无键闭合 MOVA,R2;取出此次行扫描值 JNZ LK1;有键闭合转消颤 JⅠ NB ACC.7,LK8;若已扫过最后 LJMP LK8;无键闭合则退出 行就退出扫描,否则扫下一行。 LK1: LCALL DL6ms;消颤12ms RLA;Acc中的“0”左移 LCALL DL6MS 位 LCALL KS1;再查有无键闭合 MoVR2,A;新扫描值仍存进R2 JNZ LK2;的确有,转处理 INCR3;行号加1指向下一行 LJMP LK8;确实无,退出去K4:0MPA:3;:酥有取行符 LK2:MOVR3,#00H;(R3)←行号初值 ADDA,R3;行号乘4 MOVR2,#OFEH;(R2)←行扫描初值 MOVR5,A;得行首值 LK3: MOV DPTR#0101H;指向8155A口 ADDA,R5;即:0,4,8,12 M0VA,R2;取行扫描值 M0VR5,A;暂存进R5 MOVX,@DPTR,A;送到行线上去 INC DPTR INC DPTR 指向8155C口 MOVX A,@DPTR;读列线的电平 ANLA,#0FH;保留C口低4位 Mov R4, A 列值暂存进R4 CJNE A,#OFH,LK4;列值≠全“1 表明此次送0的行有键按下,转LK4处理, 若=全1,表明此次送0的行无键按下。KEY1:LCALL KS1 ;查有无键闭合 JNZ LK1 ;有键闭合转消颤 LJMP LK8 ;无键闭合则退出 LK1:LCALL DL6ms ;消颤12ms LCALL DL6ms LCALL KS1 ;再查有无键闭合 JNZ LK2 ;的确有,转处理 LJMP LK8 ;确实无,退出去 LK2:MOV R3,#00H ;(R3)←行号初值 MOV R2,#0FEH;(R2)←行扫描初值 LK3:MOV DPTR #0101H;指向8155 A口 MOV A, R2 ;取行扫描值 MOVX,@DPTR,A ;送到行线上去 INC DPTR INC DPTR ;指向8155 C口 MOVX A,@DPTR ;读列线的电平 ANL A,#0FH ;保留C口低4位 MOV R4,A ;列值暂存进R4 CJNE A,#0FH,LK4;列值≠全“1” 表明此次送0的行有键按下,转LK4处理, 若=全1,表明此次送0的行无键按下。 MOV A,R2 ;取出此次行扫描值 JNB ACC.7,LK8 ;若已扫过最后 一行就退出扫描,否则扫下一行。 RL A ;Acc中的“0”左移一 位 MOV R2,A ;新扫描值仍存进R2 INC R3 ;行号加1指向下一行 LK4:SJMP MOV A, R3 LK3 ;;转此行有按键 LK3去扫描下一行 ,取行号 ADD A, R3 ;行号乘 4 MOV R5, A ;得行首值 ADD A, R5 ;即:0,4,8,12… MOV R5, A ;暂存进 R5
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有