|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請教關(guān)于PC104的外部中斷 IRQ9/10/11的獲得。 |
| 作者:vodoo 欄目:嵌入式系統(tǒng) |
這里我們用到了PC104的外部中斷 IRQ9/10/11,希望通過外部發(fā)送一個(gè)脈沖引起IRQ中斷響應(yīng)! 相應(yīng)的中斷程序如下: void irqIntOpen() //開中斷 { int TEMP; oldvect = getvect(0x71); //保存原中斷向量 setvect(0x71,intSerProgram); //裝入中斷服務(wù)程序入口地址 TEMP = inportb(0x21) & 0xFB;//打開主片IRQ2 outportb(0x21, TEMP); TEMP = inportb(0xA1) & 0xF7;//打開從片IRQ11 outportb(0xA1, TEMP); } void interrupt intSerProgram() //中斷服務(wù)程序 { readData(); //中斷服務(wù)程序代碼 outportb(0xA0,0x20); //向從片ICR送EOI命令 outportb(0x20,0x20); //向主片ICR送EOI命令 irqIntClose(); } void irqIntClose() //關(guān)中斷 { int TEMP; setvect(0x71, oldvect); //恢復(fù)原中斷向量 TEMP = inportb(0x21) | ~(0xFB);//關(guān)主片IRQ2 outportb(0x21, TEMP); TEMP = inportb(0xA1) | ~(0xF7);//關(guān)從片IRQ11 outportb(0xA1, TEMP); } 初始化8259的代碼如下: void init8259(void) { outportb(0x20,0x11); //設(shè)置為邊沿觸發(fā)方式 outportb(0xa0,0x11); ...... } 主程序 void main(void) { init8259();//初始化8259 init();//常規(guī)初始化 irqIntOpen();//中斷開放 while(1) //等待中斷 { ; } } 調(diào)試的時(shí)候,一執(zhí)行到"outportb(0x20,0x11)"語句,就出現(xiàn)“divide overflow” 請高手指點(diǎn)一下! |
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號 |