Proteus-PIC-虛擬串口----串口調(diào)試仿真
1、準(zhǔn)備工作
本文引用地址:http://m.butianyuan.cn/article/201609/296524.htm首先,需要準(zhǔn)備齊全的軟件:①Proteus;②MPLAB;③串口調(diào)試助手;④虛擬串口Virtual Serial Port Driver
2、繪制簡單電路圖
用不同的LED燈做指示燈
注:PIC和COMP1M電路連接:用串口調(diào)試助手作為輸入/輸出顯示,相關(guān)連線為對應(yīng)連接,即RX-RXD;TX-TXD(虛擬終端SCMR用于觀察單片機(jī)接受到的數(shù)據(jù)值,可去掉),也可以通過LED指示燈查看程序是否按照設(shè)定正常執(zhí)行。
3、編寫相應(yīng)的程序
應(yīng)用MPLAB編寫對應(yīng)的程序:
//*******************************************************
// 工程: 檢驗(yàn)-虛擬串口
//*******************************************************
#include
/****************定義函數(shù)**********************/
void init_PORT();
void init_com();
void interrupt ISR();
/*******************************************************/
__CONFIG(0X3F71);
/******************************************************/
/*初始化PIC單片機(jī)端口*/
void init_PORT()
{
TRISC=0x80; //置RC6/TX與RC7/RX分別為UART的傳送與接收引腳
TRISD=0x00;
RD7=1;
RD6=1;
RC1=1;
RC2=1;
}
//*********************************************************************
//初始化串口
//*********************************************************************
void init_com()
{
TXSTA=0x24;//發(fā)送數(shù)據(jù)控制位配置00100100,異步方式、高波特率,波特率=Fosc/16*(SPBTG+1);
//TXSTA寄存器的D5(TXEN)=1,啟動UART的發(fā)送功能
RCSTA=0x90;//接收數(shù)據(jù)控制位配置10010000,設(shè)置連續(xù)接收數(shù)據(jù)
//RCSTA寄存器的D4(CREN)=1,啟動UART的接收功能
SPBRG=25; //設(shè)置波特率9600,系統(tǒng)時(shí)鐘4MHZ,波特率=4000000/16/(25+1)=9615(Bps)
RCIE=1; //接收中斷使能
TXIE=1; //發(fā)送中斷使能
PEIE=1; //INTCON的D6(PEIE)=1,外圍中斷開關(guān)打開
GIE=1; //總中斷開啟
}
//***********************************************************************************
//中斷服務(wù)子程序
//***********************************************************************************
void interrupt ISR()
{
int RE;
if(RCIF==1) //接收到數(shù)據(jù)產(chǎn)生中斷
{
RCIF=0;
RE=RCREG;
TXREG=RCREG; //將接收到的數(shù)據(jù)返回給上位機(jī),檢驗(yàn)接受和發(fā)送是否正常
RD6=0; //進(jìn)入到中斷,點(diǎn)亮LED-D2
if( RE==0xCC)
{
RC1=0;//接收到0XCC,點(diǎn)亮LED-D3
RC2=1;
}
else
{
RD7=0;//接收到數(shù)據(jù),且是非0XCC,點(diǎn)亮LED-D1
RC1=1;
RC2=0;//點(diǎn)亮LED-D4
}
}
}
/***********************************************************
主程序
***********************************************************/
void main()
{
init_PORT();
init_com();
while(1) ;
}
4、設(shè)置參數(shù)
?、貾IC單片機(jī)的晶振設(shè)置要與外部鏈接晶振設(shè)置一致,本文設(shè)置為4MHz,you see!
?、谠O(shè)置燒寫路徑 Program File,選擇“.hex”文件
?、墼O(shè)置串口參數(shù),如下圖所示:(注:此處Physical Port選擇的是COM1,其實(shí)選擇任何一個(gè)都可以,但是要配合虛擬串口Virtual Serial Port Driver中的設(shè)定,具體見下文)
④設(shè)置虛擬終端SCMR,參數(shù)基本不需要更改
如果輸入的是ASCII碼----不勾選Hex Display mode
如果輸入的是16進(jìn)制-----勾選Hex Display mode
clear screen 是清屏
echo typed characters 是當(dāng)你在虛擬終端窗口輸入字符時(shí),輸入的字符顯示在虛擬中斷窗口內(nèi)。
?、菰O(shè)置虛擬串口Virtual Serial Port Driver和串口調(diào)試助手
標(biāo)記①處默認(rèn)是COM1和COM2,可任意選擇,本文選取默認(rèn)值,點(diǎn)擊旁邊按鈕后,在左側(cè)出現(xiàn)標(biāo)記②,同時(shí)標(biāo)記①處便變成如上圖的COM3和COM4。
上文提到,Proteus中串口設(shè)置為COM1,根據(jù)實(shí)際情況,選取標(biāo)記②中的任意一個(gè)均可,然后串口調(diào)試助手選取標(biāo)記②中的另外一個(gè),即本文為COM2。
5、運(yùn)行
下圖為正常運(yùn)行的效果圖:
評論