|
近幾天進行單片機串口通訊實驗,因涉及其他方面的設計,所以需要尋找一款能支持STC的51單片機的仿真平臺先進行測試。結果下載了新版本的Proteus,才意外地發現這新版的Proteus竟然支持STC15W單片機仿真實驗。 以前都一直用Proteus 7的,里面的51單片機只有老款的,根本適應不了當前的主流51單片機。如今的8.10版本已經集成了STC15W4K32S4,雖然STC單片機型號只有一種,但基本上已適應了形勢的發展。集成的STC15W4K32S4是64腳的,普通實驗已經完全滿足! 接著,簡單地搭建了STC15W串口通訊電路。電路由兩片STC15W組成,各自有一個LED作顯示,主機有一個輕觸開關。 串口通訊協議如下:
主機按下輕觸開關時,主機通過串口向從機發送0xaa,從機接收到0xaa時,從機上的LED改變狀態(亮變滅或滅變亮),同時通過串口返回數據0x55,當主機收到從機返回的數據0x55時,主機上的LED改變狀態(亮變滅或滅變亮)。
然后是代碼的編寫。因為功能簡單,所以不難編寫。 下面是關鍵代碼串口中斷服務程序: - void Uart() interrupt 4//UART 中斷服務程序
- {
- if (TI)
- {
- TI = 0; //清除TI位
- }
- if (RI)
- {
- RI = 0; //清除RI位
- ckdat=SBUF;
- #if SLAVE == 1
- if(ckdat==0x55)
- LED=!LED;
- #else
- if(ckdat==0xaa)
- {
- LED=!LED;
- SBUF=0x55;
- }
- #endif
- }
- }
復制代碼 2026.1.17
|