51微控制器 UART串列埠通訊

2021-06-27 06:58:32 字數 1382 閱讀 2959

使用半雙工通訊

/************************************

使用硬體uart模組和串列埠中斷

************************************/

#include typedef unsigned int uint;

void configuart(uint baud);

void main()

void configuart(uint baud)

//中斷型別碼為4,中斷向量的位址 = 中斷型別碼 * 8 + 3

void interruptuart() interrupt 4

if (ti)

}

下面的程式把書上的**做了點優化,加了乙個isnewinfo,在主迴圈裡判斷只有當接收到了新的位元組資料以後才更新顯示緩衝區。

#include typedef unsigned char uchar;

typedef unsigned int uint;

typedef unsigned long ulong;

sbit addr3 = p1^3;

sbit enled = p1^4;

uchar code ledchar = ;

uchar ledbuf[7] = ;

uchar t0rh = 0; //t0過載值的高位元組

uchar t0rl = 0; //t0過載值的低位元組

uchar rxdbyte = 0; //串列埠接收到的位元組

bit isnewinfo = 0; //是否接收到了新資訊

void configtmr0(uint ms);

void configuart(uint baud);

void ledscan();

//void interrupttmr0();

//void interruptuart();

void main()

}}/* 配置並啟動t0,ms-t0定時時間 */

void configtmr0(uint ms)

/* 串列埠配置函式,baud-通訊波特率 */

void configuart(uint baud)

/* led動態掃瞄重新整理函式,需在定時中斷中呼叫 */

void ledscan()

/* t0中斷服務函式,完成led掃瞄 */

void interrupttmr0() interrupt 1

/* uart中斷服務函式 */

void interruptuart() interrupt 4

if (ti)

}

51微控制器串列埠通訊

1 並行通訊 傳送方和接收方用多根資料線連線,多位資料同時傳送。傳輸線多,長距離傳輸時成本大。2 序列通訊 單根資料線傳送資料,逐位傳送。長距離傳送成本低,但控制相對複雜。序列通訊又可分為 非同步序列通訊和同步序列通訊。非同步序列通訊 所謂 非同步 指的是雙方裝置使用各自的時鐘,以字元為單位傳輸,採...

51微控制器複習 串列埠通訊

計算機通訊是指計算機與外部裝置或計算機與計算機之間的資訊交換。比如電腦和微控制器 通訊有並行通訊和序列通訊兩種方式。在多微機系統以及現代測控系統中資訊的交換多採用序列通訊方式。並行通訊 通常是將資料位元組的各位用多條資料線同時進行傳送 比如這樣說,乙個位元組有八位,我有八根線,一根傳一位,八位同時傳...

51微控制器串列埠通訊詳解

51微控制器配置除了需要配置2個8位暫存器scon pcon外,還要配置定時器1的控制暫存器tmod,因為串列埠在進行收發需要使用定時器來取樣。1 狀態控制暫存器 scon scon 是乙個逐位定義的 8 位暫存器,用於控制序列通訊的方式選擇 接收和傳送,指 示串列埠的狀態,scon 即可以位元組定...