Code
//MCU freq 1MHz
#include <mega8.h>
#include <stdio.h>
#include <string.h>
typedef unsigned char byte;
byte res; //число
byte buff[16]; //буфер
byte lbuff=0; //указатель буфера, либо размер
void main() {
//Настраиваем UART
//8 bit, ASYNC, 4800, Parity NO
UCSRA=0;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0;
UBRRL=0x0c;
//Выключаем компаратор
ACSR=0x80;
putsf("TEST UART\r\n"); //Печатаем текст
while(1) { //Главный цикл
putsf("> ");
scanf("%i",&res); //Ждем ввода числа, в данном случае 1 или 2
printf("%u\r\n",res); //Показываем что приняли
if (res==1) { //Сравнение с помощью scanf, без echo
if (scanf("test1")==0) {
putsf("test1: ok\r\n"); //Если ввели правельно
}else{
putsf("test1: error\r\n"); //Если ввели не правельно
}
}
if (res==2) { //Чтение в буфер и сравнение с помощью strcmpf, с выводом echo
do{ //Грузим в буфер до 5-и символов
buff[lbuff]=getchar();
putchar(buff[lbuff]);
lbuff++; //Поднимаем указатель
}while(lbuff<5);
buff[lbuff]=0; //Последний код символа должен быт 0 - это конец строки
putsf(": ");
if (strcmpf(buff,"test2")==0) { //сравниваем
putsf("ok"); //Если равно
}else{
putsf("error"); //Если не равно
}
putsf("\r\n");
lbuff=0; //Устанавливаем указатель в начало
}
}
}