您的位置 首页 UI设计教程

arduino教程按键


关于arduino教程按键最佳答案


arduino教程按键


1.led灯是同时亮和同时灭吗?ar ino ide中有一个botton示例在02.digiral中,但是它太简单,botton的处理应该有消除按键抖动,按键释放后,再处理led灯亮或灭。


关于arduino教程按键相关答案


2.ORG 0000H;程序初始化入口 LJMP MAIN;程序跳转到MAIN处执行 ORG 0030H;主程序存放地址MAIN: MOV R4,#00H;清零按键值R4LOOP: LCALL CE_AJ ;快速检测是否有按键按下 JZ C5;有无按键按下,若无A为0,则跳转至C5, ;若有A不为0,则顺序执行程序 LCALL CE_JZ ;当有按键按下,计算出按键值,存放于R4 CJNE R4,#01H,C2;按键值是否为1,若为1,则顺序执行程序 ;若不为1,则跳转到C2 MOV P2,#0FEH;P2赋值为0FEH,点亮P2.0LED SJMP LOOP;返回LOOP处执行C2: CJNE R4,#02H,C3;按键值是否为2,若为2,则顺序执行程序 ;若不为2,则跳转到C3 MOV P2,#0FDH;P2赋值为0FDH,点亮P2.1LED SJMP LOOP;返回LOOP处执行C3: CJNE R4,#03H,C4;按键值是否为3,若为3,则顺序执行程序 ;若不为3,则跳转到C4 MOV P2,#0FBH;P2赋值为0FBH,点亮P2.2LED SJMP LOOP;返回LOOP处执行C4: CJNE R4,#04H,C5;按键值是否为4,若为4,则顺序执行程序 ;若不为4,则跳转到C5 MOV P2,#0F7H;P2赋值为0F7H,点亮P2.3LEDC5: SJMP LOOP;返回LOOP处执行;=============测按键是否按下子程序===================================;==========返回主程序参数A,用于程序判断按键是否按下=================CE_AJ: MOV P1,#0F3H;将行接口拉高,列接口置低,判断是否有键按下 MOV R5,P1;读入P1口数据,存在R5中 CJNE R5,#0F3H,A1;是否有按键按下?若没有则R5与0F3H相等; ;若有则R5与0F3H不相等,跳转至A1 CLR A;清零返回值A SJMP A2;程序跳转至A2运行A1: SETB ACC.0;置位返回值ACC.0,使之不为0A2: RET ;子程序返回;=============测按键值子程序=====================================;=========返回主程序参数R4,提供主程序键值内容===================CE_JZ: LCALL CE_AJ ;检测按键是否按下 JNZ B1 ;有键按下,跳转至B1;没有键按下,顺序执行 SJMP CE_JZ ;当按键没有按下,处于抖动状态,返回再检测B1: LCALL DELAY;调用延时 LCALL CE_AJ ;再次检测按键还是否按下 JNZ B2 ;有键按下,跳转至B2;没有键按下,顺序执行 SJMP CE_JZ;当按键没有按下,处于抖动状态,返回再检测B2: MOV R1,#0FEH;给行扫描数据R1赋值0FEH, MOV R2,#02H;给循环行扫描次数控制R2赋值02H B3: MOV R0,#02H;给循环列扫描次数控制R0赋值02H MOV P1,R1;输出行扫描信号 MOV A,P1;读入P1口的数据,存在A中 RRC A RRC A B5: RRC A;带进位右移A中的值,即将列数据移动到Cy中 JNC B4;Cy列信号为0,有键按下;为1,没键按下 DJNZ R0,B5;若第一列没键按下,则循环判断第二列 MOV A,R1;将行扫描数据R1中的值传给A SETB C;置Cy位为1 RLC A;带进位左移A中的值,即扫描第2行 MOV R1,A;将移位后的值重新赋给R1 DJNZ R2,B3;若第一行没键按下,则循环判断第二行 SJMP B6;程序跳转至B6执行B4: MOV A,#03H;按键值计算程序段,键值=(2-R2)*2+(3-R0) SUBB A,R0;进行(3-R0)计算 MOV R0,A;将计算结果存放于R0中 MOV A,#02H;给A赋值02H SUBB A,R2;进行(2-R2)计算 MOV B,#02H;给B赋值02H MUL AB;进行(2-R0)*2 ADD A,R0;进行(2-R2)*2+(3-R0) MOV R4,A;将计算出的键值赋值给R4B6: LCALL DELAY;调用延时B7: LCALL CE_AJ ;检测按键是否松开 JNZ B7;有键按下,跳转至B7重新检测;没有键按下,顺序执行B8: LCALL DELAY;调用延时 LCALL CE_AJ ;再次检测按键是否松开 JNZ B8;有键按下,跳转至B8重新检测;没有键按下,顺序执行 RET;子程序返回;==========按键去抖延时子程序,延时时间约为15ms============DELAY: MOV R5,#30 D3: MOV R6,#248 DJNZ R6,$ DJNZ R5,D3 RET END ;程序结束


了解更多arduino教程按键类似问题


ui设计教程网站
ui设计安卓教程
guitar视频教程读法
ae制作ui教程
ui课程入门教程
arduino的入门教程制作表格
ui界面设计教程课后答案
ui设计教程案例
ps做ui图标教程视频

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注