Im makefile hast du das?:
MCU     = atmega48p
Hast du winavr 2009-03-13
Schau die die .LST-Datei an! Suche darin nach "UBRR0L = UBRR_VAL & 
0xFF;"
Die wird erzeugt durch:
%.lst: %.elf
  avr-objdump -h -S $< > $@
    UBRR0H = UBRR_VAL >> 8;
    1092:  80 e0         ldi  r24, 0x00  ; 0
    1094:  80 93 c5 00   sts  0x00C5, r24
    UBRR0L = UBRR_VAL & 0xFF;
    10d2:  8f eb         ldi  r24, 0xBF  ; 191
    10d4:  80 93 c4 00   sts  0x00C4, r24
Ansonsten kanns an der Hardware liegen. Abblockkondensatoren, 
Anschaltung des MAX232, Masseverbindung zwischen PC und ATMega, usw.
Miss mal sie Spannungen -10V / +10V am MAX232 (sind normalerweise -8V / 
+9V oder so.
Setze die Baudrate für /dev/TTYS0 mal damit:
port=/dev/ttyS0
setserial $port divisor 96
setserial $port spd_cust
stty speed 1200 < $port
oder nur damit:
stty speed 1200 < /dev/TTYS0
Probier mal 'gtkterm' anstatt 'minicom'