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(); //配置波特率為115200
while (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
相關文章
- 串列埠通訊串列埠
- linux 串列埠通訊Linux串列埠
- Android 串列埠通訊Android串列埠
- 11. 串列埠通訊串列埠
- (10)uart串列埠通訊串列埠
- 串列埠通訊型別串列埠型別
- 串列埠通訊協議串列埠協議
- STMF4串列埠通訊使用串列埠
- 串列埠資料抓取及串列埠通訊模擬串列埠
- 通過串列埠進行通訊 :串列埠
- C# SerialPort 串列埠通訊C#串列埠
- 串列埠無法正常通訊串列埠
- ros中使用serial包實現串列埠通訊ROS串列埠
- 小型plc串列埠通訊簡介串列埠
- 安卓串列埠通訊疑問安卓串列埠
- ROS環境下串列埠通訊ROS串列埠
- 串列埠通訊gui介面顯示串列埠GUI
- AndroidSerialPort:安卓串列埠通訊庫Android安卓串列埠
- 使用Modbus4J進行RTU模式串列埠通訊模式串列埠
- C# 串列埠通訊利器 SerialPortStream庫C#串列埠
- STM32串列埠通訊串列埠
- 微控制器學習(七)串列埠串列埠
- 張高興的 MicroPython 入門指南:(三)使用串列埠通訊Python串列埠
- 初步使用Ardunio IDE實現STM32的串列埠通訊IDE串列埠
- 串列埠通訊與其他通訊方式相比有什麼優勢?串列埠
- 如何使用Java串列埠進行資料通訊及應用案例Java串列埠
- 串列埠通訊利器:SerialPortStream庫詳解,輕鬆實現C#串列埠開發串列埠C#
- C#實現掃碼槍串列埠通訊C#串列埠
- 打工筆記--------------------------c#實現串列埠通訊筆記C#串列埠
- Arduino下的STM32的串列埠通訊UI串列埠
- 樹莓派已經通過網路連線通過串列埠通訊在串列埠除錯小助手列印與操作樹莓派串列埠除錯
- 基於WebSocket的modbus通訊(三)- websocket和串列埠Web串列埠
- Java實現RS485串列埠通訊Java串列埠
- 串列埠通訊上位機資料傳輸協議串列埠協議
- 定位模組LuatOS快速入門:源UART串列埠通訊串列埠
- 串列埠通訊常見的錯誤和故障排除方法串列埠
- 一種MODBUS RTU擴充套件串列埠通訊協議套件串列埠協議
- Android使用cmake編譯串列埠通訊.so檔案報錯cannot locate symbol "tcgetattr"Android編譯串列埠Symbol