<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)串口通信的注記

          51單片機(jī)串口通信的注記

          作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          最近折騰51單片機(jī),當(dāng)然學(xué)到的都是比較基礎(chǔ)的東西,可能我認(rèn)為比較復(fù)雜的概念有“中斷” 和“串口通信”,這篇主要是講串口通信

          使用的自然是山大王STC89C52RC的芯片來學(xué)習(xí)

          本文引用地址:http://www.ex-cimer.com/article/201611/318585.htm

          串口通信主要是C51單片機(jī)的RXD 和TXD 與上位機(jī)進(jìn)行通信,由于上位機(jī)一般是電腦,所以要TTL轉(zhuǎn)成電腦能讀出的RS232的電路來支持 一般使用MAX232 芯片 串口通信電路如下


          之后就可以電腦的串口與這里的串口頭子接了,注意 串口先要交叉一下 即電腦的TXD 對(duì)應(yīng)下位機(jī)的RXD

          C信模式有4種,最常用的是第一種

          方式0 同步移位寄存器方式 ,一般用來擴(kuò)展I/O口,

          方式1 10位異步收發(fā)(8位數(shù)據(jù)),波特率可變(由定時(shí)器1的溢出率控制)

          方式2 11位異步收發(fā)(9位數(shù)據(jù)),波特率固定

          方式4 11位異步收發(fā),波特率可變(定時(shí)器1溢出率決定)


          各種需要配置的參數(shù)如下所示


          TI
          發(fā)送中斷標(biāo)志位
          當(dāng)發(fā)送一幀完畢后,由硬件使TI=1,向外部發(fā)送中斷申請(qǐng),在中斷服務(wù)程序中,必須用軟件手動(dòng)TI = 0,否則一直卡在中斷里(測(cè)試一下)

          RI
          接受中斷標(biāo)志位
          當(dāng)接收一幀完畢后,由硬件使RI = 1, 向外部發(fā)送中斷申請(qǐng),也必須要在中斷服務(wù)程序中,用軟件將其清0,取消此次中斷申請(qǐng)

          ES
          串行中斷允許位
          1 為開打 0為關(guān)閉

          REN
          允許串行接受位
          1 為打開 0 為關(guān)閉

          SBUF
          串口緩存
          在讀寫完畢后,存儲(chǔ)的是相應(yīng)的讀/寫值(注意,SUBF實(shí)際有兩個(gè)寄存器,一個(gè)放寫一個(gè)放讀)

          SM0/1
          串口設(shè)置工作方式
          設(shè)置4種工作方式,注意,最好是設(shè)置好工作方式再開串口傳授

          EA
          終端總開關(guān)

          TR1
          定時(shí)器1開關(guān)

          TH1/TL1
          定時(shí)器初值
          為了滿足9600 的波特率 所以需要將TH1 TL1 設(shè)置為0xfd

          TMOD
          定時(shí)器運(yùn)行模式
          在串口通信的1號(hào)方式的時(shí)候 需要打開T1的串口通信 TMOD= 0x20 ,即第二種方式,8位自動(dòng)重裝

          ET0/1
          中斷允許開關(guān)
          time0 time1

          之后是我的印象筆記的兩篇關(guān)于串口通信筆記的分享

          http://app.yinxiang.com/shard/s20/sh/6abe8da0-d4b8-4407-9848-3142dde1bed5/ba2a0a6debaab317aaca09185ce65c71
          http://app.yinxiang.com/shard/s20/sh/0faa2671-1e95-4d08-9d12-b1bdedc0eadd/13e7a915ea347b0daf3aca30fd9a6a74

          我自己寫的個(gè)簡(jiǎn)單的串口通信

          #include
          #define uint unsigned int
          #define uchar unsigned char
          uchar code table[] = "Hi ";

          uchar receiveFlag=0;

          void init(){
          TMOD = 0x20;
          TH1 = 0xfd;
          TL1 = 0xfd;

          SM0 = 0;
          SM1 = 1;
          REN = 1;


          EA = 1;
          TR1 = 1;
          }

          void main(){
          uchar serVal,i;
          init();
          receiveFlag = 1;

          while(1){
          if(receiveFlag == 1){
          ES = 1;
          while(RI==0);
          serVal = SBUF;

          RI = 0;
          receiveFlag = 0;
          }
          if(receiveFlag==0){ //need to send msg;
          for(i =0;i<3;i++){
          SBUF = table[i];
          while(TI==0);
          TI = 0;
          }
          SBUF = serVal;
          while(TI ==0);
          TI = 0;
          receiveFlag = 1;
          }
          }

          }


          void receive_data() interrupt 4{
          RI = 0;//手動(dòng)清0
          ES = 0;
          receiveFlag = 0;

          }



          關(guān)鍵詞: 51單片機(jī)串口通

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();