No me he leido todo el código pero el pulso se genera en este trozo:
Codigo:
loop clrf PORTB ; clear output
call read ; read code from keyboard into readbuf
movlw cod
call compbuf ; compare code in readbuf with code at cod
bnz loop ; the code is different
; the code matches, check which enter (#*) was pressed
movlw "*"
subwf keycode, W ; * changes code
bz codechange
pulseout ; # operates output
movlw 0x04 ; RB2 is output
movwf PORTB
movlw pulsewidth
movwf dcnt2
out0 movlw d"200"
call udelay
decfsz dcnt2, F
goto out0
goto loop
Esto es lo que debes sustituir por lo anterior
Codigo:
clrf PORTB ; clear output
loop
call read ; read code from keyboard into readbuf
movlw cod
call compbuf ; compare code in readbuf with code at cod
bnz loop ; the code is different
; the code matches, check which enter (#*) was pressed
movlw "*"
subwf keycode, W ; * changes code
bz codechange
pulseout ; # operates output
movlw 0x04 ; RB2 is output
xorwf PORTB,f ; Cambia el estado de la salida cada vez que se mete el código
goto loop
Espero que te funcione.