//Выводит текст сохранённый во Flash(памяти программ)
#include <avr/io.h>
#include <avr/pgmspace.h>

typedef unsigned char U8;

#define ignore(x)


void put(U8 ch)
{
    ignore( ch );
    //<<< ВАШ КОД ВЫВОДА ОДНОГО СИМВОЛА КУДА ТРЕБУЕТСЯ (UART/LCD и проч) >>
}


static void __pgm_print(const U8 PROGMEM *str)
{
    U8 ch;
    while ( (ch = pgm_read_byte(str++)) != 0)
        put(ch);
}


#define pgm_print(x) do {\
  static const U8 PROGMEM str[] = x;\
  __pgm_print( str );\
} while(0)

void main(void)
{
    pgm_print("Hello!");
    pgm_print("this program demonstrates an easy way of\n");
    pgm_print("printing string literals stored in flash\n");

    for(;;);
}