<address id="tnvjh"></address>
    <form id="tnvjh"><listing id="tnvjh"><meter id="tnvjh"></meter></listing></form>

      <form id="tnvjh"></form>

      <address id="tnvjh"><th id="tnvjh"></th></address>

        專注電子技術學習與研究
        當前位置:單片機教程網 >> 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工作室  版權所有       --------------------
        ========================================================================================
        關閉窗口

        相關文章

        和老头做爰很舒服,JK白丝裤袜开裆自慰喷水,在线天堂www在线...中文

          <address id="tnvjh"></address>
          <form id="tnvjh"><listing id="tnvjh"><meter id="tnvjh"></meter></listing></form>

            <form id="tnvjh"></form>

            <address id="tnvjh"><th id="tnvjh"></th></address>