欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 這個(gè)單片機(jī)程序怎樣才按鍵按一下發(fā)送aa,按一下發(fā)送bb。弄了幾天了! [打印本頁]

作者: 趙伍杰    時(shí)間: 2019-8-2 22:20
標(biāo)題: 這個(gè)單片機(jī)程序怎樣才按鍵按一下發(fā)送aa,按一下發(fā)送bb。弄了幾天了!
*******************************/
#include <reg52.h>
#define Buzzer_time 350       //蜂鳴器鳴叫持續(xù)時(shí)間
#define uchar unsigned char
unsigned int Buzzer_count=0;        //蜂鳴器鳴叫持續(xù)時(shí)間計(jì)數(shù)器
sbit led=P2^0;
sbit led1=P2^1;
sbit KEY=P3^ 0;
sbit Buzzer=P1^5;                                           //定義獨(dú)立按鍵
bit KEYSTA = 1;                                             //按鍵的初始狀態(tài)

void Timer0Init();                                          //定時(shí)器初始化函數(shù)
void KeyProcess();                                          //按鍵處理函數(shù)

/*********************************************************************
* 函 數(shù) 名       : SendData
* 函數(shù)功能                 : 通過串口發(fā)送1字節(jié)數(shù)據(jù)給外部設(shè)備
* 參數(shù)列表       : c - 待發(fā)送的1字節(jié)數(shù)據(jù)
* 函數(shù)輸出             : 無
*********************************************************************/

void SendByte(unsigned char dat)
{
SBUF=dat;
while(!TI);
TI=0;
}
/***************************************************
函數(shù):串口初始化程序
如果只需要串口發(fā)送不需要串口接收就不必開串口接收中斷
**************************************************/
void InitUART(void)
{
SCON=0X50;
TMOD|=0X20;
PCON=0x80;                 //波特率4800//
TH1=0XF3;
TL1=0XF3;
TR1=1;
EA=1;
//ES=1; //打開串口中斷
}
void main()
{
    Timer0Init();
        InitUART();
    KeyProcess();
}

void Timer0Init()
{
    TMOD |= 0x01;
    TH0 = (65536-200)/256;           //定時(shí)2MS
    TL0 = (65536-200)%256;
    EA =1;                                                         
    ET0 = 1;
    TR0 = 1;
}
void KeyProcess()
{
    bit lasttime = 1;                        //定義前一次按鍵值,初始化為1;
    bit a=0;
    KEY = 0x01;                              //按鍵初始化;

    while(1)
    {
        if (KEYSTA != lasttime)              //如果“當(dāng)前按鍵狀態(tài)”與“前一次按鍵狀態(tài)”不同,說明按鍵有動(dòng)作;
        {
            if (lasttime == 1)                //如果按鍵有動(dòng)作了,那么前一次按鍵狀態(tài)為“彈起”(lasttime == 1),說明按鍵按下時(shí),會(huì)響應(yīng)動(dòng)作;
            {
                           led=~led;        
                                            Buzzer_count=Buzzer_time;
                                         SendByte(0xaa);}
                                           lasttime = KEYSTA;           //如果按鍵有動(dòng)作,就更新前一次按鍵的值;
                                                            }
                                 if ( KEYSTA!=lasttime )              //如果“當(dāng)前按鍵狀態(tài)”與“前一次按鍵狀態(tài)”不同,說明按鍵有動(dòng)作;
        {
            if (lasttime ==1 )                //如果按鍵有動(dòng)作了,那么前一次按鍵狀態(tài)為“彈起”(lasttime == 1),說明按鍵按下時(shí),會(huì)響應(yīng)動(dòng)作;
            {
                           led=~led;        
                                            Buzzer_count=Buzzer_time;
                                         SendByte(0xbb);}
                                         
                                                                  
                                            lasttime = KEYSTA;            //如果按鍵有動(dòng)作,就更新前一次按鍵的值;
                                                                                          
                                           }                 
                                                               
                           
                        }            
         }

        

void Timer0() interrupt 1                   //2MS中斷一次
{
    static keybuf = 0xFF;                   //定義一個(gè)靜態(tài)按鍵緩存變量,且值為FF;主要是暫存按鍵狀態(tài);
   TH0 = (65536-200)/256;                   //定時(shí)2MS
    TL0 = (65536-200)%256;
        if(Buzzer_count!=0)
{
  Buzzer_count--;                                //每次進(jìn)入中斷自減,減到0為止,才停止鳴叫//
  Buzzer=~Buzzer;                                //蜂鳴器響//
}

    keybuf = (keybuf << 1) | KEY;           //左移一位,使當(dāng)前的按鍵狀態(tài)移到按鍵緩存中;
    if (keybuf == 0)                        //如果移8次,按鍵狀態(tài)都為0,說明按鍵真正按下;
    {
        KEYSTA = 0;                         //確定按鍵狀態(tài)為按鍵;
    }
    else if (keybuf == 0xFF)                //如果移8次,按鍵狀態(tài)都為1,說明按鍵未按下
    {
        KEYSTA = 1;
    }
}






歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1