日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

52单片机使用T2串口通信

發布時間:2023/12/29 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 52单片机使用T2串口通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

由于某些要求需要在定時器0和定時器1被占用的條件下進行串口通信。其實也可以將定時器1分時進行,但是本著探索精神,記錄一下定時器2的配置使用。

資料

首先在stc的官方數據手冊找到定時器2的介紹(p205)

可以看到它有6個寄存器,其中主要是T2CON的配置

使用

T2CON

官方說明的很清楚。其中要將其作為串口通信時鐘,需要將RCLK和TCLK兩個位置1

其次要計算定時器初值,其中TH2和TL2合并為16位,溢出后將自動重裝RCAP2L和RCAP2H的值,這一點和定時器1的八位自動重裝模式不同

初值計算方式

之后要配置SCON串口模式,打開定時器TR2,打開中斷ES,EA就可以啦

例子

晶振11.0592,波特率115200,每隔1ms向電腦發送一個消息

#include <reg52.h> #include <intrins.h> void ConfigUART(); void delay(unsigned int t) //@11.0592MHz {while(t--){unsigned char i, j;_nop_();_nop_();_nop_();i = 11;j = 190;do{while (--j);} while (--i); } } void main() {EA = 1; //使能總中斷ConfigUART(); //配置波特率為115200while (1){SBUF = 'S';delay(1);} }/* 串口配置函數, baud-通信波特率 */ void ConfigUART() {T2MOD = 0x01;T2CON = 0x30;TH2 = 0xFF;TL2 = 0xFD;RCAP2H = 0xFF;RCAP2L = 0xFD;SCON = 0x50;PCON = 0x00;TR2 = 1;ES = 1;EA = 1; } /* UART 中斷服務函數 */ void InterruptUART() interrupt 4 {if (RI) //接收到字節{RI = 0; //手動清零接收中斷標志位//SBUF = SBUF + 1; //接收的數據+1 后發回,左邊是發送 SBUF,右邊是接收 SBUF}if (TI) //字節發送完畢{TI = 0; //手動清零發送中斷標志位} }

效果

注意

T2MOD要自己在頭文件中定義

只有加強版51單片機才有計時器2

?

總結

以上是生活随笔為你收集整理的52单片机使用T2串口通信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。