这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » PIC18F单片机按键操作技巧处理 C/ASM

共1条 1/1 1 跳转至

PIC18F单片机按键操作技巧处理 C/ASM

工程师
2014-10-04 19:10:45     打赏

按键操作,对于任何的平台来说都是最重要的输入接口,其中不乏许多方式,各有所长,可以说是五花八门;以前的就有宏晶科技的程序,一时间在网上好评不断(此处不赘述),下面介绍另一种按键操作方式:


1、首先我们先看下汇编的按键代码,平台pic芯片、asm语言!


1)


CHK_ON_OFF_KEY:


SZ ON_OFF_KEY


CLR ON_OFF_KEY_FLAG


SZ ON_OFF_KEY


JMP CHK_ON_OFF_KEY_OUT


SNZ ON_OFF_KEY_FLAG


SET ON_OFF_KEY_EDGE


SET ON_OFF_KEY_EDGE


CHK_ON_OFF_KEY_OUT:




这是一段按键(点触式)汇编代码,获取信号量(标志位)ON_OFF_KEY_EDGE,进行利用,其中ON_OFF_KEY位是按键输入位,判断按键0的方式;


首先,这个按键程序采用循环模式查询方式,其特点在于,不会中断程序,或者有delay等程序浪费mpu资源;


其次,有个小小的问题就是,按键在抗浪涌冲击,或者是脉冲群干扰测试中,很难通过测试,这样就需要增加去抖的程序,如何改敬请继续关注;


另外,可以将此程序用C来改编下,以适合移植到更多的平台(可以自己先尝试下);




2)下面,将会采用一般按ANSIC C 语言描述下上面的汇编程序(可扩展平台):


if( ! ON_OFF_KEY )


}


if( ! ON_OFF_KEY_FLAG )


{


ON_OFF_KEY_FLAG = 1;


ON_OFF_KEY_EDGE = 1;


}


}


else ON_OFF_KEY_FLAG = 0;




首先,可以对其进行功能测试;


然后,可以反汇编下,看看其汇编代码怎么样,要考虑到执行的效率,空间的占有量(经测试后反汇编出来的仅7条语言,效率和空间符合要求);


这一段代码是以上的汇编换成了C语言来编写,代码量没有增加,并且没有影响到程序的效率问题;当然,本程序是存在同上的缺点(按键无消抖),下期继续;


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]