各位高手请看一看,我的读键的程序为什么返回不了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 请高手加我,本周我全天在线。
|