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