读键的程序为什么不对?
各位高手请看一看,我的读键的程序为什么返回不了0;
unsigned char GET_key()
{
static unsigned char data l20070610;
ET0=0;
_nop_();
l20070610=key_OK_data;
key_OK_data=0; //是在定时器0中赋值的
ET0=1;
return l20070610;
}
我是在定时器0中20MS进行一次读键的操作,在去抖动后将值给key_OK_data;
而key_OK_data,只在这个程序中清0,但是在我读一次键,没有按其它键的时候
如果再一次读这个程序,还是回来原来的键值,不是0,我不知道为什么?
如果在RETURN处加一个是不是值为0的IF语句判断后会好一些。
这是怎么回事。
这是我的定时器0的函数定义:
void timer0() interrupt 1 using 0
内中函数是十分简单的不传上来了。
其中用到的全局变量定义如下:
static unsigned char idata key_OK_data;
我是这样使用的:
do
{
kk=GET_key();
}while(!kk);
但是在我第一次按键后,第二个键没有铵下时,KK也会回来原来的值,使我的程序不稳定
这是为什么,请高手指教,小女多谢了!
我的QQ:772159495 请高手加我,本周我全天在线。
发表时间:2007年6月12日17:42:39