正在加载图片...
Kei软件实全教程(五) CLRStart End;启动时处于停止状态 MOV LAMPCODE,#OIH;单灯流动的代码 LOOP: ACALL KEY;调用键盘程序 JNBF0, LNEXT如果无键按下,则继续 ACALL KEYPROC 否则调用键盘处理程序 LNEXT: ACALL LAMP;调用灯显示程序 AJMP LOOP ;反复循环,主程序到此结束 延时程序键盘处理中调用 DELAY: MOV R7.#100 DI: MOV R6.#100 DJNZ R6.S DJNZ R7DI RET KEYPROC MOVA,B;从B寄存器中获取键值 JB ACO.2 KeyStart;分析键的代码,某位被按下,则该位为1 JB ACC.3, KeyOver JB ACC. 4, KeyUp Jb ACC. 5. KeyDown AJMP KEY RET SETB StartEnd;第一个键按下后的处理 AJMP KEY RET CLRStartEnd;第二个键按下后的处理 AJMP KEY RET SETB UpDown;第三个键按下后的处理 AJMP KEY RET CLRUpDown 第四个键按下后的处理 KEY RET. RET CLRF0;清FO,表示无键按下。 ORLP3,#00111008;将P3口的接有键的四位置 MOV AP3;取P3的值 ORLA,#1100011B;将其余4位置1 CPLA;取反 JZ KRET;如果为0则一定无键按下 CALL DELAY;否则延时去键抖 ORLP3,#0011110B ORLA#11000011BKeil 软件实全教程(五) CLR StartEnd ;启动时处于停止状态 MOV LAMPCODE,#01H ;单灯流动的代码 LOOP: ACALL KEY ;调用键盘程序 JNB F0,LNEXT ;如果无键按下,则继续 ACALL KEYPROC ;否则调用键盘处理程序 LNEXT: ACALL LAMP ;调用灯显示程序 AJMP LOOP ;反复循环,主程序到此结束 ;延时程序,键盘处理中调用 DELAY: MOV R7,#100 D1: MOV R6,#100 DJNZ R6,$ DJNZ R7,D1 RET KEYPROC: MOV A,B ;从 B 寄存器中获取键值 JB ACC.2,KeyStart ;分析键的代码,某位被按下,则该位为 1 JB ACC.3,KeyOver JB ACC.4,KeyUp JB ACC.5,KeyDown AJMP KEY_RET KeyStart: SETB StartEnd ;第一个键按下后的处理 AJMP KEY_RET KeyOver: CLR StartEnd ;第二个键按下后的处理 AJMP KEY_RET KeyUp: SETB UpDown ;第三个键按下后的处理 AJMP KEY_RET KeyDown: CLR UpDown ;第四个键按下后的处理 KEY_RET: RET KEY: CLR F0 ;清 F0,表示无键按下。 ORL P3,#00111100B ;将 P3 口的接有键的四位置 1 MOV A,P3 ;取 P3 的值 ORL A,#11000011B ;将其余 4 位置 1 CPL A ;取反 JZ K_RET ;如果为 0 则一定无键按下 CALL DELAY ;否则延时去键抖 ORL P3,#00111100B MOV A,P3 ORL A,#11000011B
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有