
INIT:
     MOV    P1, 0FFH  ;ensure port 1 is for inputting
     . . .
     . . .
GET_NIBBLE:
     MOV    B, P1     ;save initial copy of strobe bit
                      ;...to B.4
GET_NIBB_LP:
     MOV    A, P1     ;poll P1.4 for change from 0->1
     MOV    C, ACC.4  ;get C as present strobe level
     ANL    C, /B.4   ; AND current state with not prev
     JC     GOT_NIBBLE ; we have the nibble value 
     MOV    B, A      ; save current strobe bit as new prev
     JMP    GET_NIBB_LP ;loop till we see 0->1 edge
;
GOT_NIBBLE:
     ANL    A, #00FH  ;mask the low 4 bits for out data
     ADD    A, #'A'   ;make a letter code from nibble
                      ;i.e.  input 0000B -> 'A'
                      ;            0001B -> 'B'
                      ;            0010B -> 'C'
                      ;              ...
                      ;            1110B -> 'O'
                      ;            1111B -> 'P'
;
     CALL   LCD_OUT   ;send letter code in A to LCD
     . . .
     . . .
