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