cblock TECLA flag_tecla endc CONFIGURA_TECLADO bsf STATUS,RP0 bcf STATUS,RP1 mov TRISB,b'00001111' bcf OPTION_REG,7 ;Activo Pull Up bcf STATUS,RP0 return LEO_TECLADO mov TECLA,0 clrf flag_tecla L1_C0 ;Ponemos la Primera Linea mov PORTB,b'01110000' movfw PORTB andlw 0x0F movwf TECLA compara TECLA,b'1110' jnz L1_C1 ;Si no es igual mov TECLA,0x0E;'*' jmp press_tecla L1_C1 compara TECLA,b'1101' jnz L1_C2 ;Si no es igual mov TECLA,0;'0' jmp press_tecla L1_C2 compara TECLA,b'1011' jnz L1_C3 ;Si no es igual mov TECLA,0xF;'*' jmp press_tecla L1_C3 compara TECLA,b'0111' jnz L2_C0 ;Si no es igual mov TECLA,0xD;'*' jmp press_tecla L2_C0 ;Ponemos la Segunda Linea mov PORTB,b'10110000' movfw PORTB andlw 0x0F movwf TECLA compara TECLA,b'1110' jnz L2_C1 ;Si no es igual mov TECLA,7;'9' jmp press_tecla L2_C1 compara TECLA,b'1101' jnz L2_C2 ;Si no es igual mov TECLA,8;'0' jmp press_tecla L2_C2 compara TECLA,b'1011' jnz L2_C3 ;Si no es igual mov TECLA,9;'*' jmp press_tecla L2_C3 compara TECLA,b'0111' jnz L3_C0 ;Si no es igual mov TECLA,0x0C;'*' jmp press_tecla L3_C0 ;Ponemos la Primera Linea mov PORTB,b'11010000' movfw PORTB andlw 0x0F movwf TECLA compara TECLA,b'1110' jnz L3_C1 ;Si no es igual mov TECLA,4;'*' jmp press_tecla L3_C1 compara TECLA,b'1101' jnz L3_C2 ;Si no es igual mov TECLA,5;'0' jmp press_tecla L3_C2 compara TECLA,b'1011' jnz L3_C3 ;Si no es igual mov TECLA,6;'*' jmp press_tecla L3_C3 compara TECLA,b'0111' jnz L4_C0 ;Si no es igual mov TECLA,0x0B;'*' jmp press_tecla L4_C0 ;Ponemos la Primera Linea mov PORTB,b'11100000' movfw PORTB andlw 0x0F movwf TECLA compara TECLA,b'1110' jnz L4_C1 ;Si no es igual mov TECLA,1;'*' jmp press_tecla L4_C1 compara TECLA,b'1101' jnz L4_C2 ;Si no es igual mov TECLA,2;'0' jmp press_tecla L4_C2 compara TECLA,b'1011' jnz L4_C3 ;Si no es igual mov TECLA,3;'*' jmp press_tecla L4_C3 compara TECLA,b'0111' jnz fin_teclado;si no es igual mov TECLA,0x0A;'*' jmp press_tecla fin_teclado return press_tecla mov flag_tecla,1 return