學習單片機過程中遇到兩個問題:
1、寫好串口代碼,手邊沒有硬件調試;
2、串口收發出現奇怪的問題,無法定位;
經過百度,百度,再百度后,終於找到了解決方法,那就是:串口收發仿真。不多說,總結如下:
實驗需要的軟件:VSPD(Virtual Serial Port Driver)、串口調試助手、Keil
環境搭建:
1、VSPD配置:
△點擊1處選擇兩個互相通信的串口,其中一層的串口要和串口調試助手設置的串口相同,且兩個串口的串口號是在Keil中可識別的(稍后Keil部分詳說);
△選好串口后,點擊2處添加;
△ 當要刪除串口對時,在串口沒被占用的情況下,點擊4刪除;
2、串口調試助手設置:
⊙設置好相關參數,包括串口、波特率、校驗位等,另外為了使接收的數據不出現亂碼,采用十六進制發送和顯示,如圖:
3、Keil設置:
⊙源碼編譯通過后,打開Debug
⊙在【View】中選擇打開【Command window】,如圖:點擊1和3可以切換到命令窗口和串口數據監視窗口,在命令窗口下,2處為輸入命令行;
⊙用命令對串口設置:
△如圖,輸入命令時,在其下方2處會有命令提示:
△在輸入com后會顯示出當前系統中可識別的串口(VPSD中設置可參考):
△設置被綁定計算機串口參數,使用mode命令,其后參數與串口調試助手中設置參數相同,命令格式為:
MODE COMx baudrate, parity, databits, stopbits
COMx:計算機串口號(VSPD中設置的串口號);
Baudrate:波特率
Parity:校驗方式,0表示無校驗,1表示奇校驗,2表示偶校驗
Databits:數據位
Stopbits:停止位
△設置好參數后需要將單片機串口綁定到計算機串口,使用assign命令,命令格式如下:
ASSIGN channel <inreg> outreg
Channel:計算機串口號,設置好參數的串口;
<inreg>和outreg:代表單片機串口,對於只有一個串口的單片機,即<SIN>和SOUT;對於有兩個或多個串口的單片機為<SnIN>和SnOUT(n為0,1,2…)。注意:<SIN>的<>必須帶上;
△設置好后,能看到VSPD的串口處有參數:
到此,單片機串口收發仿真的環境就搭建完成了,接下來進行仿真操作。需要注意的是,串口仿真既需要單步調試查看具體情況,也需要全速運行模擬現實的通信。
仿真的串口通信和現實串口測試相似:串口助手模擬上位機發送和接受數據,Keil環境模擬單片機串口,它的串口監視窗口顯示單片機從上位機收到的數據。