您好,歡迎訪(fǎng)問(wèn)上海意泓電子科技有限責(zé)任公司網(wǎng)站!
      4新聞資訊
      您的位置: 首頁(yè) ->  新聞資訊 -> 單片機(jī)

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

      文章出處:?jiǎn)纹瑱C(jī) 責(zé)任編輯:上海意泓電子科技有限責(zé)任公司 發(fā)表時(shí)間:
      2018
      05-19

      51單片機(jī)默認(rèn)使用定時(shí)器1作為串口通信的波特率發(fā)生器、定時(shí)器1中斷通信,串口與定時(shí)器1沖突,在遇到定時(shí)器不夠用的時(shí)候可以用定時(shí)器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);     //注:必需要無(wú)限循環(huán)  

      13. }  

      14.   

      15.   

      16. /* 

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

      18. void SerialInit(){ 

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

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

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

      22.  TR1=1;  //開(kāi)定時(shí)器 

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

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

      25.  SM1=1;   

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

      27.  

      28.  EA=1; //總中斷打開(kāi),采用查詢(xún)法時(shí)不用打開(kāi)中斷 

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

      30. */  

      31. //單片機(jī)時(shí)鐘周期:11.0592MHz       以時(shí)鐘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; //總中斷打開(kāi),采用查詢(xún)法時(shí)不用打開(kāi)中斷   

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

      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("回車(chē)");  

      58.          }else{  

      59.             SendByte(rbyte);   

      60.          }  

      61.               

      62.      }  

      63.   

      64. }  

      65.   

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

      67. void SendByte(unsigned char sbyte)  

      68. {   

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

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

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

      72. }  

      73.    

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

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

      76. {  

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

      78.      {  

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

      80.          pstr++; //指向下一個(gè)字符  

      81.      }  

      82. }  

      83.   

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

      85. {  

      86.     unsigned int j;  

      87.     while(i--)  

      88.     {  

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

      90.     }  


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

      CopyRight 2020-2025 www.topsschool.com All rights reserved   滬ICP備2021005866號(hào)

      亚洲精品无码va人在线观看,少妇 逼小 水多,国产区免费av,国产精品无码观看

          亚洲一区亚洲二区欧美一区| 亚洲欧美日韩综合一区二区| 国产欧美日韩第一章午夜在线| 久久国产对白视频| 亚洲精品久久久久久蜜桃| 亚洲视频在线观看免费| 日本中文字幕www| 精品午夜福利短视频无码| 亚洲精品揄拍自拍首页一| 亚洲动作一级片高清无码| .国产又黄色精品视频| 日本一区二区三区免费精品| 成人动漫精品一区二区二区| 亚洲色婷婷一区二区三区| 久久天天躁夜夜躁很很| 99久久亚洲综合精品网站| 性影院| 欧美日韩在线观看第一页| 亚洲天天在线无码av| 青青人人97超碰精品| 最新人妻系列无码专区| 成人影院网站ww555久久精品| 久久se精品一区无码| 中文字幕丰满人妻无码专区| 亚洲欧美日韩中文在线不卡网| 亚洲精品无码AV中文永久在线| 精品人妻乱码一区二区三区| 欧美特黄片久久停片免费| 国产欧美日韩va另类影音先锋|