۲۹-آبان-۱۳۸۸, ۱۶:۱۹:۴۲
سلام
من يه برناه نوشتم که وقتي وقفه صفر اتفاق بيافته موتور رو حرکت بده.
حالا من وقتي که ميکرو رو روشن ميکنم بلافاصله خود بخود وقفه رخ ميده بدون اينکه من به پاي PD2 ولتاژ +5 بدم.
ايراد از کجاست؟
من يه برناه نوشتم که وقتي وقفه صفر اتفاق بيافته موتور رو حرکت بده.
حالا من وقتي که ميکرو رو روشن ميکنم بلافاصله خود بخود وقفه رخ ميده بدون اينکه من به پاي PD2 ولتاژ +5 بدم.
ايراد از کجاست؟
کد:
/*
Chip type : ATmega32L
Program type : Application
Clock frequency : 12.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*********************************************/
#include <mega32.h>
#include <delay.h>
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
int i=0;
PORTA=204;
delay_ms(50);
PORTA=102;
delay_ms(50);
PORTA=51;
delay_ms(50);
PORTA=153;
delay_ms(50);
PORTA=0;
delay_ms(500);
PORTA=153;
delay_ms(50);
PORTA=51;
delay_ms(50);
PORTA=102;
delay_ms(50);
PORTA=204;
delay_ms(50);
PORTA=0;
delay_ms(1000);
}
// Declare your global variables here
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0xFF;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
GICR|=0x40;
MCUCR=0x00;
MCUCSR=0x00;
GIFR=0x40;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{
};
}