99久久亚洲女同一区二区_国产成人亚洲欧美二区综_中国精品一级毛片免费播放_午夜福利深夜XX00视频无卡顿_动漫人物打扑克牌又疼又叫_中午字幕在线播放_深夜福利网站在线_国产成人免费福利网站_欧美成年黄网站色高清视频_欧美色黄禁片短视频

固話(huà):0592-8011678 熱線(xiàn):13306028255 客服 :
 

單片機(jī)

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

分類(lèi):?jiǎn)纹瑱C(jī) 發(fā)布:2019-03-20 10:47:17 瀏覽:437次 Tag:

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.     }  


相關(guān)文章
在線(xiàn)留言聯(lián)系我們
電話(huà):0592-8011678
傳真:0592-8011678
聯(lián)系人:王女士
24H熱線(xiàn):13306028255
聯(lián)系QQ: 656368133
郵箱:656368133@qq.com
網(wǎng)址:633100.cn
QQ在線(xiàn)咨詢(xún)
銷(xiāo)售電話(huà):
13306028255
0592-8011678
656368133
掃碼添加微信