Имею проблему с выводом числа: из регистра ICR1 на LCD экран не могу вывести числа больше 65535.В atmel studio получалось выводить числа больше 65535 на семисегментные индикаторы, но потребовалось использование LCD экрана, поэтому перешёл в CVAvr поскольку в нем есть библиотека для LCD, но в нем я не могу вывести число больше 655535. Подскажите в чем проблема
#include <mega16.h>
#include <alcd.h>
#include <stdio.h>
#include <math.h>
char lcd_buffer[33] ;
sfrw ICR1=0x24;
unsigned long c=0,d=0;
void main ()
{
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
DDRD=0xFF;
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
TCCR1A = (0 << WGM11) | (0 << WGM10) ;
TCCR1B = (0 << ICNC1)|(0 << ICES1)|(0<<WGM13)|(0<<WGM12)|(1<<CS12)|(1<<CS11)|(0<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0;
ICR1L=0;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
TCNT1=0;
ICR1=0;
lcd_init(16);
while (1)
{
lcd_gotoxy(1,0);
lcd_putsf("Dalnost do celi");
c= (( unsigned long )ICR1);
d=(unsigned long)c*1000;
lcd_gotoxy(0,1);
sprintf(lcd_buffer,"%u",d);
lcd_puts(lcd_buffer);
}
}