键盘扫描汇编程序
发布时间: 2023-07-08 21:34:32
① 请教关于单片机按键扫描的汇编语言
这是一个典型的T扫电路,具体代码我就不说了,我现在来说一下它的原理
扫描是一次把一个IO置0,其它的IO均为输入状态(51是准双向IO,没有输入输出概念,把输出高当输入即可)。比如说,现在是扫描P00,那么把P00写0,其它的IO写1,然后把所有的IO读取回来,把值赋给一个临时变量用来判断,eg key_buffer_temp =P0; 把扫描(写0的相应)位强制性写上1, 即
key_buffer_temp=key_buffer_temp|0x01;这时看这个key_buffer_temp的值,有没有位是0的,即这个值是不是0xff,如果是0xff,则和P00接的按键都没有按键。如果不是0xff,则有几位是0就有几个按键。这样循环下去,一直扫到P06(不用扫P07)。
程序的注意点:
1扫描P00时,只看读回来key_buffer_temp的位1--位7,扫描P01时,只看读回来key_buffer_temp的位2--位7,……扫描P06时,只看读回来key_buffer_temp的位7,不用扫描P07
2每扫描一个就判断一次key_buffer_temp的值,一个个位来判断,同时把计数加1,如果有按键则把计数的值赋给key_value0,key_value1……
3扫描结束后看key_value0,key_value1……里面的值,有几个就几个按键
4比如说key_value0为1,key_value为10,那么就是S1,和S10有按键
至于消抖,这一般的做法就是多采样几次
热点内容