<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        STC12單片機串口2的應用

        作者:佚名   來源:本站原創   點擊數:  更新時間:2014年04月10日   【字體:

        心得:串口2只能使用“獨立波特率發生器”作為波特率發生器;
             串口1可以用定時器1做波特率發生器,也可以選擇“獨立波特率發生器”作為波特率發生器。           

        stc12c5a.h stc12的頭文件從:http://www.thefapper.com/mcu/3282.html 這里下載.

        雙串口.c
        //******************************(STC12串口2應用)*****************************************
        // 馬梓熔
        //2012-12-4
        //***************************************************************************************
        #include "STC12C5A.h"
        #define uchar unsigned char
        #define uint unsigned int
        #define Buf_Max 40
        uchar i;
        uchar  Rec_Buf[]="hello! mazirong\n";    //uchar Rec_Buf[Buf_Max]; 這樣寫上位寫什么 下位機接收什么,大大增加了靈活性
        //********************延時函數
        void delay(uint z)
        {
         uint i,j;
         for(i=z;i>0;i--)
          for(j=110;j>0;j--);
        }
        //********************串口2初始化
        void Serial_Iint()
        {
         S2CON=0x50;  //S2SM0 S2SM1=0 1   S2REN=1 //串口2的工作方式1,接收位允許
         PCON=0x00;  //波特率不加倍
         AUXR=0x10;  //BRTR=1,允許獨立波特率發生器運行
         BRT=0XFD;  //獨特波特率發生器定時器
         EA=1;
         IE2=0x01;   //開串口2中斷
        }
        //*******************發送一個字符
        void Send_Char(uchar a)
        {
         IE2=0x00;
         S2BUF=a;
         delay(200);
         while(!(S2CON&0x02)); //while(!S2TI) 等待S2TI變為1
         S2CON&=0xFD;   //S2TI清0
         IE2=0x01;
        }
        //*******************發送一個字符串
        void Send_String(uchar *tab)
        {
         IE2=0x00;
         while(*tab!='\0')
          {
           Send_Char(*tab++);
          }
         IE2=0x01;
        }
        //********************主函數
        void main()
        {
         while(1)
         {
          Serial_Iint();
          delay(1000);
          Send_String(Rec_Buf);
          delay(1000);
         }
        }
        //********************串口2中斷函數
        void Serial_2Int() interrupt 8
        {
         IE2=0x00;         //關串口中斷,防止中斷的嵌套
         if(S2CON&0x02)      //如果是串口2發送中斷(S2TI)不進行處理
          {
           S2CON&=0xFD;  //S2TI清0
          }
         if(S2CON&0x01)   
          {
           S2CON&=0xFE;  //S2RI清0
           Rec_Buf[i]=S2BUF;
           i++;
           if(i>Buf_Max)
            {
             i=0;
            }
          }
         IE2=0x01;         //開啟串口中斷
        }

        關閉窗口
        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮