• <acronym id="ibnab"><strong id="ibnab"></strong></acronym><track id="ibnab"><strike id="ibnab"></strike></track>
  • <track id="ibnab"></track><acronym id="ibnab"></acronym>
  • <pre id="ibnab"><ruby id="ibnab"></ruby></pre>
  • <td id="ibnab"><noscript id="ibnab"></noscript></td>
  • <p id="ibnab"><label id="ibnab"></label></p>
  • 專注電子技術學習與研究
    當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

    基于51單片機之串口中斷方式實驗

    作者:佚名   來源:CaKen工作室   點擊數:  更新時間:2014年08月28日   【字體:

    **************************  Copyright(C) CaKe  ****************************************

    ========================================================================================
    ==============**版權信息   : CaKen工作室                            ==============
    ==============**文件名     : main.c              ==============
    ==============**作者       : CaKen             ==============
    ==============**版本號     : V1.0              ==============
    ==============**時間       : 2014.08.27               ==============
    ==============**功能描述   : 串口中斷實驗測試            ==============
    ========================================================================================
    ****************************************************************************************
     
    #include
    #define uchar unsigned  char
    #define uint unsigned int
    uchar idata trdata[]={'C','a','K','e','n','_', 'Z','H','C','K','-','5','1',0xaa};
    sbit KEY = P3^2;
    ***************************************************************************************
    函數名:UART_Init();
    調  用:();
     
    備  注:
    ****************************************************************************************
    void UART_Init(void)
    {
       SCON = 0x50;     //串口工作方式為1 , 串行允許接收
       TMOD = 0x20;     //定時器1 工作在方式2
       TH1  = 0xfd;     //波特率 9600bps fosc="11".0592MHz
       TL1  = 0xfd;
       EA   = 1;        //開總中斷
       ES   = 1;        //開串口中斷
       TR1  = 1;        //允許定時器1工作
    }
     
    ***************************************************************************************
    函數名:延時函數
    調  用:();
    ****************************************************************************************
     
    void delay1ms(uint i)
    {
    uchar j;
      while(i--)
      {
       for(j=0;j<115;j++)   //1ms基準延時程序
       {;}
      }
    }
     
    ***************************************************************************************
    函數名:Uart_SendChar();
    調  用:();
    參  數:
    返回值:
    結  果:
    備  注:發送字符
    ****************************************************************************************
     
    void Uart_SendChar(unsigned char dat)
    {
       SBUF = dat; //待發送的數據寫入緩沖區
       while(!TI); //等待發送完成
       TI = 0;     //清零發送標志位
    }
     
    ***************************************************************************************
    函數名:Uart_SendString();
    調  用:();
    參  數:
    返回值:
    結  果:
    備  注:發送字符串
    ****************************************************************************************
     
    void Uart_SendString()
    { uchar i=0;
        while(trdata[i]!=0xaa)
      {
       SBUF=trdata[i];
            while(!TI);
            TI=0;
            i++;
         }
    }
     
    ***************************************************************************************
    函數名:
    調  用:();
    參  數:
    返回值:
    結  果:
    備  注:
    ****************************************************************************************
    void main(void)
    {
        UART_Init(); //初始化串口
        while(1)
         {
        if(KEY==0)
         {
        delay1ms(20);
        if(KEY==0)
        {
          Uart_SendString();
       while(!KEY);//等待按鍵釋放
        }
      }
         }
    }
     
    ***************************************************************************************
    函數名:串口中斷函數
    ****************************************************************************************
     
    void INT_UartRcv(void) interrupt 4
    {
        unsigned char Rcv = 0;
        if(RI)                    //查詢接收標志位(有數據發送過來時置為1)
          {
             RI  = 0;        //接收標志位清零
             Rcv = SBUF;          //存儲緩沖區的數據
             P0  = SBUF;
             Uart_SendChar(Rcv);  //讓從計算機上傳到單片機的數據 , 傳回的計算機顯示
     
          }
    }
     
    =======================================================================================
     -------------------      CaKen工作室  原創作品     --------------------
     -------------------            CaKen工作室  版權所有       --------------------
    ========================================================================================
    關閉窗口

    相關文章

    国产A片好看
  • <acronym id="ibnab"><strong id="ibnab"></strong></acronym><track id="ibnab"><strike id="ibnab"></strike></track>
  • <track id="ibnab"></track><acronym id="ibnab"></acronym>
  • <pre id="ibnab"><ruby id="ibnab"></ruby></pre>
  • <td id="ibnab"><noscript id="ibnab"></noscript></td>
  • <p id="ibnab"><label id="ibnab"></label></p>