『壹』 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;//澶嶄綅鎸夐敭璁℃暟鍙橀噺;
}
}
}
}