4*4矩阵键扫描函数,我有一句话不明白,
麻哪位给我解释一下多谢
Uchar kbscan(void)
Uchar sccode,recode
P1=0xf0
If(p1&0xf0)!=0xf0
{sccode=0xfe
While((sccode&0x10)!=0)这句是什么意思???
{p1=sccode;
If((p1&0xf0)!=0xf0)
{recode=(p1&0xf0)|0xf0)
Return((~sccode)+(~recode))
}
Else
Sccode=(sccode<<1)|0x01}}}return(0)}
这一句放在这里的意思是:当sccode.4=1时,执行while的内嵌语句,当sccode.4=0时,结束循环!
谢谢刚才的回答,p1.0-p1.3是行扫描输出线p1.4-p1.7是列检测输入线,将第一行置0,列线也为0这个条件怎么判断,sccode。4是列线判断它有什么用
将第一行置0,则相当于第一行所有按键的公共端接地,这时你就可以通过检测P1.4-P1.7的信号来确定是第一行的哪个按键按下。sccode.4应该是对应与P1.4的吧,
判断他可以确定它所对应的按键是否按下,如果sccode.4=0,则按键按下!
你读取P1口的信号,按下相应的按键应该只有一个值与之相对应!譬如:你置第一行为0,如果你按下的按键是P1.4所接的按键,那么,P1口的数值应该是01110111即0x77。
如果你要检测第一列其他行的按键,那么你只要将对应行置0即可!别忘了,每一次只能有一行为0,这样行与列的交点就只有一个,那个点就是你要检测的按键!
P1.0-P1.3是需要你来设置的位,它代表你选通的行;而P1.4-P1.7就是你用来检测按键用的位,它代表你所按下的按键所在的列!
知道按键在第几行第几列了,你不就知道是哪个按键了吗!!!
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |