1. 程式人生 > >51微控制器 (5)VSPD+Proteus+串列埠除錯工具+Keil C51實現微控制器串列埠通訊模擬

51微控制器 (5)VSPD+Proteus+串列埠除錯工具+Keil C51實現微控制器串列埠通訊模擬

【若有疑問錯誤或版權等問題請聯絡我】

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亮。

參考文章