#include P18F458.inc RAM_ADDR EQU 0x40 ASC_RAM EQU 0x50 COUNTREG EQU 0x20 CNTVAL EQU D'4' CNTVAL1 EQU D'8' ORG 0 CALL COPY_DATA CALL BCD_ASC_CONV CALL DISPLAY BRA $ COPY_DATA MOVLW low(MYBYTE) MOVWF TBLPTRL MOVLW hi(MYBYTE) MOVWF TBLPTRH MOVLW upper(MYBYTE) MOVWF TBLPRTRU LFSR 0,RAM_ADDR C1 TBLRD*+ MOVF TABLAT,W BZ EXIT MOVWF POSTINC0 BRA C1 EXIT RETURN BCD_ASC_CONV MOVLW CNTVAL MOVWF COUNTREG LFSR 0,RAM_ADDR LFSR 1,ASC_RAM B2 MOVF INDF0,W ANDLW 0x0F IORLW 0x30 MOVWF POSTINC1 MOVF POSTINC0,W ANDLW 0xF0 SWAPF WREG IORLW 0x30 MOVWF POSTINC1 DECF COUNTREG,F BNZ B2 RETURN DISPLAY CLRF TRISB MOVLW CNTVAL1 MOVWF COUNTREG LFSR 2,ASC_RAM B3 MOVF POSTINC2,W MOVWF PORTB DECF COUNTREG,F BNZ B3 RETURN ORG 0x500 MYBYTE DB 0x25, 0x67, 0x39, 0x52, 0x00 END