PDA

نسخه کامل مشاهده نسخه کامل : مشکل در تایمر avr



Nakh0d4
31-01-2009, 03:21
#include <mega16.h>
#include <stdio.h>
flash char seg[8]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07};
void timer(void);
void main()
{
register int i;
DDRD=0xff;
DDRB=0x07;
while (1){
PORTB=0x01; /*green light on for 6 sec*/
for(i=0;i<7;i++){
PORTD=seg[i] ;
timer();
} //f0r
PORTB=0x02; /*yellow light on for 2 sec*/
for(i=0;i<3;i++){
PORTD=seg[2*i];
timer();
} //for
PORTB=0x04; /*red light on for 4 sec */
for(i=0;i<5;i++){
PORTD=seg[i];
timer();
}//for
}//while
} //end
void timer(void)
{
register int index;
for(index=0;index<31;index++)
{
TCNT0=0X00;
TCCR0=0X75;
OCR0=0Xff;
while(!(TIFR&0b00000001));
TIFR|=0X03;

}
TCNT0=0X7A;
TCCR0=0X75;
OCR0=0Xff;
while(!(TIFR&0b00000001));
TIFR|=0X03;
}
اشکال این برنامه چیه که جواب نمیده؟؟؟ 2روز سرکارم!!1:41:
چراغ راهنمایی که 6 ثانیه سبز 2 ثانیه زرد 4 ثانیه قرمز!!!تایمر 0 کریستال 8 و تقسیم بر 1024
تو تابع timer ب 1 ثانیه تولید میشه و و portd=7segment -portb=traffic light