如何實現(xiàn)51單片機同時使用兩個外部中斷
在使用51單片機時,中斷系統(tǒng)是一個非常重要的特性,可以實現(xiàn)保護CPU現(xiàn)場、跳轉(zhuǎn)到中斷服務(wù)函數(shù)進行處理、恢復(fù)CPU現(xiàn)場、繼續(xù)進行原始操作等功能。中斷分為外部中斷、內(nèi)部中斷和串行口中斷,我們也可以同時使用
在使用51單片機時,中斷系統(tǒng)是一個非常重要的特性,可以實現(xiàn)保護CPU現(xiàn)場、跳轉(zhuǎn)到中斷服務(wù)函數(shù)進行處理、恢復(fù)CPU現(xiàn)場、繼續(xù)進行原始操作等功能。中斷分為外部中斷、內(nèi)部中斷和串行口中斷,我們也可以同時使用兩個外部中斷。首先要知道中斷源的入口地址,由于需要同時使用兩個外部中斷,即要用到外部中斷0:0003H和外部中斷1:0013H。
配置Keil μVision編譯器并設(shè)置工程
1. 打開Keil μVision編譯器,新建一個工程,并保存在硬盤上的位置。
2. 選擇Atmel-AT89C51單片機為模型,并添加STARTUP.A51文件。
3. 在當(dāng)前目錄下新建一個C文件,并將其添加入工作路徑。
4. 導(dǎo)入51單片機的頭文件,在主函數(shù)中使EA1,即總中斷允許,打開中斷的總開關(guān)。
配置外部中斷
5. 分別打開外部中斷0和外部中斷1的開關(guān),即EX01和EX11,同時設(shè)置中斷的觸發(fā)方式為跳沿觸發(fā),以避免增加額外的電路。
6. 如果不添加別的代碼,此時這兩個中斷的優(yōu)先級是外部中斷0 > 外部中斷1,一個中斷正在執(zhí)行時來了另外一個中斷是不會打斷前一個中斷的執(zhí)行過程,因此需要為中斷設(shè)置優(yōu)先級。
編寫中斷服務(wù)函數(shù)
7. 編寫兩個外部中斷對應(yīng)的中斷服務(wù)函數(shù),確保中斷發(fā)生后能夠產(chǎn)生相應(yīng)的響應(yīng)。外部中斷0和外部中斷1的中斷號分別是0和2。
8. 在Project菜單的output項目中勾選Create Hex File,點擊編譯按鈕生成.hex文件。
運行與仿真
9. 將生成的.hex文件燒入51單片機進行運行或者加載到Proteus仿真系統(tǒng)中進行仿真。
10. 點擊運行按鈕后,可以觀察到第一個按鍵的狀態(tài)變化會導(dǎo)致LED燈由滅變亮,而點擊第二個按鈕則無論LED燈原先的狀態(tài)如何都會變成常亮狀態(tài)。
通過以上步驟,我們可以成功配置并運行51單片機同時使用兩個外部中斷,實現(xiàn)多重中斷處理功能,提高了系統(tǒng)的靈活性和響應(yīng)能力。