void main(void)
{
unsigned char in_char;
int flag=1,j,i;
int count, d = 0 ;
char s[4]="",p;
ithul();
LCD_res();
init_lcd()
;print_lcd(1,"The Project");//Printing command.
;print_lcd(2,"of Me:");//Printing command.
for(i=0; i<20; i++){delay(1000);delay(1000);delay(1000);}
for(i=0; i<20; i++){delay(1000);delay(1000);delay(1000);}
while(1)
{
count = 0;
loop1 : if(P3_0 == 1){
goto loop1;
}
//Running '1'
loop2 : if(P3_0 == 0){
goto loop2;
}
//Running '0'
while(P3_0 == 1){
count ++;
}
init_lcd()
;print_lcd(1,"Done Counting!");//Printing command.
for(i=0; i<1; i++){delay(1000);delay(1000);delay(1000);}
;print_lcd(2," - L/H...");//Printing command.
for(i=0; i<20; i++){delay(1000);delay(1000);delay(1000);}
for(i=0; i<20; i++){delay(1000);delay(1000);delay(1000);}
for(i=0; i<20; i++){delay(1000);delay(1000);delay(1000);}
;print_lcd(2,itoa(count/200));//Printing command.
for(i=0; i<20; i++){delay(1000);delay(1000);delay(1000);}
for(i=0; i<20; i++){delay(1000);delay(1000);delay(1000);}
}
}
Това е моят код. Това, което прави, е да получава честота от порта, да я чете и да я отпечатва на LCD.
РАБОТИ! Но след около 2 минути LCD става като "asda68!#123646$#$^%&*(dfas" вид боклуци!).
Как мога да обновя микроконтролера 8051, за да не полудее? Чух нещо за "пресни" "безплатни" "flash" команди, мисля, но наистина не знам какво е или как да използвам това. ТАКА.. Моля, помогнете!
free(count)
не прави нищо, освен евентуално разрушаване на памет, тъй катоcount
не е указател. - person Dan   schedule 13.01.2015int count;
, така че какво се очаква да направиfree(count);
? - person Weather Vane   schedule 13.01.2015itoa()
да приема низов параметър? - person Weather Vane   schedule 13.01.2015itoa()
? В следващата справка за компилатор 8051 еchar *itoa(int number, char* string, int radix);
. Така че ще предавате въображаем указател на низ и рано или късно ще получите грешка. Какви предупреждения на компилатора получавате? crossware.com/smanuals/c8051/_itoa.html - person Weather Vane   schedule 13.01.2015