ايران ويج

نسخه‌ی کامل: AVR codvision
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام دستان عزیز کسی هست که با AVR codvision کار کرده باشه ، یه برنامه نوشتم ارور میده اگه کسی میتونه کمک کنه خواهش می کنم دریغ نکنه
برنامه ساده هست ولی من برنامه نویسیم خوب نیست
خوب برنامتو بذار تا هر کی تونست بهت کمک کنه
میخوام با یک Atmega16 یک کلید و یک یک سون سگمنت 4تایی برنامه ای بنویسم که هروقت کلیدو زدی یک عدد روی 7سگمنت نشون بده از 0 تا 9999
برنامه اینه :
کد:
#include <mega16.h>
#include <delay.h>
unsigned int x=0,j=0;
unsigned char i;
char digits[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
void main(void)
{
DDRC=0XFF;
PORTC=digits[0];

DDRD=0XFF ;
P0RTD=0XFF;

DDRB=0X00;
PORTB=0XFF;

while(1)
{
if (!PINB.0)
{ i++;
if(i==9999) i=0;
x=i;
for(j=1,j<=8,j=j*2)
PORTC=digits[x%10];
x=x/10;
PORTD=j;
delay_ms(10);
PORTD=0;
}
while(!PINB.0);
delay_ms(12);
while(PINB.0);
delay_ms(12);
}
}





کد:
for(j=1,j<=8,j=j*2)
به جای این از
کد:
for(j=1;j<=8;j=j*2)
و این برنامه بدون ERROR
کد:
#include <mega16.h>
#include <delay.h>
unsigned int x=0,j=0;
unsigned char i;
char digits[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
void main(void)
{
DDRC=0XFF;
PORTC=digits[0];

DDRD=0XFF;
PORTD=0XFF;

DDRB=0X00;
PORTB=0XFF;

while(1)
{
if (!PINB.0)
{ i++;
if(i==9999){
i=0;
x=i;
}
for(j=1;j<=8;j=j*2)
PORTC=digits[x%10];
x=x/10;
PORTD=j;
delay_ms(10);
PORTD=0x00;
}
while(!PINB.0);
delay_ms(12);
while(PINB.0);
delay_ms(12);
}
}
ممنون مهندس حالا اگه بخوام یکم تغییرات بدم مثلا کلیدو که زدیم بعد از 2 ثانیه به مدت 1ثانیه تا 10 رو بشماره خودم روش کار کردم اما مشکل دارم همش ارور میده اعصابمو خورد کرده