main: mov p1,#0f0h 令行为低电平,全扫描字P1.0-P1.3,列为输入方式
mov r7,#0ffh 设置计数常数
key:djnz r7,key 延时
mov a,p1 读取P1口列值 问题1
anl a,#0f0h 判别有键按下吗? 问题2
cpl a 求反后,有高电平就有键按下 问题2
jz ekey 无键按下退出
问题一,读取P1口好像八个口全读了,不只四个列口啊。无键按下时读到的应该是0F0H啊
问题二,无键按下时,逻辑与得到结果还是0F0H啊,取反后0FH,一样有高电平啊,没看懂求解时。
各位高手帮忙时请举下例子解释
得到答案再加分
主要是第二个问题,无论按键与否,A中都不可能全为0,那么最后一步就无效了。求解释
这个程序不是我编的,是北航李朝青编的书上写的。
你这是第一个问题,第二个呢?逻辑与后呢,A的结果可能是11110000,11100000,11010000,10110000,01110000,无论怎样取反,A都有高电平,最后一步就无效了。
51单片机键盘矩阵扫描代码的理解
MOV P2,A 是把扫描码赋给P2口,其实是赋给P2口的低四位,进行扫描;MOV A,P2 是读取P2口的值,后面一句把低四位屏蔽了,最终还是读取了高四位
矩阵键盘扫描程序分析
矩形键盘扫描程序分析如下:1、在键盘中按键数量较多时,通常将按键排列成矩阵形式,在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接;2、一个端口就可构成16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键...
C51矩阵键盘扫描 请解释一下程序 特别是关键步骤 急!!!
1、首先判断整个键盘有无按下键,只要行扫描线输入不为全1,(1111)即有键按下;P1 = 0xf0;if((P1&0xf0)!=0xf0) 如果无按键按下,全1,则返回return -1;如果有键按下则延时,再次判断有无按键按下,Delay();if((P1&0xf0)!=0xf0)如果无按键按下则返回return -1。有键按下则继续,...
单片机4×4矩阵键盘扫描编程问题(里面详细,欢迎高手)
扫描第一行,就是将第一行电平置为低电平,其他的都为高,扫描哪一行就让哪一行的电平置零,其他行为高电平。这就是第一个问题。在没有键按下的时候,列线全部是高电平,有第一行的键按下的时候,相应的列线就为低电平了,n=P1;n&=0xf0;if(n!=0xf0)这几句就是判断有没有键按下。在第...
单片机高手,帮我看看这个反转发循环扫描矩阵键盘程序,帮我详细的解释哈...
以S10被按下为例说明:uchar keyscan(void) \/\/键盘扫描函数,使用行列反转扫描法 { uchar cord_h,cord_l;\/\/行列值中间变量 P3=0x0f; \/\/行线输出全为0 cord_h=P3&0x0f; \/\/读入列线值 if(cord_h!=0x0f) \/\/先检测有无按键按下,如果cord_h=0x0f说明无键按下 { delay(...
有木有大神啊,这是51单片机矩阵键盘的一个程序,其中的那个松手检测没...
单片机默认都是1。按键都是0。所以按下去单片机自然就是0。如果你检测是1的话。那你的按键就没有按下去。
求单片机大神讲解一下程序啊 ,组合按键值为什么要取反
1.拉高列线,拉低行线 假设为0xf0,此时扫描列线,若按键按下,则对应的列线被拉低了,此时我们可以确定列线,但不清楚对应哪个行线 2.拉高行线,拉低列线(相反),此时扫描可以得出具体行线,在将行列组合,就能得出对应按键 case 0x11. (由于按键检测是低电平,所以需要取反)实际上应该是...
51单片机矩阵键盘扫描程序,怎样判断当前按键式第几行的?
p3=fe就是扫描第一行,然后&上f0就是屏蔽低位高位不等于f0则有建按下,后面你那个12345678……就是第几个建,如你的例子,=ed的时候是发生在p3=fd的程序,fd是第二行手机打字欢迎追问
单片机矩阵键盘反转扫描问题
1、A&B|B=(A&B)|B&(A|NOT A)=A&B)|(A&B)|notA & B =B 2、由于单片机的计算速度是微妙级的,所以在执行 while((KeyPort&0xf0)!=0xf0);之前可以认为按键都是被按下的,这样的话,由于被按下,即使人为的给KeyPort复值,他的有效周期大约只有一条语句的时间,之后便会被硬件还原 如...
单片机矩阵键盘检测的疑问
temp=temp&0xf0;\/\/这三句跟上面重复,功能是软件消抖 while(temp!=0xf0) \/\/延时一段时间后判断还有按键按下,说明是真有按键按下,进入按键扫描与键值的判断,否则可能是意外抖动引起的,就不进行按键扫描。{ temp=P3;switch(temp)...我想注释完应该能读懂,关键是要理解矩阵键盘的扫描原理。