51微控制器 (5)VSPD+Proteus+串列埠除錯工具+Keil C51實現微控制器串列埠通訊模擬
阿新 • • 發佈:2019-02-01
【若有疑問錯誤或版權等問題請聯絡我】
1、效果圖
2、虛擬串列埠
通過VSPD虛擬串列埠工具虛擬出兩個串列埠用於通訊
3、串列埠除錯
開啟兩份串列埠除錯工具,第一個開啟com1,第二個開啟com2,這時在任一串列埠除錯工具傳送資訊,另一個串列埠除錯工具中能接收到資訊
4、Proteus電路設計圖
P1串列埠:屬性原件值COMPIM,Physical port為com2,Physical Baud rate為9600
虛擬終端(Virtual Terminal):接RXD介面的虛擬終端顯示微控制器通過com2接收到的資訊,接TXD介面的虛擬終端顯示微控制器傳出的資訊。
5、51微控制器程式程式碼
#include <reg52.h> void init(); void main(){ unsigned char temp=0xff; init(); while(1){ if(RI){ //RI=1,判定為串列埠接收到了資料,RI要清零, RI=0; temp=SBUF; }else{ P1=temp; } } } void init(){ TMOD=0x20; //設定T1工作方式為方式2 TH1=0xfd; //給定時器高位裝初值 TL1=0xfd; //給定時器低位裝初值 TR1=1; //開定時器 //以上是設定波特率 SM0=0; //設定串列埠通訊方式為方式1 SM1=1; REN=1; //串列埠是否接收資料的開關 }
6、執行
串列埠除錯工具接com1口傳送的資料,可在接RXD的虛擬終端顯示; 但是微控制器基本沒反應,因為我寫的程式碼是通過資訊來控制燈亮滅,而資訊格式不合法。 改進:在串列埠除錯工具勾選“按十六進位制傳送”,虛擬終端勾選“Hex Display Mode”,傳送“0”則燈全亮,傳送“fe”則燈P1.0亮。參考文章