Hice el siguiente codigo para que muestre en un lcd la tecla pulsada de un teclado, el problema es que al momento de presionar una tecla no aparece nada, alguien podria ayudarme

Codigo:
#include <18f45k22.h>
#fuses INTRC_IO, NOWDT, NOPLLEN, NOMCLR,NOPBADEN
#use delay(clock=4000000) //Frecuencia del cristal para el cálculo de los retardos
#define LCD_ENABLE_PIN PIN_D2
#define LCD_RS_PIN PIN_D0
#define LCD_RW_PIN PIN_D1
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#define use_portb_kbd true
#include <lcd.c>
#include <kbd.c>
void main ()
{
char k;
port_b_pullups (true);
kbd_init();
lcd_init();
while (true)
{
k=kbd_getc();
if (k!=0)
{
lcd_putc (k);
delay_ms (500);
printf (lcd_putc, "\f tecla pulsada: %c ", k);
delay_ms(500);
}
}
}