void putstringus(char *p,int len)
{
//13-8=5
int a,b;
int ipp;
a=len-8;
b=5;
for (ipp=0;ipp<b;ipp++)
{
putchar(p[ipp]);
}
}
и
void putstringus(char *p,int len)
{
//13-8=5
int a,b;
int ipp;
a=len-8;
b=5;
for (ipp=0;ipp<5;ipp++)
{
putchar(p[ipp]);
}
}
Как вы думаете какая из них будет работать а какая нет?
Скажете обе(различия в условии "for ipp<b в первой ipp<5 во второй")?
Ответ неверный

вторая функция работает правильно



я серьезно

при работе первой возникает ошибка: [PC = $027B, Time = 34.18 ms, {UND}]: SREG bit 1 (Z) = X (undetermined)
при работе второй осуществляется вывод по компорту.....
на всякий случай выдам блок инициализации, хотя я считаю что это чистая математика, и регистры тут не причем но все же:
///////////////////////// INITIALISATION OF DEVICES ////////////////////////////
void port_init(void)
{
DDRB =0xFF; //init port B na vixod
PORTB = 0x00; //vkl all
PORTD = 0x7F; //port vkl
DDRD = 0x00; //vse na vxod
}
//call this routine to initialise all peripherals
void init_devices(void)
{
CLI();
port_init();
uart0_init();
SREG = 0xFF;
MCUCR = 0x00;
GIMSK = 0xF0; //obshii registr maski prerivanii
GIFR = 0xF0;
TIMSK = 0xFF; //0x00
TIFR=0xFF
SEI();
}
//UART0 initialisation
// desired baud rate: 9600
// actual: baud rate:9600 (0,0%)
//
void uart0_init(void)
{
UCR = 0x00; //disable while setting baud rate
UBRR = 0x17; //set baud rate
// UBRR = 0x23; //set baud rate
UCR = 0x99; //enable //bit 7 -prerivanie po okonc. priema
//bit 4 -razr priema
//bit 3 -razr peredatchika
}
////////////////////////////////////////////////////////////////////////////////