色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 串行通訊(單片機)

          串行通訊(單片機)

          作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
          #include

          #include
          #include "config.h"

          本文引用地址:http://cafeforensic.com/article/201611/320669.htm

          #defineucharunsigned char
          #define uintunsigned int
          #define BEEPP0_5

          ucharReceiveBuf;//定義接受緩沖區(qū)
          ucharSendBuf[] = {11, 22};//將發(fā)送的數(shù)組放在數(shù)組SendBuf[]中

          // 延時函數(shù)
          void delay(uint n)
          {
          uint i, j;
          for(i = n; i > 0; i--)
          for(j = 115; j > 0; j--);
          }

          //串行口的初始化函數(shù)
          void series_init()
          {
          SCON = 0X50;//串口工作方式1,允許接收
          TMOD = 0X20;//定時器T1工作方式2
          TH1 = 0XFD; TL1 = 0XFD;//定時初值
          PCON &= 0X00;//SMOD=0
          TR1 = 1;//開啟定時器1
          EA = 1;//開總中斷
          ES = 1;//開串行中斷
          }

          void main(void)
          {
          series_init();
          for(;;){//等待中斷
          }
          }

          void series() interrupt 4
          {

          RI = 0;//接收中斷清零
          ES = 0;//暫時關(guān)閉串口中斷
          ReceiveBuf = SBUF;//將接收到得數(shù)據(jù)保存到ReceiveBuf中
          if(islower(ReceiveBuf) || isupper(ReceiveBuf) || isdigit(ReceiveBuf)){
          SBUF = ReceiveBuf;//將接收到的字符發(fā)送出去
          while(!TI);//等待發(fā)送完畢
          TI = 0;//發(fā)送完畢,TI(發(fā)送中斷標志)清0
          BEEP = 1;
          delay(100);
          BEEP = 0;
          }
          ES = 1;//打開串口中斷
          }

          串行中斷程序的編寫步驟:

          1. 設(shè)置串行口工作方式

          2. 設(shè)置定時器T1工作方式,定時器T1作為波特率發(fā)生器,一般選用方式2,因為其可以自動裝入初值功能,可以使波特率更加穩(wěn)定

          3. 設(shè)置定時初值

          4. 設(shè)置波特率倍增位,不能位尋址,可以通過PCON設(shè)置,最高位就是SMOD倍增位,1時倍增

          5. 開定時器和中斷

          6. 串行中斷程序中,首先接收中斷清零,關(guān)閉串口中斷

          7. 取出接收到 的數(shù)據(jù)進行處理然后發(fā)送

          8.發(fā)送完后打開串行中斷繼續(xù)接收數(shù)據(jù)



          關(guān)鍵詞: 串行通訊單片

          評論


          技術(shù)專區(qū)

          關(guān)閉