Х очется узнать мнение профи по волнующим меня вопросам.ИЗУЧАЮ С, использую codevision+avrstudio. В helpе к компилятору нашёл пару примеров стандартного сишного ввода вывода а конкретно функции putchar и getchar. они должны якобы работать с UARTом. вот прмер, но эти функции не работают.Подскажите почему?????????? ******************************************************************** #include <90s8515.h> #include
/* quartz crystal frequency [Hz] */ #define xtal 4000000L
/* Baud rate */ #define baud 9600
void main(void) { char k;
/* initialize the UART's baud rate */ UBRR=xtal/16/baud-1;
/* initialize the UART control register RX & TX enabled, no interrupts, 8 data bits */ UCR=0x18;
while (1) { /* receive the character */ k=getchar(); /* and echo it back */ putchar(k); }; }
И ещё один вопрос при входе в прерывание по переполнения таймера0 объявляю переменную типа char её компилятор помещает в R16, а она автоматически равняется одной из глобальных, находящейся в этом же регистре до входа в прерывание при использовании #pragma savereg+, при #pragma savereg-, всё нормально через раз. иногда глобальные переменные помещаются в SRAM и всё ОК. а иногда в R16 и тогда опять глюки.
|