سلام به دوستان
دیشب داشتم رو یه پروژه کار میکردم که به یه اتفاق خیلی عجیب برخوردم . . .
کد ساده ی زیر رو در نظر بگیرید ( این کد در کدویژن 3.12 نوشته شده )
اول برنامه PORTD=0 شده
کاری که میکرو با این کد انجام میده
اول از قبل DDD0 در برنامه 1 شده و مابقی 0 هستند
دوم DDD1 رو 1 میکنه مابقی 0 هستند
سوم DDD2 رو 1 میکنه مابقی 0 هستند
چهارم DDD4 رو 1 میکنه مابقی 0 هستند
و همین چهار مرحله همینطور پشت سر هم تکرار میشه
یعنی ابتدا پایه اول یک میشه مابقی 0
بعد پایه دوم یک میشه مابقی 0
بعد پایه سوم یک میشهمابقی 0
بعد پایه پنجم یک میشهمابقی 0
دوباره بر میگرده از اول و همین 4 مرحله همینطور تکرار میشند
هم در عمل با میکرو مگا 8 تست کردم و هم در پروتیوس با مگا 8 و مگا32 تست کردم نتیجه کاملا مشابه و به قرار ذکر شده بود
کد اصلی رو قرار میدم
شما دوستان لطف کنید این کد رو به میکرو وارد کنید ببینید چه عکس العملی نشون میده . . .
دیشب داشتم رو یه پروژه کار میکردم که به یه اتفاق خیلی عجیب برخوردم . . .
کد ساده ی زیر رو در نظر بگیرید ( این کد در کدویژن 3.12 نوشته شده )
کد:
[FONT=Yekan]while (1)[/FONT][FONT=Yekan] { [/FONT] [FONT=Yekan] ; (delay_ms( 1000[/FONT] [FONT=Yekan] ;DDRD = 1<<DDRD[/FONT] [FONT=Yekan] }[/FONT]
کاری که میکرو با این کد انجام میده
اول از قبل DDD0 در برنامه 1 شده و مابقی 0 هستند
دوم DDD1 رو 1 میکنه مابقی 0 هستند
سوم DDD2 رو 1 میکنه مابقی 0 هستند
چهارم DDD4 رو 1 میکنه مابقی 0 هستند
و همین چهار مرحله همینطور پشت سر هم تکرار میشه
یعنی ابتدا پایه اول یک میشه مابقی 0
بعد پایه دوم یک میشه مابقی 0
بعد پایه سوم یک میشهمابقی 0
بعد پایه پنجم یک میشهمابقی 0
دوباره بر میگرده از اول و همین 4 مرحله همینطور تکرار میشند
هم در عمل با میکرو مگا 8 تست کردم و هم در پروتیوس با مگا 8 و مگا32 تست کردم نتیجه کاملا مشابه و به قرار ذکر شده بود
کد اصلی رو قرار میدم
شما دوستان لطف کنید این کد رو به میکرو وارد کنید ببینید چه عکس العملی نشون میده . . .
کد:
[FONT=Yekan]#include <mega8.h>[/FONT] #include <delay.h> #define delay_time 1000 void main(void) { DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (1<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0); PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0); PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0); DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (1<<DDD0); PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); // Analog Comparator initialization // Analog Comparator: Off // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); while (1) { delay_ms( delay_time ); DDRD = (1<<DDRD); } }
دیدگاه