سلام
من تازه شروع کردم به کار با میکروکنترلرها؛
برنامه های میخواستم بنویسم که 3 تا پین از پورت A رو بخونه و تا زمانی که 1 بودن سه تا پین رو پورت D رو 1 کنه؛
تو محیط Atmel Studio کار میکنم؛ ( قبلا با کدویژن جواب گرفتم ولی علاقه مندم تو محیط اتمل کار کنم)
این کد منه:
مشکل اینه که وقتی فایل هگز رو تو Proteus میبرم کار نمیکنه؛ ممنونم میشم کمک کنید.
تو proteus به پین های PA0 و PA1 و PA2 سویچ وصل کردم و به پین های PD0 و PD1 و PD2 ؛ LED وصل کردم؛
من تازه شروع کردم به کار با میکروکنترلرها؛
برنامه های میخواستم بنویسم که 3 تا پین از پورت A رو بخونه و تا زمانی که 1 بودن سه تا پین رو پورت D رو 1 کنه؛
تو محیط Atmel Studio کار میکنم؛ ( قبلا با کدویژن جواب گرفتم ولی علاقه مندم تو محیط اتمل کار کنم)
این کد منه:
کد:
#define F_CPU 8000000UL#define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> #include <stdio.h> #include <stdlib.h> #include <avr/interrupt.h> int cnt=0; int in1=0, in2=0, in3=0, out1=0, out2=0, out3=0; int main (void) { DDRA = 0x00; DDRD = 0xff; DDRC=0xff; TIMSK |= (1 << TOIE1); // Enable overflow interrupt sei(); // Enable global interrupts TCCR1B |= (1 << CS11); for (;;) { in1= PINA & 0x01; in2= PINA & (0x01 << 1); in3= PINA & (0x01 << 2); out1= PORTD | 0x01; out2= PORTD | (0x01 << 1); out3= PORTD | (0x01 << 2); } } ISR(TIMER1_OVF_vect) { if (TIFR &(1<<OCF1A)) { if (in1 !=0) {out1=1;} else {out1=0;} if (in2 !=0) {out2=1;} else {out2=0;} if (in3 !=0) {out3=1;} else {out3=0;} if (PINA & (1 << PA0 & 1<<PA1 & 1<<PA2)) { cnt++; TIFR = (1<<OCF1A); // Reset timer value PORTD |= (0x01 << 6); } } }
تو proteus به پین های PA0 و PA1 و PA2 سویچ وصل کردم و به پین های PD0 و PD1 و PD2 ؛ LED وصل کردم؛