|
在PROTEUS上采用雙單片機(jī)A和B,采取TXD連接另一個(gè)單片機(jī)的RXD,建立一對一通信A外接4個(gè)按鍵,編號1~3;B外接一個(gè)數(shù)碼管,平時(shí)顯示0。 A按鍵后,B顯示相應(yīng)鍵號0.3秒;
進(jìn)階要求1:A的TXD與B的RXD間加入按鍵開關(guān)K,通過K的ON/OFF來控制通信連接的有效和無效;
運(yùn)行中,K由ON改為OFF,通信無效時(shí),B不響應(yīng)A的按鍵表示通信未建立;
進(jìn)階2:通信無效時(shí),B顯示9,表示通信無效;運(yùn)行中K由OFF改為ON,系統(tǒng)自動回復(fù)正常
1,首先考慮資源分配
波特率設(shè)置要用定時(shí)器1自動重裝載模式。
定時(shí)器1用于產(chǎn)生10ms中斷
定時(shí)器2用來產(chǎn)生20ms中斷
故可選用89c52單片機(jī)
2:主函數(shù)完成3個(gè)定時(shí)器初始化函數(shù),之后在while(1)休眠或啥也不干。
3:定時(shí)器2中斷服務(wù)函數(shù):
自動重裝載模式不需要重置本定時(shí)器
按鍵掃描函數(shù)獲取鍵號,若無按鍵鍵號為0
重置并啟動超時(shí)定時(shí)器(tim0)
根據(jù)S_OK狀態(tài)點(diǎn)亮LED(S_OK=0時(shí)點(diǎn)亮)
4:接收中斷模塊
S_OK置1
關(guān)閉超時(shí)定時(shí)器
5:10ms定時(shí)中斷模塊
S_OK=0
關(guān)閉超時(shí)定時(shí)器
接收B板模塊
同樣需要3個(gè)定時(shí)器
1:main函數(shù)中三個(gè)定時(shí)器初始化
2:接收中斷
直接顯示鍵號,開啟0.3s定時(shí)器
重置啟動超時(shí)定時(shí)器
發(fā)送信息給A板
3:0.3s定時(shí)中斷
關(guān)閉本定時(shí)器
顯示0
4:超時(shí)中斷函數(shù)
S_OK=0
數(shù)碼管顯示9
關(guān)閉本定時(shí)器
關(guān)閉0.3s定時(shí)器
發(fā)送A板主函數(shù)文件程序示例。完整程序和proteus圖見附件。
單片機(jī)源程序如下:
全部資料51hei下載地址:
程序源碼和原理圖.rar
(105.97 KB, 下載次數(shù): 33)
2020-5-18 08:16 上傳
點(diǎn)擊文件名下載附件
|
|