>> #define lcd_puts(s) { while(*s) lcd_putc(*s++); } > >That will not work if "s" is a string literal, which is what the OP >was trying to deal with. #define lcd_putcs(s) { const char *p; p=s; while(*p) lcd_putc(*p++); } #define lcd_puts(s) { char *p; p=s; while(*p) lcd_putc(*p++); } There is not enough stack on small pics (16F) to afford the luxury of too deep nesting in libraries. In fact, the way I write it usually is, lcd_puts is a function and lcd_putc is a macro used in it. lcd_cmd is a function that also uses lcd_putc (lcd_cmd sends commands to the lcd). Peter -- http://www.piclist.com hint: PICList Posts must start with ONE topic: [PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads