Стоит добавить немного код программы , тогда начинает глючить.
После компиляции объем глобальных переменных равен 278 байт. Контроллер мега 168.
Объем программы 91 процент .
По всей видимости добавляете некорректный код, вот и глюк.Amstron писал(а):Стоит добавить немного код программы , тогда начинает глючить.
Код нормальный. Взят из программы этойже. Не в нем дело.Aмstroн писал(а):По всей видимости добавляете некорректный код, вот и глюк.Amstron писал(а):Стоит добавить немного код программы , тогда начинает глючить.
Код: Выделить всё
unsigned flash char duty_cycle[32]={0,3,6,9,12,15,18,21,25,28,31,34,37,40,43,46,50,53,56,59,62,65,68,71,75,78,81,84,87,90,93,100};
void meas_duty(unsigned char m_duty)
{
unsigned char i=0;
unsigned char tmp_meas[3]={0,0,0};
lcd_command(0x86);
itoa(duty_cycle[m_duty],tmp_meas);
...
for (i=0;i<3;i++)
{
lcd_data(tmp_meas[i]);
}
Если непонятно, то можно так сказать: строка это массив не нулевых значений, так как все буквы и цифры таблицы символов имеют не нулевое обозначение.Поэтому используют нулевой символ для обозначения конца строки.LINKS_234 писал(а): и искренне не понимаю нахрена это сделано.
И развернуть строкуoleg110592 писал(а):добавить получившимся цифрам hex 0x30
А Вы напишите проще:LINKS_234 писал(а):касательно размерности массива - впихнуть-то можно, но я через неделю-две буду смотреть в свой же код и тупить по поводу что откуда там берётся и зачем оно.
Код: Выделить всё
unsigned char tmp_meas[]="999";Код: Выделить всё
for (i=0;i<strlen(tmp_meas);i++)