<dl id="b4zrn"><label id="b4zrn"></label></dl><thead id="b4zrn"></thead>

    <blockquote id="b4zrn"></blockquote>

      <strike id="b4zrn"></strike>
        1. <div id="b4zrn"><label id="b4zrn"></label></div>
          您好,歡迎訪問上海意泓電子科技有限責任公司網(wǎng)站!
          4新聞資訊
          您的位置: 首頁 ->  新聞資訊 -> 單片機

          ?51單片機 (6)串口中斷通信+定時器2串口中斷

          文章出處:單片機 責任編輯:上海意泓電子科技有限責任公司 發(fā)表時間:
          2018
          05-19

          51單片機默認使用定時器1作為串口通信的波特率發(fā)生器、定時器1中斷通信,串口與定時器1沖突,在遇到定時器不夠用的時候可以用定時器2


          1. #include   

          2.  

          3. void DelayMs(unsigned int i);  

          4. void SerialInit();  

          5. void SendByte(unsigned char sbyte);  

          6. void SendString(unsigned char *pstr);  

          7.   

          8.   

          9. void main(void)  

          10. {  

          11.         SerialInit();  

          12.         while(1);     //注:必需要無限循環(huán)  

          13. }  

          14.   

          15.   

          16. /* 

          17. //單片機時鐘周期:11.0592MHz   以時鐘1作為波特率發(fā)生器 

          18. void SerialInit(){ 

          19.  TMOD=0x20;   //設(shè)置T1工作方式為方式2 

          20.  TH1=0xfd; //給定時器高位裝初值 

          21.  TL1=0xfd; //給定時器低位裝初值 

          22.  TR1=1;  //開定時器 

          23.              //以上是設(shè)置波特率 

          24.  SM0=0;  //設(shè)置串口通訊方式為方式1 

          25.  SM1=1;   

          26.  REN=1;  //串口是否接收數(shù)據(jù)的開關(guān) 

          27.  

          28.  EA=1; //總中斷打開,采用查詢法時不用打開中斷 

          29.  ES=1; //串口中斷開關(guān),采用查詢法時不用打開中斷 

          30. */  

          31. //單片機時鐘周期:11.0592MHz       以時鐘T2作為波特率發(fā)生器  

          32. void SerialInit(){  

          33.      PCON &= 0x7F;      //波特率不倍速 SMOD=0  

          34.      SCON = 0x50;       //方式1,8位數(shù)據(jù),可變波特率,接收允許  

          35.      T2CON  = 0x34;     

          36.      RCAP2H = 0xFF;      

          37.      RCAP2L = 0xDC;    

          38.      TH2    = 0xFF;    

          39.      TL2    = 0xDC;  

          40.          

          41.      EA=1; //總中斷打開,采用查詢法時不用打開中斷   

          42.      ES = 1;          //串口中斷開關(guān),采用查詢法時不用打開中斷  

          43.   

          44. }  

          45.   

          46.   

          47. //串口中斷函數(shù):  

          48. void SerialPortInte(void) interrupt 4 //采用串口中斷法收發(fā)數(shù)據(jù)  

          49. {  

          50.      unsigned char rbyte;  

          51.      if(RI){     //RI=1,判定為串口接收到了數(shù)據(jù),RI要清零,  

          52.          RI=0;  

          53.          rbyte=SBUF;   

          54.          if(rbyte==0x0A){       

          55.             SendString("換行");  

          56.          }else if(rbyte==0x0D){  

          57.             SendString("回車");  

          58.          }else{  

          59.             SendByte(rbyte);   

          60.          }  

          61.               

          62.      }  

          63.   

          64. }  

          65.   

          66. //串口發(fā)送一個字節(jié):  

          67. void SendByte(unsigned char sbyte)  

          68. {   

          69.      SBUF=sbyte; //發(fā)送數(shù)據(jù)  

          70.      while(!TI); //等待發(fā)送完成  

          71.      TI=0; //清零發(fā)送標志位  

          72. }  

          73.    

          74. //串口發(fā)送一個字符串:  

          75. void SendString(unsigned char *pstr) //定義指針  

          76. {  

          77.      while(*pstr!='\0') //字符串是否發(fā)完  

          78.      {  

          79.          SendByte(*pstr);//發(fā)送字符串數(shù)據(jù)  

          80.          pstr++; //指向下一個字符  

          81.      }  

          82. }  

          83.   

          84. void DelayMs(unsigned int i)  //延時i ms  

          85. {  

          86.     unsigned int j;  

          87.     while(i--)  

          88.     {  

          89.         for(j = 0; j < 125; j++);  

          90.     }  


          上海意泓電子科技有限責任公司 版權(quán)所有 未經(jīng)授權(quán)禁止復(fù)制或鏡像

          CopyRight 2020-2025 m.frontgate.com.cn All rights reserved   滬ICP備2021005866號

          久艹视频在线观看这里只有精品,国语自产拍在线视频普通话94,久久婷婷综合缴情亚洲狠狠,亚洲不卡永远在线精品无码
          <dl id="b4zrn"><label id="b4zrn"></label></dl><thead id="b4zrn"></thead>

            <blockquote id="b4zrn"></blockquote>

              <strike id="b4zrn"></strike>
                1. <div id="b4zrn"><label id="b4zrn"></label></div>