Растолкуйте пожалуйста поведение кода:
На экране должен увидеть два одинаковых значения, но по непонятной причине, после первого использования buf1 и buf2 в функции itoa они портятся, чем и как непонятно
Пробовал использовать sprintf вместо itoa, ситуация не меняется, при первом вызове sprintf получаю нормальные значения, при втором опять мусор какой то..
sprintf(ss, "U=%d.%02dV", buf1, buf2) - здесь норм
....
sprintf(ss, "I=%d.%02dA", buf1, buf2) - здесь мусор уже (..
Подскажите пож, что не так делаю..
Заранее благодарен! Прошу сильно не пинать, это мой первый, тренировочный, проект на пиках
Раздел: МК для начинающих
#include <htc.h>
#include <stdlib.h>
#include "lcd.h"
__CONFIG(WDTDIS & UNPROTECT & MCLRDIS & INTOSCIO);
#define _XTAL_FREQ 4000000UL;
void main() {
CMCON=0x07;
ADCON0=0b10001101;
ADCON1=0b01110000;
ANSEL=0b00001000;
TRISA=0b11111111;
TRISC=0;
PORTA=0;
PORTC=0;
unsigned int buf1;
unsigned short long buf2;
unsigned char * ss[];
lcd_init();
while (1)
{
//__delay_ms(1);
GODONE=1;
while (GODONE);
buf1=(ADRESL+ADRESH*256)*5;
buf2=buf1%1024;
buf2*=100;
buf2/=1024;
buf1/=1024;
lcd_goto(0);
lcd_puts("U=");
itoa(ss,buf1,10);
lcd_puts(ss);
lcd_puts(".");
itoa(ss,buf2,10);
lcd_puts(ss);
lcd_puts("V ");
lcd_puts("I=");
itoa(ss,buf1,10);
lcd_puts(ss);
lcd_puts(".");
itoa(ss,buf2,10);
lcd_puts(ss);
lcd_puts("A");
//lcd_goto(0x40); // Go to next line
//lcd_puts(ss);
}
}
На экране должен увидеть два одинаковых значения, но по непонятной причине, после первого использования buf1 и buf2 в функции itoa они портятся, чем и как непонятно
Пробовал использовать sprintf вместо itoa, ситуация не меняется, при первом вызове sprintf получаю нормальные значения, при втором опять мусор какой то..
sprintf(ss, "U=%d.%02dV", buf1, buf2) - здесь норм
....
sprintf(ss, "I=%d.%02dA", buf1, buf2) - здесь мусор уже (..
Подскажите пож, что не так делаю..
Заранее благодарен! Прошу сильно не пинать, это мой первый, тренировочный, проект на пиках
Раздел: МК для начинающих