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

          新聞中心

          STC15F2K60S2串口2程序

          作者: 時(shí)間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
          下面是串口2的程序,昨天一直沒調(diào)出來的原因是由于串口發(fā)送完中斷標(biāo)志位,置位和清零上出了問題。其中為什么要把它,照著資料手冊上那種方式寫才行,這我現(xiàn)在也沒大清楚,我想可能這需要反匯編才看的出來,由于競賽時(shí)間緊,只有暫且放下進(jìn)一步的分析,下面是程序代碼。
          #include "reg51.h"
          sfr P4 = 0xc0;
          sfr P5 = 0xc8;
          sfr AUXR = 0x8e ;
          sfr S2CON = 0x9a ;
          sfr S2BUF = 0x9b ;
          sfr T2H = 0xd6 ;
          sfr T2L = 0xd7 ;
          sfr IE2 = 0xaf ;
          sfr IP2 = 0xb5 ;
          #define S2RI 0x01 // S2CON.0
          #define S2TI 0x02 // S2CON.1
          unsigned char temp ;
          bit flag1 = 0 , flag2 = 0 , busy = 0 ;
          unsigned char xdata Uart1TxBuffer [20] = "杜興杰你必須加油個(gè)"; //
          void SendData ( unsigned char date ) ; //數(shù)據(jù)發(fā)送函數(shù)定義
          void Uart2Init(void) //9600bps@11.0592MHz
          {
          S2CON = 0x50; //8位數(shù)據(jù),可變波特率
          AUXR |= 0x04; //定時(shí)器2時(shí)鐘為Fosc,即1T
          T2L = 0xE0; //設(shè)定定時(shí)初值
          T2H = 0xFE; //設(shè)定定時(shí)初值
          AUXR |= 0x14; //啟動定時(shí)器2 4 注意這里
          EA = 1 ;
          IE2 = 0x01 ; //開啟串口中斷ES2
          IP2 |= 0x00 ; //串口2優(yōu)先級0
          }
          void main( void )
          {
          char i ;
          P0 = 0 ;
          Uart2Init() ;
          SendData (C) ;
          SendData (C) ;
          for ( i = 0 ; i < 20 ; i++ )
          {
          SendData (Uart1TxBuffer[i]) ;
          }
          for ( i = 0 ; i < 20 ; i++ )
          {
          SendData (Uart1TxBuffer[i]) ;
          }
          SendData (C) ;
          SendData (C) ;
          while(1)
          {
          if( flag2 == 1 )
          {
          SendData ( temp );
          flag2 = 0 ;
          }
          }
          }
          void Uart2( void ) interrupt 8
          {
          if( S2CON & S2RI )
          {
          S2CON &= ~ S2RI ;
          temp = S2BUF ;
          flag2 = 1 ;
          }
          if( S2CON & S2TI )
          {
          S2CON &= ~ S2TI ;
          busy = 0 ;
          }
          }
          void SendData ( unsigned char date )
          {
          while ( busy ) ; //
          busy = 1 ;
          S2BUF = date ;
          // while ( !( S2CON & 0x02 ) ) ;
          // S2CON &= ~ S2TI ;
          }
          下一步是把串口1和串口2 加在一起,還有就是加入循環(huán)隊(duì)列實(shí)現(xiàn)流控等



          關(guān)鍵詞: STC15F2K60S2串口

          評論


          技術(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); })();