‘壹’ at89c51单片机等待键释放的程序怎么写
楼上的都是使用等待按键松手的方法,比较容易理解,还有一种等待按键释放的程序段思路大概是这样的:设置一个标志位,然后,有按键按下置位标志位,按键松开清空标志位,去判断标志位,就知道按键松开了没,这样不用让cpu等待按键松开,在等待的时间里,cpu还可以做其他的事情
‘贰’ 璋佽兘甯鎴戝啓涓涓绠鍗旷殑鎸夐敭妫娴媍璇瑷绋嫔簭 锷熻兘锛屾垜𨱍崇敤鍗旷墖链哄幓妫娴嬫寜阌鍦ㄤ竴绉挜挓鍐呮寜阌琚鎸変笅浜嗗氩皯娆★纴
#include<reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitled1=P2^0;//瀹氢箟绠¤剼锛
sbitled2=P2^1;
sbitled3=P2^2;
sbitled4=P2^3;
sbitled5=P2^4;
sbitled6=P2^5;
sbitkey=P1^0;
uchartcount=0,count=0;//瀹氢箟镞堕棿鍙橀噺鍜屾寜阌璁℃暟鍙橀噺锛
voidDelay(uchari)//链烘板欢镞讹绂
{
while(--i);
}
voidLedLight(void)//LED鎺у埗鍑芥暟锛
{
switch(count)
{
case3:led1=0;break;//3涓嬫椂,LED1浜锛
case5:led2=0;break;//5涓嬫椂,LED2浜锛
case7:led3=0;break;//7涓嬫椂,LED3浜锛
case9:led4=0;break;//9涓嬫椂,LED4浜锛
case11:led5=0;break;//11涓嬫椂,LED5浜锛
case13:led6=0;break;//13涓嬫椂,LED6浜锛
default:P2=0xff;break;//鍏朵綑镄勯兘涓崭寒锛
}
}
voidInitTimer0(void)//瀹氭椂鍣0鍒濆嫔寲锛
{
TMOD=0x00;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
}
voidmain(void)//涓诲嚱鏁
{
InitTimer0();
while(1)//镞犻檺寰鐜;
{
if(key==0)//妫镆ユ寜阌鏄钖︽寜涓嬶绂
{
Delay(10);//链烘板欢镞;
if(key==0){count++;}//鎸夐敭璁℃暟;
while(key==0);
}
if(TF0==1)//澶崭綅瀹氭椂鍣0;
{
TF0=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tcount++;
if(tcount==20)//1绉掔殑镞堕棿;
{
LedLight();
Delay(100);
count=0;//澶崭綅鎸夐敭璁℃暟鍙橀噺;
}
}
}
}