51微控制器和PC串列埠非同步通訊(續)

2021-06-08 18:44:36 字數 1390 閱讀 7205

下面的程式的主要功能為:通過串列埠除錯助手向51微控制器傳送乙個字母,微控制器接收後,在數碼管上顯示這個字母,並將這個字母反向顯示到串列埠除錯助手的介面裡。

51微控制器的標頭檔案中已經定義了串列埠緩衝區等一系列特殊功能暫存器,開啟標頭檔案就可以找到下面這樣的定義:

sfr scon  = 0x98;

sfr sbuf  = 0x99;

等等。首先新建立乙個標頭檔案,將程式中要用到的變數和函式宣告寫進去:

#include #include #define uchar   unsigned char

sbit dula=p2^6;

sbit wela=p2^7;

//從計算機傳送給微控制器的字母

uchar letter;

//table陣列中儲存數碼管顯示0~f對應的編碼

//這裡只用a~f即可

uchar code table=;

void inital();

void display(uchar mydata);

void putchar(uchar mydata);

void shortdelay();

包含標頭檔案的主要目的為利用庫函式toupper(),可以講讀入的字母均轉換成大寫,便於呼叫display函式在數碼管上顯示。

主函式很簡單,首先初始化,然後便進入永遠為真的迴圈中,等待中斷的發生,並處理。

void main()

}

初始化函式用於開啟中斷,設定計時器,串列埠通訊的工作方式,變數初始化的工作:

void inital()

中斷服務函式在中斷發生時由cpu呼叫,在其內部又呼叫了 display,putchar函式用於在數碼管顯示字母,和在電腦上回顯輸入的字母。

//中斷服務函式

void ser() interrupt 4

}

display函式用到的只是在前面有關數碼管的文章中已有涉及,直接貼出**:

void display(uchar mydata)  

void shortdelay()

向計算機傳送資訊的putchar函式

void putchar(uchar mydata)

如此這樣,利用串列埠除錯助手就可以向微控制器傳送字母,在數碼管顯示此字母,並能夠在軟體介面上顯示剛剛傳送出去的字母內容了。

51微控制器串列埠通訊

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

微控制器 串列埠與PC通訊

先通過串列埠除錯工具即pc傳送字元給微控制器,微控制器接收資料後再發給pc,再次通過串列埠除錯工具觀察傳送結果,即實現了pc到微控制器的收發 由於本地 需要安裝虛擬串列埠,pc用com1口,mcu的compim設為com2,波特率均為9600 org 0000h ajmp main org 0023...

51微控制器 UART串列埠通訊

使用半雙工通訊 使用硬體uart模組和串列埠中斷 include typedef unsigned int uint void configuart uint baud void main void configuart uint baud 中斷型別碼為4,中斷向量的位址 中斷型別碼 8 3 voi...