| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
| 0 | 0 | 0 | d4 | d3 | d2 | d1 | d0 |
在鍵盤輸入、計數(shù)器回等或串行通信中斷時,多功能接口將向INTR發(fā)出負脈沖,主機在響應后應發(fā)讀狀態(tài)指令,查詢狀態(tài)標志,確定是哪個狀態(tài)標志動作。其中d0為鍵盤輸入標志,d1為計數(shù)器0回零動作。d2為計數(shù)器1回零標志。d3為串行接收結束標志,d4為串行發(fā)送結束標志。
4 多功能接口的軟件設計
在主程序中進行顯示掃描和鍵盤掃描,如有鍵盤輸入,則找出鍵盤矩陣的鍵號。鍵號存入鍵值寄存器,并置位狀態(tài)標志,同時發(fā)出INTR負脈沖,通知主機來取鍵值。
主機通過指令對多功能接口進行操作。主機首先要將CE置0。該下降沿通過P3.2向多功能接口發(fā)出外部中斷。在中斷服務程序中,多功能接口進行取指和譯碼操作,并通過散轉(zhuǎn)指令轉(zhuǎn)入相應的處理通道。則中斷返回。至此,一條指令的取指-譯碼-執(zhí)行的過程才告結束。程序回到主循環(huán)繼續(xù)進行顯示掃描和鍵盤掃描。
所謂取指操作實際上就是多功能接口與主機進行通信的過程。由于采取軟件進行通信,t1、t2、t3、t4、t5的寬度有一定的范圍。
在接收到主機的操作指令后,多功能接口與外設的串行通信及有關定時器的操作采用中斷方式進行。在中斷結束時,置位狀態(tài)標志,并向主機發(fā)INTR負脈沖。該負脈沖可供主機查詢,也可作為向主機發(fā)出的中斷請求信號。完成以上工作后,返回主程序。
89C52有三個定時器,其中T2在中串行通信時間來作為串行通信的波特率發(fā)生器。這樣T0和T1就可以出借給用戶作定時器內(nèi)。T2在波特率發(fā)生器方式時,可置位T2CON寄存器中的TCLK位或RCLK位。在TH2、TL2中裝入計數(shù)初值,使T2從這個初值開始計數(shù),但并不置位FT2。RCAR2H和RCAP2L中的常數(shù)由軟件設定后,T2的溢出率是嚴格不變的,因而使串行通信的波特率非常穩(wěn)定。
5 應用實例
在本刊網(wǎng)絡補充版(http://www.dpj.com.cn)中,給出主機為AT89C52時的應用實例。程序的功能為等待鍵盤輸入,然后將所讀到的鍵盤碼轉(zhuǎn)換成十進制后送LED數(shù)碼管顯示。





