|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | 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 |
[求助]一個(gè)外部中斷問題(ATMEG) |
| 作者:波動(dòng)光學(xué) 欄目:單片機(jī) |
| 2樓: | >>參與討論 |
| 作者: 波動(dòng)光學(xué) 于 2006/10/30 22:44:00 發(fā)布:
一個(gè)外部中斷問題(ATMEGA) |
|
| 3樓: | >>參與討論 |
| 作者: 波動(dòng)光學(xué) 于 2006/10/30 22:50:00 發(fā)布:
一個(gè)外部中斷問題(ATMEGA16L) 小弟初學(xué)AVR C語(yǔ)言,我在int0,int1兩個(gè)管腳直接連接了兩個(gè)按鍵,寫程序后不能響應(yīng),不知道問題出在那里,不清楚中斷是怎么響應(yīng)的.請(qǐng)各位大俠幫幫忙 原程序如下: #include "iom16v.h" #include "macros.h" #pragma interrupt_handler EXT_INT0:6 //說(shuō)明中斷程序 #pragma interrupt_handler EXT_INT1:7 unsigned int NUM=5664; int i1,i2,i3=1; unsigned CHAR LED_DATA[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void DISPLAY(unsigned CHAR BCD) { int i; unsigned CHAR TEMP; for(i=8;i>0;i--) { PORTD=0x00; TEMP=BCD>>(i-1); TEMP&=0x01; PORTD|=TEMP; PORTD|=BIT(PD1); PORTD=0x00; } } void delay(CHAR i) { CHAR j=255; while(i--) while(j--); } void EXT_INT0(void) { delay(50); i3=1; NUM++; for(i1=4;i1>0;i1--) { i2=NUM/i3%10; DISPLAY(LED_DATA[i2]); i3*=10; } // CLI(); } void EXT_INT1(void) { delay(50); i3=1; NUM--; for(i1=4;i1>0;i1--) { i2=NUM/i3%10; DISPLAY(LED_DATA[i2]); i3*=10; } // CLI(); } void main(void) { delay(200); // GICR=0xc0; //通用中斷控制寄存器,開啟int0和int1 MCUCR=0x0b; //微控制器控制寄存器,設(shè)置響應(yīng)方式 GICR=0xc0; //通用中斷控制寄存器,開啟int0和int1 DDRD=0x03; for(i1=4;i1>0;i1--) { i2=NUM/i3%10; DISPLAY(LED_DATA[i2]); i3*=10; } _SEI(); //開中斷 // GIFR=0x80; while(1); } |
|
| 4樓: | >>參與討論 |
| 作者: gyb006 于 2007/1/9 16:46:00 發(fā)布:
你的中斷向量寫錯(cuò)了 外部中斷0是2 外部中斷1是3 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |