日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] /************************編譯器:Keil C uVision4*芯片:STC89C52,12M晶振********************http://www.wang1jin.com**********************/實(shí)現(xiàn)功能:按下按鍵三個(gè)全亮,在按下LED2滅,再按下三

/***********************
*編譯器:Keil C uVision4
*芯片:STC89C52,12M晶振
********************http://www.wang1jin.com**********************/
實(shí)現(xiàn)功能:按下按鍵三個(gè)全亮,在按下LED2滅,再按下三個(gè)LED全滅,如此循環(huán),相當(dāng)于三檔,第三檔是停止。第一檔和第二檔定時(shí)5S,5S終了,停止運(yùn)行,如果此時(shí)再按1次則回到第一檔。如果5S之內(nèi)按下,則切換到下一檔。


實(shí)現(xiàn)功能:按下按鍵三個(gè)全亮,在按下LED2滅,再按下三個(gè)LED全滅,如此循環(huán),相當(dāng)于三檔,第三檔是停止。第一檔和第二檔定時(shí)5S,5S終了,停止運(yùn)行,如果此時(shí)再按1次則回到第一檔。如果5S之內(nèi)按下,則切換到下一檔。


#include
#define uintunsigned int
#define uchar unsigned char

sbit Key = P3^3;
sbit LED0 = P0^0;
sbit LED1 = P0^1;
sbit LED2 = P0^2;
uchar KEY_Data = 0; //按鍵值
bit Time_Data = 0; //定時(shí)標(biāo)志位
uchar Time = 0;//定時(shí)計(jì)時(shí)
uchar Time_ms=0;//MS計(jì)時(shí)
uchar Time_s =0;//S計(jì)時(shí)
void Delay(uint i);
void READ_KEY(void);
void LED1_ON(void);
void LED2_ON(void);
void LED_OFF(void);
void main(void)
{
TMOD=0x01;
TH0=(65536-50000)/256;//50ms的初值
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
EA=1;
while(1)
{
READ_KEY();//執(zhí)行按鍵程序
LED1_ON();//第1次按下執(zhí)行
LED2_ON();//第2次按下執(zhí)行
LED_OFF();//第3次按下執(zhí)行
}
}

void READ_KEY(void)
{
uchar Value =0;
uchar Value1 = 0;
if(Key == 0)//按鍵掃描
{
Delay(2000);
if(Key ==0)
{
while(Key ==0 && Value1<100)//判斷按鍵松開(kāi)并執(zhí)行
{
Value1++;
Delay(1000);
}
KEY_Data++;
Time_s = 0; //清空之前計(jì)時(shí)時(shí)間
Time_Data = 1;//開(kāi)啟定時(shí)
if(KEY_Data >2)
{
KEY_Data =0;
}
}
}
}

void LED1_ON(void)//第一次按下點(diǎn)亮所有LED
{
if(Time_Data ==1 && KEY_Data ==1)
{
LED0 =0;
LED1 =0;
LED2 =0;
}
}
void LED2_ON(void)//第二次按下關(guān)閉LED2
{
if(Time_Data ==1 && KEY_Data == 2)
{
LED1 = 1;
}
}
void LED_OFF(void)//第三次按下或定時(shí)時(shí)間到關(guān)閉所有LED
{
if(KEY_Data == 0 ||Time_Data==0)
{
LED0 = 1;
LED1 = 1;
LED2 = 1;
}
}

void timer0() interrupt 1 //定時(shí)器計(jì)時(shí)50MS
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(Time_Data == 1)
{
Time++;
if(Time>100)
{
Time=0;
Time_Data =0;
}
}
}

void Delay(uint i)//延時(shí)函數(shù)
{
for(;i>0;--i);
}


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉