Last active
December 21, 2015 09:29
-
-
Save rfguri/6285164 to your computer and use it in GitHub Desktop.
PIC18F4321 Assembly Calculator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;******************************** | |
;* Name: Calculator.asm * | |
;* Author: Roger Fernandez Guri * | |
;* Version: v1.0 * | |
;******************************** | |
;******************************************** | |
;* Required files: P18F4321.INC 18F4321.LKR * | |
;******************************************** | |
LIST P=18F4321, F=INHX32 | |
#include <P18F4321.INC> | |
;************************* | |
;* GLOBAL CONFIGURACIONS * | |
;************************* | |
CONFIG OSC = HS | |
CONFIG PBADEN = DIG | |
CONFIG WDT = OFF | |
;************* | |
;* VARIABLES * | |
;************* | |
FIRSTVALUEH EQU 0x00 | |
FIRSTVALUEL EQU 0x01 | |
SECONDVALUEH EQU 0x02 | |
SECONDVALUEL EQU 0x03 | |
SERIALVALUE EQU 0x04 | |
CHECKVALUEH EQU 0x05 | |
CHECKVALUEL EQU 0x06 | |
ITOAL EQU 0x07 | |
ITOAH EQU 0x08 | |
ITOAU EQU 0x09 | |
ITOAUH EQU 0x0A | |
OPVALUE EQU 0x0B | |
OPSTATE EQU 0x0C | |
ISEND EQU 0x0D | |
ISOP EQU 0x0E | |
ISVALID EQU 0x0F | |
DIVIDENTH EQU 0x10 | |
DIVIDENTL EQU 0x11 | |
DIVISORH EQU 0x12 | |
DIVISORL EQU 0x13 | |
REMINDERH EQU 0x14 | |
REMINDERL EQU 0x15 | |
QUOTIENTH EQU 0x16 | |
QUOTIENTL EQU 0x17 | |
DECIMALVALUEH EQU 0x18 | |
DECIMALVALUEL EQU 0x19 | |
FIRSTMULTIPLICATIONVALUEH EQU 0x1A | |
FIRSTMULTIPLICATIONVALUEL EQU 0x1B | |
SECONDMULTIPLICATIONRESULTVALUEH EQU 0x1C | |
SECONDMULTIPLICATIONRESULTVALUEL EQU 0x1D | |
MULTIPLICATIONVALUEH EQU 0x1E | |
MULTIPLICATIONVALUEL EQU 0x1F | |
MULTIPLICATIONRESULTVALUEH EQU 0x20 | |
MULTIPLICATIONRESULTVALUEL EQU 0x21 | |
RESULTVALUE EQU 0x26 | |
RESULTU EQU 0x22 | |
RESULTH EQU 0x23 | |
RESULTL EQU 0x24 | |
RESULTUH EQU 0x25 | |
;****************************** | |
; INTERRUPT AND RESET VECTORS * | |
;****************************** | |
ORG 0x000000 | |
GOTO MAIN | |
ORG 0x000008 | |
GOTO HIGH_INT | |
ORG 0x000018 | |
GOTO LOW_INT | |
;********************** | |
;* INTERRUPT HANDLERS * | |
;********************** | |
HIGH_INT | |
retfie | |
LOW_INT | |
retfie | |
;****************** | |
;* CONFIGURATIONS * | |
;****************** | |
PORTS | |
CLRF TRISB | |
CLRF PORTB | |
RETURN | |
INTERRUPTS | |
MOVLW 0x80 | |
MOVWF RCON | |
MOVLW 0xC0 | |
MOVWF INTCON | |
RETURN | |
TXRX | |
MOVLW 0x00 | |
MOVWF SPBRGH | |
MOVLW 0x19 | |
MOVWF SPBRG | |
MOVLW 0x00 | |
MOVWF BAUDCON | |
MOVLW 0x24 | |
MOVWF TXSTA | |
MOVLW 0x90 | |
MOVWF RCSTA | |
RETURN | |
OPS | |
CLRF OPSTATE | |
SETF ISEND | |
RETURN | |
;************* | |
;* FUNCTIONS * | |
;************* | |
SEND | |
BCF TXSTA, TXEN, 0 | |
MOVWF TXREG, 0 | |
BSF TXSTA, TXEN, 0 | |
WAIT | |
BTFSS TXSTA, TRMT | |
GOTO WAIT | |
RETURN | |
SENDNEWLINE | |
MOVLW 0x0A | |
CALL SEND | |
MOVLW 0x0D | |
CALL SEND | |
RETURN | |
SENDVALUE | |
MOVLW 0x3C | |
CALL SEND | |
MOVF FIRSTVALUEL, 0 | |
ADDLW 0x30 | |
CALL SEND | |
MOVLW 0x3E | |
CALL SEND | |
MOVLW 0x3C | |
CALL SEND | |
MOVF SECONDVALUEL, 0 | |
ADDLW 0x30 | |
CALL SEND | |
MOVLW 0x3E | |
CALL SEND | |
RETURN | |
SENDNEGATIVE | |
MOVLW 0x2D | |
CALL SEND | |
RETURN | |
SENDERROR | |
MOVLW 0x45 | |
CALL SEND | |
MOVLW 0x52 | |
CALL SEND | |
MOVLW 0x52 | |
CALL SEND | |
MOVLW 0X4F | |
CALL SEND | |
MOVLW 0x52 | |
CALL SEND | |
CALL SENDNEWLINE | |
RETURN | |
MEMCLEAN | |
CLRF FIRSTVALUEH | |
CLRF FIRSTVALUEL | |
CLRF SECONDVALUEH | |
CLRF SECONDVALUEL | |
CLRF OPVALUE | |
CLRF RESULTU | |
CLRF RESULTH | |
CLRF RESULTL | |
CLRF ITOAL | |
CLRF ITOAH | |
CLRF ITOAU | |
CLRF ITOAUH | |
RETURN | |
ENDOP | |
SETF ISOP | |
RETURN | |
CHECKOP | |
CLRF ISOP | |
GOTO CHECKADDITION | |
GOTO CHECKSUBSTRACTION | |
GOTO CHECKMULTIPLICATION | |
GOTO CHECKDIVISION | |
CHECKERROR | |
CALL SENDERROR | |
CLRF OPSTATE | |
RETURN | |
CHECKADDITION | |
MOVF SERIALVALUE, 0 | |
SUBLW 0x2B ; + | |
BTFSC STATUS, Z, 0 | |
GOTO ENDOP | |
CHECKSUBSTRACTION | |
MOVF SERIALVALUE, 0 | |
SUBLW 0x2D ; - | |
BTFSC STATUS, Z, 0 | |
GOTO ENDOP | |
CHECKMULTIPLICATION | |
MOVF SERIALVALUE, 0 | |
SUBLW 0x2A ; * | |
BTFSC STATUS, Z, 0 | |
GOTO ENDOP | |
MOVF SERIALVALUE, 0 | |
SUBLW 0x78 ; x | |
BTFSC STATUS, Z, 0 | |
GOTO ENDOP | |
MOVF SERIALVALUE, 0 | |
SUBLW 0x58 ; x | |
BTFSC STATUS, Z, 0 | |
GOTO ENDOP | |
CHECKDIVISION | |
MOVF SERIALVALUE, 0 | |
SUBLW 0x2F ; / | |
BTFSC STATUS, Z, 0 | |
GOTO ENDOP | |
RESULTCLEAN | |
CLRF RESULTH | |
CLRF RESULTL | |
RETURN | |
MULTIPLY10 | |
CALL RESULTCLEAN | |
MOVLW 0x0A | |
MULWF MULTIPLICATIONVALUEL | |
MOVFF PRODL, RESULTL | |
MOVFF PRODH, RESULTH | |
MOVLW 0x0A | |
MULWF MULTIPLICATIONVALUEH | |
MOVF PRODL, 0 | |
ADDWF RESULTH, 1 | |
RETURN | |
MULTIPLY | |
MOVF FIRSTMULTIPLICATIONVALUEL, 0 | |
MULWF SECONDMULTIPLICATIONRESULTVALUEL | |
MOVFF PRODH, RESULTH | |
MOVFF PRODL, RESULTL | |
MOVF FIRSTMULTIPLICATIONVALUEH, 0 | |
MULWF SECONDMULTIPLICATIONRESULTVALUEH | |
MOVFF PRODH, RESULTUH | |
MOVFF PRODL, RESULTU | |
MOVF FIRSTMULTIPLICATIONVALUEL, 0 | |
MULWF SECONDMULTIPLICATIONRESULTVALUEH | |
MOVF PRODL, 0 | |
ADDWF RESULTH, 1 | |
MOVF PRODH, 0 | |
ADDWFC RESULTU, 1 | |
CLRF WREG | |
ADDWFC RESULTUH, 1 | |
MOVF FIRSTMULTIPLICATIONVALUEH, 0 | |
MULWF SECONDMULTIPLICATIONRESULTVALUEL | |
MOVF PRODL, 0 | |
ADDWF RESULTH, 1 | |
MOVF PRODH, 0 | |
ADDWFC RESULTU, 1 | |
CLRF WREG | |
ADDWFC RESULTUH, 1 | |
RETURN | |
DECREMENTRATIO | |
DECF QUOTIENTH, 1 | |
BTFSS STATUS, C, 0 | |
CLRF QUOTIENTH | |
GOTO REMAINDER | |
PREPAREDIVISIONVALUES | |
MOVFF QUOTIENTL, FIRSTMULTIPLICATIONVALUEL | |
MOVFF QUOTIENTH, FIRSTMULTIPLICATIONVALUEH | |
MOVFF DIVISORL, SECONDMULTIPLICATIONRESULTVALUEL | |
MOVFF DIVISORH, SECONDMULTIPLICATIONRESULTVALUEH | |
RETURN | |
REMAINDER | |
CALL PREPAREDIVISIONVALUES | |
CALL MULTIPLY | |
MOVF RESULTL, 0 | |
SUBWF DIVIDENTL, 0 | |
BTFSS STATUS, C, 0 | |
INCF RESULTH, 1 | |
MOVWF REMINDERL | |
MOVF RESULTH, 0 | |
SUBWF DIVIDENTH, 0 | |
BTFSS STATUS, C, 0 | |
GOTO ENDDIVISION | |
MOVWF REMINDERH | |
RETURN | |
GETREMINDER | |
DECF QUOTIENTL, 1 | |
BTFSS STATUS, C, 0 | |
GOTO DECREMENTRATIO | |
GOTO REMAINDER | |
CHECKREMINDER | |
MOVF RESULTH, 0 | |
CPFSEQ DIVIDENTH | |
GOTO GETREMINDER | |
MOVF RESULTL, 0 | |
CPFSEQ DIVIDENTL | |
GOTO GETREMINDER | |
CLRF REMINDERH | |
CLRF REMINDERL | |
RETURN | |
CHECKLOWDIVIDEVALUE | |
MOVF RESULTL, 0 | |
SUBWF DIVIDENTL, 0 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKREMINDER | |
MOVF RESULTL, 0 | |
SUBWF DIVIDENTL, 0 | |
BTFSS STATUS, C, 0 | |
GOTO CHECKREMINDER | |
INCF QUOTIENTL, 1 | |
BTFSC STATUS, C, 0 | |
INCF QUOTIENTH, 1 | |
GOTO DIVIDELOOP | |
DIVIDE | |
MOVLW 0x01 | |
MOVWF QUOTIENTL | |
CLRF QUOTIENTH | |
GOTO DIVIDELOOP | |
DIVIDELOOP | |
CALL PREPAREDIVISIONVALUES | |
CALL MULTIPLY | |
MOVF RESULTH, 0 | |
SUBWF DIVIDENTH, 0 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKLOWDIVIDEVALUE | |
MOVF RESULTH, 0 | |
SUBWF DIVIDENTH, 0 | |
BTFSS STATUS, C, 0 | |
GOTO CHECKREMINDER | |
INCF QUOTIENTL, 1 | |
BTFSC STATUS, C, 0 | |
INCF QUOTIENTH, 1 | |
GOTO DIVIDELOOP | |
ENDDIVISION | |
DECF REMINDERL, 1 | |
CLRF REMINDERH | |
RETURN | |
CHECKVALUE | |
MOVF CHECKVALUEH, 0 | |
SUBLW 0x27 | |
BTFSS STATUS, C, 0 | |
GOTO INVALID | |
MOVF CHECKVALUEH, 0 | |
SUBLW 0x27 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKLOWVALUE | |
SETF ISVALID | |
RETURN | |
CHECKLOWVALUE | |
MOVF CHECKVALUEL, 0 | |
SUBLW 0x0F | |
BTFSS STATUS, C, 0 | |
GOTO INVALID | |
SETF ISVALID | |
RETURN | |
INVALID | |
CLRF ISVALID | |
RETURN | |
ATOI | |
MOVLW 0x30 | |
RETURN | |
EIGHTBITINCREMENT | |
INCF RESULTVALUE, 1 | |
GOTO EIGHTBITENDCHECK | |
EIGHTBITENDCHECK | |
MOVF RESULTVALUE, 0 | |
ADDLW 0x30 | |
CALL SEND | |
SUBSTRACT10M | |
MOVLW 0x80 | |
SUBWF ITOAL, 1 | |
BTFSS STATUS, C, 0 | |
GOTO PREPARE20MVALUE | |
MOVLW 0x96 | |
GOTO SUBSTRACT20M | |
SUBSTRACT20M | |
SUBWF ITOAH, 1 | |
BTFSS STATUS, C, 0 | |
GOTO PREPARE30MVALUE | |
MOVLW 0x98 | |
GOTO SUBSTRACT30M | |
SUBSTRACT30M | |
SUBWF ITOAU, 1 | |
BTFSS STATUS, C, 0 | |
GOTO CHECK10M | |
GOTO ENDSUBSTRACTION10M | |
PREPARE20MVALUE | |
MOVLW 0x97 | |
GOTO SUBSTRACT20M | |
PREPARE30MVALUE | |
MOVLW 0x99 | |
GOTO SUBSTRACT30M | |
CHECK10M | |
MOVF ITOAUH, 0 | |
BTFSS STATUS, Z, 0 | |
GOTO CHECK40M | |
DECF ITOAU, 1 | |
BTFSS STATUS, C, 0 | |
GOTO CHECK30M | |
GOTO ENDSUBSTRACTION10M | |
CHECK30M | |
CLRF ITOAU | |
DECF ITOAL | |
CHECK40M | |
DECF ITOAUH, 1 | |
BTFSC STATUS, C, 0 | |
GOTO ENDSUBSTRACTION10M | |
CLRF ITOAUH | |
DECF ITOAL | |
GOTO ENDSUBSTRACTION10M | |
ENDSUBSTRACTION10M | |
DECF RESULTVALUE, 1 | |
BTFSS STATUS, Z, 0 | |
GOTO SUBSTRACT10M | |
GOTO CHECKSEVENTHBIT | |
SEVENBITINCREMENT | |
INCF RESULTVALUE, 1 | |
GOTO SEVENBITENDCHECK | |
SEVENBITENDCHECK | |
MOVF RESULTVALUE, 0 | |
ADDLW 0x30 | |
CALL SEND | |
MOVF RESULTVALUE, 0 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSIXTHBIT | |
GOTO SUBSTRACT1M | |
SUBSTRACT1M | |
MOVLW 0x40 | |
SUBWF ITOAL, 1 | |
BTFSS STATUS, C, 0 | |
GOTO PREPARE2MVALUE | |
MOVLW 0x42 | |
GOTO SUBSTRACT2M | |
SUBSTRACT2M | |
SUBWF ITOAH, 1 | |
BTFSS STATUS, C, 0 | |
GOTO PREPARE3MVALUE | |
MOVLW 0x0F | |
GOTO SUBSTRACT3M | |
SUBSTRACT3M | |
SUBWF ITOAU, 1 | |
BTFSC STATUS, C, 0 | |
GOTO ENDSUBSTRACTION1M | |
DECF ITOAU, 1 | |
BTFSS STATUS, C, 0 | |
GOTO CHECK3M | |
GOTO ENDSUBSTRACTION1M | |
PREPARE2MVALUE | |
MOVLW 0x43 | |
GOTO SUBSTRACT2M | |
PREPARE3MVALUE | |
MOVLW 0x10 | |
GOTO SUBSTRACT3M | |
CHECK3M | |
CLRF ITOAU | |
DECF ITOAL | |
ENDSUBSTRACTION1M | |
DECF RESULTVALUE, 1 | |
BTFSS STATUS, Z, 0 | |
GOTO SUBSTRACT1M | |
GOTO CHECKSIXTHBIT | |
FISISEINC | |
INCF RESULTVALUE, 1 | |
GOTO SIXBITENDCHECK | |
SIXBITENDCHECK | |
MOVF RESULTVALUE, 0 | |
ADDLW 0x30 | |
CALL SEND | |
MOVF RESULTVALUE, 0 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIFTHBIT | |
GOTO SUBSTRACT100K | |
SUBSTRACT100K | |
MOVLW 0xA0 | |
SUBWF ITOAL, 1 | |
BTFSS STATUS, C, 0 | |
GOTO PREPARE200KVALUE | |
MOVLW 0x86 | |
GOTO SUBSTRACT200K | |
SUBSTRACT200K | |
SUBWF ITOAH, 1 | |
BTFSS STATUS, C, 0 | |
GOTO PREPARE300KVALUE | |
MOVLW 0x01 | |
GOTO SUBSTRACT300K | |
SUBSTRACT300K | |
SUBWF ITOAU, 1 | |
BTFSC STATUS, C, 0 | |
GOTO ENDSUBSTRACTION100K | |
DECF ITOAU, 1 | |
BTFSS STATUS, C, 0 | |
GOTO CHECK300K | |
GOTO ENDSUBSTRACTION100K | |
PREPARE200KVALUE | |
MOVLW 0x87 | |
GOTO SUBSTRACT200K | |
PREPARE300KVALUE | |
MOVLW 0x02 | |
GOTO SUBSTRACT300K | |
CHECK300K | |
CLRF ITOAU | |
DECF ITOAL | |
ENDSUBSTRACTION100K | |
DECF RESULTVALUE, 1 | |
BTFSS STATUS, Z, 0 | |
GOTO SUBSTRACT100K | |
GOTO CHECKFIFTHBIT | |
FIVEBITINCREMENT | |
INCF RESULTVALUE, 1 | |
GOTO ENDFIVEBITCHECK | |
ENDFIVEBITCHECK | |
MOVF RESULTVALUE, 0 | |
ADDLW 0x30 | |
CALL SEND | |
MOVF RESULTVALUE, 0 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFOURTHBIT | |
GOTO SUBSTRACK10K | |
SUBSTRACK10K | |
MOVLW 0x10 | |
SUBWF ITOAL, 1 | |
BTFSS STATUS, C, 0 | |
GOTO PREPARE20KVALUE | |
GOTO SUBSTRACK20K | |
SUBSTRACK20K | |
MOVLW 0x27 | |
SUBWF ITOAH, 1 | |
BTFSS STATUS, C, 0 | |
GOTO CHECK10K | |
GOTO ENDSUBSTRACTION10K | |
PREPARE20KVALUE | |
MOVLW 0x28 | |
GOTO SUBSTRACK20K | |
CHECK10K | |
MOVF ITOAU, 0 | |
BTFSS STATUS, Z, 0 | |
GOTO CHECK30K | |
DECF ITOAH, 1 | |
BTFSS STATUS, C, 0 | |
GOTO CHECK20K | |
GOTO ENDSUBSTRACTION10K | |
CHECK20K | |
CLRF ITOAH | |
DECF ITOAL | |
CHECK30K | |
DECF ITOAU, 1 | |
BTFSC STATUS, C, 0 | |
GOTO ENDSUBSTRACTION10K | |
CLRF ITOAU | |
DECF ITOAL | |
GOTO ENDSUBSTRACTION10K | |
ENDSUBSTRACTION10K | |
DECF RESULTVALUE, 1 | |
BTFSS STATUS, Z, 0 | |
GOTO SUBSTRACK10K | |
GOTO CHECKFOURTHBIT | |
SUBSTRACT1K | |
MOVLW 0xE8 | |
SUBWF ITOAL, 1 | |
BTFSS STATUS, C, 0 | |
GOTO PREAPRE2KVALUE | |
MOVLW 0x03 | |
GOTO SUBSTRACT2K | |
SUBSTRACT2K | |
SUBWF ITOAH, 1 | |
BTFSS STATUS, C, 0 | |
GOTO CHECK2K | |
GOTO ENDSUBSTRACTION1K | |
PREAPRE2KVALUE | |
MOVLW 0x04 | |
GOTO SUBSTRACT2K | |
CHECK2K | |
CLRF ITOAH | |
DECF ITOAL | |
ENDSUBSTRACTION1K | |
DECF RESULTVALUE, 1 | |
BTFSS STATUS, Z, 0 | |
GOTO SUBSTRACT1K | |
GOTO CHECKTHIRDBIT | |
THREEBITINCREMENT | |
INCF RESULTVALUE, 1 | |
GOTO THREEBITENDCHECK | |
THREEBITENDCHECK | |
MOVF RESULTVALUE, 0 | |
ADDLW 0x30 | |
CALL SEND | |
MOVF RESULTVALUE, 0 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSECONDBIT | |
GOTO SUBSTRACT100 | |
SUBSTRACT100 | |
MOVLW 0x64 | |
SUBWF ITOAL, 1 | |
BTFSS STATUS, C, 0 | |
GOTO CHECK100 | |
GOTO ENDSUBSTRACTION100 | |
CHECK100 | |
DECF ITOAH | |
BTFSC STATUS, C, 0 | |
GOTO ENDSUBSTRACTION100 | |
CLRF ITOAH | |
DECF ITOAL | |
ENDSUBSTRACTION100 | |
DECF RESULTVALUE, 1 | |
BTFSS STATUS, Z, 0 | |
GOTO SUBSTRACT100 | |
GOTO CHECKSECONDBIT | |
SECONDBITINCREMENT | |
INCF RESULTVALUE, 1 | |
GOTO SECONDBITENDCHECK | |
SECONDBITENDCHECK | |
MOVF RESULTVALUE, 0 | |
ADDLW 0x30 | |
CALL SEND | |
MOVF RESULTVALUE, 0 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIRSTBIT | |
GOTO SUBSTRACT10 | |
SUBSTRACT10 | |
MOVLW 0x0A | |
SUBWF ITOAL, 1 | |
DECF RESULTVALUE, 1 | |
BTFSS STATUS, Z, 0 | |
GOTO SUBSTRACT10 | |
GOTO CHECKFIRSTBIT | |
CHECKRESULTVALUE | |
MOVF ITOAUH, 0 | |
BTFSS STATUS, Z, 0 | |
GOTO CHECKEIGHTBITS | |
MOVF ITOAU, 0 | |
SUBLW 0x98 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKEIGHTBITSSH | |
MOVF ITOAU,0 | |
SUBLW 0x98 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKSEVENBITS | |
GOTO CHECKEIGHTBITS | |
CHECKEIGHTBITSSH | |
MOVF ITOAH, 0 | |
SUBLW 0x96 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKEIGHTBITSSL | |
MOVF ITOAH,0 | |
SUBLW 0x96 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKSEVENBITS | |
GOTO CHECKEIGHTBITS | |
CHECKEIGHTBITSSL | |
MOVF ITOAL, 0 | |
SUBLW 0x80 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKEIGHTBITS | |
MOVF ITOAL,0 | |
SUBLW 0x80 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKSEVENBITS | |
GOTO CHECKEIGHTBITS | |
CHECKSEVENBITSH | |
MOVF ITOAH, 0 | |
SUBLW 0x42 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSEVENBITSL | |
MOVF ITOAH,0 | |
SUBLW 0x42 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKSIXBITS | |
GOTO CHECKSEVENTHBIT | |
CHECKSEVENBITSL | |
MOVF ITOAL, 0 | |
SUBLW 0x40 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSEVENTHBIT | |
MOVF ITOAL,0 | |
SUBLW 0x40 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKSIXBITS | |
GOTO CHECKSEVENTHBIT | |
CHECKSIXBITSH | |
MOVF ITOAH, 0 | |
SUBLW 0x86 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSIXBITSL | |
MOVF ITOAH,0 | |
SUBLW 0x86 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKFIVEBITS | |
GOTO CHECKSIXTHBIT | |
CHECKSIXBITSL | |
MOVF ITOAL, 0 | |
SUBLW 0xA0 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSIXTHBIT | |
MOVF ITOAL,0 | |
SUBLW 0xA0 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKFIVEBITS | |
GOTO CHECKSIXTHBIT | |
CHECKFIVEBITSH | |
MOVF ITOAH, 0 | |
SUBLW 0x27 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIVEBITSL | |
MOVF ITOAH,0 | |
SUBLW 0x27 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKFOURBITS | |
GOTO CHECKFIFTHBIT | |
CHECKFIVEBITSL | |
MOVF ITOAL, 0 | |
SUBLW 0x10 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIFTHBIT | |
MOVF ITOAL,0 | |
SUBLW 0x10 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKFOURBITS | |
GOTO CHECKFIFTHBIT | |
CHECKFOURBITSH | |
MOVF ITOAH, 0 | |
SUBLW 0x03 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFOURBITSL | |
MOVF ITOAH,0 | |
SUBLW 0x03 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKTHREEBITS | |
GOTO CHECKFOURTHBIT | |
CHECKFOURBITSL | |
MOVF ITOAL, 0 | |
SUBLW 0xE8 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFOURTHBIT | |
MOVF ITOAL,0 | |
SUBLW 0xE8 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKTHREEBITS | |
GOTO CHECKFOURTHBIT | |
CHECKTHREEBITSH | |
MOVF ITOAH, 0 | |
SUBLW 0x00 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKTHREEBITSL | |
MOVF ITOAH,0 | |
SUBLW 0x00 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKTWOBITS | |
GOTO CHECKTHIRDBIT | |
CHECKTHREEBITSL | |
MOVF ITOAL, 0 | |
SUBLW 0x64 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKTHIRDBIT | |
MOVF ITOAL,0 | |
SUBLW 0x64 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKTWOBITS | |
GOTO CHECKTHIRDBIT | |
CHECKEIGHTBITS | |
;Comparem amb els diferents valors | |
CLRF RESULTVALUE | |
GOTO CHECKEIGHTBITSONEUH | |
CHECKSEVENBITS | |
MOVF ITOAU, 0 | |
SUBLW 0x0F | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSEVENBITSH | |
MOVF ITOAU,0 | |
SUBLW 0x0F | |
BTFSC STATUS, C, 0 | |
GOTO CHECKSIXBITS | |
GOTO CHECKSEVENTHBIT | |
CHECKSIXBITS | |
MOVF ITOAU, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSIXBITSH | |
MOVF ITOAU,0 | |
SUBLW 0x01 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKFIVEBITS | |
GOTO CHECKSIXTHBIT | |
CHECKFIVEBITS | |
MOVF ITOAU, 0 | |
SUBLW 0x00 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIVEBITSH | |
MOVF ITOAU,0 | |
SUBLW 0x00 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKFOURBITS | |
GOTO CHECKFIFTHBIT | |
CHECKFOURBITS | |
MOVF ITOAU, 0 | |
SUBLW 0x00 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFOURBITSH | |
MOVF ITOAU,0 | |
SUBLW 0x00 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKTHREEBITS | |
GOTO CHECKFOURTHBIT | |
CHECKTHREEBITS | |
MOVF ITOAU, 0 | |
SUBLW 0x00 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKTHREEBITSH | |
MOVF ITOAU,0 | |
SUBLW 0x00 | |
BTFSC STATUS, C, 0 | |
GOTO CHECKTWOBITS | |
GOTO CHECKTHIRDBIT | |
CHECKTWOBITS | |
MOVF ITOAL, 0 | |
SUBLW 0x0A | |
BTFSS STATUS, C, 0 | |
GOTO CHECKSECONDBIT | |
MOVF ITOAL, 0 | |
SUBLW 0x0A | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSECONDBIT | |
GOTO CHECKFIRSTBIT | |
CHECKEIGHTBITSONEUH | |
MOVF ITOAUH, 0 | |
SUBLW 0x00 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKEIGHTBITSONEU | |
MOVF ITOAUH, 0 | |
SUBLW 0x00 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSTWOUH | |
CHECKEIGHTBITSONEU | |
MOVF ITOAU, 0 | |
SUBLW 0x98 | |
BTFSC STATUS, Z, 0 | |
GOTO EIGHTBITINCREMENT | |
MOVF ITOAU, 0 | |
SUBLW 0x98 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSTWOUH | |
CHECKEIGHTBITSTWOUH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAUH, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKEIGHTBITSTWOU | |
MOVF ITOAUH, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSTHREEUH | |
CHECKEIGHTBITSTWOU | |
MOVF ITOAU, 0 | |
SUBLW 0x31 | |
BTFSC STATUS, Z, 0 | |
GOTO EIGHTBITINCREMENT | |
MOVF ITOAU, 0 | |
SUBLW 0x31 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSTHREEUH | |
CHECKEIGHTBITSTHREEUH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAUH, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKEIGHTBITSTHREEU | |
MOVF ITOAUH, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSFOURUH | |
CHECKEIGHTBITSTHREEU | |
MOVF ITOAU, 0 | |
SUBLW 0xC9 | |
BTFSC STATUS, Z, 0 | |
GOTO EIGHTBITINCREMENT | |
MOVF ITOAU, 0 | |
SUBLW 0xC9 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSFOURUH | |
CHECKEIGHTBITSFOURUH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAUH, 0 | |
SUBLW 0x02 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKEIGHTBITSFOURU | |
MOVF ITOAUH, 0 | |
SUBLW 0x02 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSFIVEUH | |
CHECKEIGHTBITSFOURU | |
MOVF ITOAU, 0 | |
SUBLW 0x62 | |
BTFSC STATUS, Z, 0 | |
GOTO EIGHTBITINCREMENT | |
MOVF ITOAU, 0 | |
SUBLW 0x62 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSFIVEUH | |
CHECKEIGHTBITSFIVEUH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAUH, 0 | |
SUBLW 0x02 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKEIGHTBITSFIVEU | |
MOVF ITOAUH, 0 | |
SUBLW 0x02 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSSIXUH | |
CHECKEIGHTBITSFIVEU | |
MOVF ITOAU, 0 | |
SUBLW 0xFA | |
BTFSC STATUS, Z, 0 | |
GOTO EIGHTBITINCREMENT | |
MOVF ITOAU, 0 | |
SUBLW 0xFA | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSSIXUH | |
CHECKEIGHTBITSSIXUH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAUH, 0 | |
SUBLW 0x03 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKEIGHTBITSSIXU | |
MOVF ITOAUH, 0 | |
SUBLW 0x03 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSSEVENUH | |
CHECKEIGHTBITSSIXU | |
MOVF ITOAU, 0 | |
SUBLW 0x93 | |
BTFSC STATUS, Z, 0 | |
GOTO EIGHTBITINCREMENT | |
MOVF ITOAU, 0 | |
SUBLW 0x93 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSSEVENUH | |
CHECKEIGHTBITSSEVENUH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAUH, 0 | |
SUBLW 0x04 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKEIGHTBITSSEVENU | |
MOVF ITOAUH, 0 | |
SUBLW 0x04 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSEIGHTUH | |
CHECKEIGHTBITSSEVENU | |
MOVF ITOAU, 0 | |
SUBLW 0x2C | |
BTFSC STATUS, Z, 0 | |
GOTO EIGHTBITINCREMENT | |
MOVF ITOAU, 0 | |
SUBLW 0x2C | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSEIGHTUH | |
CHECKEIGHTBITSEIGHTUH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAUH, 0 | |
SUBLW 0x04 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKEIGHTBITSEIGHTU | |
MOVF ITOAUH, 0 | |
SUBLW 0x04 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSNINEUH | |
CHECKEIGHTBITSEIGHTU | |
MOVF ITOAU, 0 | |
SUBLW 0xC4 | |
BTFSC STATUS, Z, 0 | |
GOTO EIGHTBITINCREMENT | |
MOVF ITOAU, 0 | |
SUBLW 0xC4 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO CHECKEIGHTBITSNINEUH | |
CHECKEIGHTBITSNINEUH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAUH, 0 | |
SUBLW 0x05 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKEIGHTBITSNINEU | |
MOVF ITOAUH, 0 | |
SUBLW 0x05 | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO EIGHTBITINCREMENT | |
CHECKEIGHTBITSNINEU | |
MOVF ITOAU, 0 | |
SUBLW 0x5D | |
BTFSC STATUS, Z, 0 | |
GOTO EIGHTBITINCREMENT | |
MOVF ITOAU, 0 | |
SUBLW 0x5D | |
BTFSC STATUS, C, 0 | |
GOTO EIGHTBITENDCHECK | |
GOTO EIGHTBITINCREMENT | |
CHECKSEVENTHBIT | |
CLRF RESULTVALUE | |
GOTO CHECKSEVENBITONEU | |
CHECKSEVENBITONEU | |
MOVF ITOAU, 0 | |
SUBLW 0x0F | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSEVENBITONEH | |
MOVF ITOAU, 0 | |
SUBLW 0x0F | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
INCF RESULTVALUE, 1 | |
GOTO CHECKSEVENBITTWOU | |
CHECKSEVENBITONEH | |
MOVF ITOAU, 0 | |
SUBLW 0x42 | |
BTFSC STATUS, Z, 0 | |
GOTO SEVENBITINCREMENT | |
MOVF ITOAU, 0 | |
SUBLW 0x42 | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
INCF RESULTVALUE, 1 | |
GOTO CHECKSEVENBITTWOU | |
CHECKSEVENBITTWOU | |
MOVF ITOAU, 0 | |
SUBLW 0x1E | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSEVENBITTWOH | |
MOVF ITOAU, 0 | |
SUBLW 0x1E | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO CHECKSEVENBITTHREEU | |
CHECKSEVENBITTWOH | |
MOVF ITOAH, 0 | |
SUBLW 0x84 | |
BTFSC STATUS, Z, 0 | |
GOTO SEVENBITINCREMENT | |
MOVF ITOAH, 0 | |
SUBLW 0x84 | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO CHECKSEVENBITTHREEU | |
CHECKSEVENBITTHREEU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x2D | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSEVENBITTHREEH | |
MOVF ITOAU, 0 | |
SUBLW 0x2D | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO CHECKSEVENBITFOURU | |
CHECKSEVENBITTHREEH | |
MOVF ITOAH, 0 | |
SUBLW 0xC6 | |
BTFSC STATUS, Z, 0 | |
GOTO SEVENBITINCREMENT | |
MOVF ITOAH, 0 | |
SUBLW 0xC6 | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO CHECKSEVENBITFOURU | |
CHECKSEVENBITFOURU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x3D | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSEVENBITFOURH | |
MOVF ITOAU, 0 | |
SUBLW 0x3D | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO CHECKSEVENBITFIVEU | |
CHECKSEVENBITFOURH | |
MOVF ITOAH, 0 | |
SUBLW 0x09 | |
BTFSC STATUS, Z, 0 | |
GOTO SEVENBITINCREMENT | |
MOVF ITOAH, 0 | |
SUBLW 0x09 | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO CHECKSEVENBITFIVEU | |
CHECKSEVENBITFIVEU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x4C | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSEVENBITFIVEH | |
MOVF ITOAU, 0 | |
SUBLW 0x4C | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO CHECKSEVENBITSIXU | |
CHECKSEVENBITFIVEH | |
MOVF ITOAH, 0 | |
SUBLW 0x4B | |
BTFSC STATUS, Z, 0 | |
GOTO SEVENBITINCREMENT | |
MOVF ITOAH, 0 | |
SUBLW 0x4B | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO CHECKSEVENBITSIXU | |
CHECKSEVENBITSIXU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x5B | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSEVENBITSIXH | |
MOVF ITOAU, 0 | |
SUBLW 0x5B | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO CHECKSEVENBITSEVENU | |
CHECKSEVENBITSIXH | |
MOVF ITOAH, 0 | |
SUBLW 0x8D | |
BTFSC STATUS, Z, 0 | |
GOTO SEVENBITINCREMENT | |
MOVF ITOAH, 0 | |
SUBLW 0x8D | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO CHECKSEVENBITSEVENU | |
CHECKSEVENBITSEVENU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x6A | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSEVENBITSEVENH | |
MOVF ITOAU, 0 | |
SUBLW 0x6A | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO CHECKSEVENBITEIGHTU | |
CHECKSEVENBITSEVENH | |
MOVF ITOAH, 0 | |
SUBLW 0xCF | |
BTFSC STATUS, Z, 0 | |
GOTO SEVENBITINCREMENT | |
MOVF ITOAH, 0 | |
SUBLW 0xCF | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO CHECKSEVENBITEIGHTU | |
CHECKSEVENBITEIGHTU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x7A | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSEVENBITEIGHTH | |
MOVF ITOAU, 0 | |
SUBLW 0x7A | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO CHECKSEVENBITNINEU | |
CHECKSEVENBITEIGHTH | |
MOVF ITOAH, 0 | |
SUBLW 0x12 | |
BTFSC STATUS, Z, 0 | |
GOTO SEVENBITINCREMENT | |
MOVF ITOAH, 0 | |
SUBLW 0x12 | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO CHECKSEVENBITNINEU | |
CHECKSEVENBITNINEU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x89 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSEVENBITNINEH | |
MOVF ITOAU, 0 | |
SUBLW 0x89 | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO SEVENBITINCREMENT | |
CHECKSEVENBITNINEH | |
MOVF ITOAH, 0 | |
SUBLW 0x54 | |
BTFSC STATUS, Z, 0 | |
GOTO SEVENBITINCREMENT | |
MOVF ITOAH, 0 | |
SUBLW 0x54 | |
BTFSC STATUS, C, 0 | |
GOTO SEVENBITENDCHECK | |
GOTO SEVENBITINCREMENT | |
CHECKSIXTHBIT | |
CLRF RESULTVALUE | |
GOTO CHECKSIXBITONEU | |
CHECKSIXBITONEU | |
MOVF ITOAU, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSIXBITONEH | |
MOVF ITOAU, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITTWOU | |
CHECKSIXBITONEH | |
MOVF ITOAH, 0 | |
SUBLW 0x86 | |
BTFSC STATUS, Z, 0 | |
GOTO FISISEINC | |
MOVF ITOAH, 0 | |
SUBLW 0x86 | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITTWOU | |
CHECKSIXBITTWOU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x03 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSIXBITTWOH | |
MOVF ITOAU, 0 | |
SUBLW 0x03 | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITTHREEU | |
CHECKSIXBITTWOH | |
MOVF ITOAH, 0 | |
SUBLW 0x0D | |
BTFSC STATUS, Z, 0 | |
GOTO FISISEINC | |
MOVF ITOAH, 0 | |
SUBLW 0x0D | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITTHREEU | |
CHECKSIXBITTHREEU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x04 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSIXBITTHREEH | |
MOVF ITOAU, 0 | |
SUBLW 0x04 | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITFOURU | |
CHECKSIXBITTHREEH | |
MOVF ITOAH, 0 | |
SUBLW 0x93 | |
BTFSC STATUS, Z, 0 | |
GOTO FISISEINC | |
MOVF ITOAH, 0 | |
SUBLW 0x93 | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITFOURU | |
CHECKSIXBITFOURU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x06 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSIXBITFOURH | |
MOVF ITOAU, 0 | |
SUBLW 0x06 | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITFIVEU | |
CHECKSIXBITFOURH | |
MOVF ITOAH, 0 | |
SUBLW 0x1A | |
BTFSC STATUS, Z, 0 | |
GOTO FISISEINC | |
MOVF ITOAH, 0 | |
SUBLW 0x1A | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITFIVEU | |
CHECKSIXBITFIVEU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x07 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSIXBITFIVEH | |
MOVF ITOAU, 0 | |
SUBLW 0x07 | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITSIXU | |
CHECKSIXBITFIVEH | |
MOVF ITOAH, 0 | |
SUBLW 0xA1 | |
BTFSC STATUS, Z, 0 | |
GOTO FISISEINC | |
MOVF ITOAH, 0 | |
SUBLW 0xA1 | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITSIXU | |
CHECKSIXBITSIXU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x09 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSIXBITSIXH | |
MOVF ITOAU, 0 | |
SUBLW 0x09 | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITSEVENU | |
CHECKSIXBITSIXH | |
MOVF ITOAH, 0 | |
SUBLW 0x21 | |
BTFSC STATUS, Z, 0 | |
GOTO FISISEINC | |
MOVF ITOAH, 0 | |
SUBLW 0x21 | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITSEVENU | |
CHECKSIXBITSEVENU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x0A | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSIXBITSEVENH | |
MOVF ITOAU, 0 | |
SUBLW 0x0A | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITEIGHTU | |
CHECKSIXBITSEVENH | |
MOVF ITOAH, 0 | |
SUBLW 0xAE | |
BTFSC STATUS, Z, 0 | |
GOTO FISISEINC | |
MOVF ITOAH, 0 | |
SUBLW 0xAE | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITEIGHTU | |
CHECKSIXBITEIGHTU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x0C | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSIXBITEIGHTH | |
MOVF ITOAU, 0 | |
SUBLW 0x0C | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITNINEU | |
CHECKSIXBITEIGHTH | |
MOVF ITOAH, 0 | |
SUBLW 0x35 | |
BTFSC STATUS, Z, 0 | |
GOTO FISISEINC | |
MOVF ITOAH, 0 | |
SUBLW 0x35 | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO CHECKSIXBITNINEU | |
CHECKSIXBITNINEU | |
INCF RESULTVALUE, 1 | |
MOVF ITOAU, 0 | |
SUBLW 0x0D | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKSIXBITNINEH | |
MOVF ITOAU, 0 | |
SUBLW 0x0D | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO FISISEINC | |
CHECKSIXBITNINEH | |
MOVF ITOAH, 0 | |
SUBLW 0xBB | |
BTFSC STATUS, Z, 0 | |
GOTO FISISEINC | |
MOVF ITOAH, 0 | |
SUBLW 0xBB | |
BTFSC STATUS, C, 0 | |
GOTO SIXBITENDCHECK | |
GOTO FISISEINC | |
CHECKFIFTHBIT | |
MOVF ITOAU, 0 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIVEBITONEH | |
MOVLW 0x06 | |
MOVWF RESULTVALUE | |
GOTO CHECKFIVEBITSEVENU | |
CHECKFIVEBITONEH | |
CLRF RESULTVALUE | |
MOVF ITOAH, 0 | |
SUBLW 0x27 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIVEBITONEL | |
MOVF ITOAH, 0 | |
SUBLW 0x27 | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITTWOH | |
CHECKFIVEBITONEL | |
MOVF ITOAL, 0 | |
SUBLW 0x10 | |
BTFSC STATUS, Z, 0 | |
GOTO FIVEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x10 | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITTWOH | |
CHECKFIVEBITTWOH | |
INCF RESULTVALUE | |
MOVF ITOAH, 0 | |
SUBLW 0x4E | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIVEBITTWOL | |
MOVF ITOAH, 0 | |
SUBLW 0x4E | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITTHREEH | |
CHECKFIVEBITTWOL | |
MOVF ITOAL, 0 | |
SUBLW 0x20 | |
BTFSC STATUS, Z, 0 | |
GOTO FIVEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x20 | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITTHREEH | |
CHECKFIVEBITTHREEH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x75 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIVEBITTHREEL | |
MOVF ITOAH, 0 | |
SUBLW 0x75 | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITFOURH | |
CHECKFIVEBITTHREEL | |
MOVF ITOAL, 0 | |
SUBLW 0x30 | |
BTFSC STATUS, Z, 0 | |
GOTO FIVEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x30 | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITFOURH | |
CHECKFIVEBITFOURH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x9C | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIVEBITFOURL | |
MOVF ITOAH, 0 | |
SUBLW 0x9C | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITFIVEH | |
CHECKFIVEBITFOURL | |
MOVF ITOAL, 0 | |
SUBLW 0x40 | |
BTFSC STATUS, Z, 0 | |
GOTO FIVEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x40 | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITFIVEH | |
CHECKFIVEBITFIVEH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0xC3 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIVEBITFIVEL | |
MOVF ITOAH, 0 | |
SUBLW 0xC3 | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITSIXH | |
CHECKFIVEBITFIVEL | |
MOVF ITOAL, 0 | |
SUBLW 0x50 | |
BTFSC STATUS, Z, 0 | |
GOTO FIVEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x50 | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITSIXH | |
CHECKFIVEBITSIXH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0xEA | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIVEBITSIXL | |
MOVF ITOAH, 0 | |
SUBLW 0xEA | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITSEVEN | |
CHECKFIVEBITSIXL | |
MOVF ITOAL, 0 | |
SUBLW 0x60 | |
BTFSC STATUS, Z, 0 | |
GOTO FIVEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x60 | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITSEVEN | |
CHECKFIVEBITSEVEN | |
INCF RESULTVALUE, 1 | |
GOTO CHECKFIVEBITSEVENU | |
CHECKFIVEBITSEVENU | |
MOVF ITOAU, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIVEBITSEVENL | |
MOVF ITOAU, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITEIGHTH | |
CHECKFIVEBITSEVENL | |
MOVF ITOAH, 0 | |
SUBLW 0x11 | |
BTFSC STATUS, Z, 0 | |
GOTO FIVEBITINCREMENT | |
MOVF ITOAH, 0 | |
SUBLW 0x11 | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITEIGHTH | |
CHECKFIVEBITEIGHTH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x38 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIVEBITEIGHTL | |
MOVF ITOAH, 0 | |
SUBLW 0x38 | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITNINEH | |
CHECKFIVEBITEIGHTL | |
MOVF ITOAL, 0 | |
SUBLW 0x80 | |
BTFSC STATUS, Z, 0 | |
GOTO FIVEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x80 | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO CHECKFIVEBITNINEH | |
CHECKFIVEBITNINEH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x5F | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFIVEBITNINEL | |
MOVF ITOAH, 0 | |
SUBLW 0x5F | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO FIVEBITINCREMENT | |
CHECKFIVEBITNINEL | |
MOVF ITOAL, 0 | |
SUBLW 0x90 | |
BTFSC STATUS, Z, 0 | |
GOTO FIVEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x90 | |
BTFSC STATUS, C, 0 | |
GOTO ENDFIVEBITCHECK | |
GOTO FIVEBITINCREMENT | |
CHECKFOURTHBIT | |
CLRF RESULTVALUE | |
GOTO CHECKFOURBITONEH | |
CHECKFOURBITONEH | |
MOVF ITOAH, 0 | |
SUBLW 0x03 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFOURBITONEL | |
MOVF ITOAH, 0 | |
SUBLW 0x03 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITTWOH | |
CHECKFOURBITONEL | |
MOVF ITOAL, 0 | |
SUBLW 0xE8 | |
BTFSC STATUS, Z, 0 | |
GOTO FOURBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0xE8 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITTWOH | |
CHECKFOURBITTWOH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x07 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFOURBITTWOL | |
MOVF ITOAH, 0 | |
SUBLW 0x07 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITTHREEH | |
CHECKFOURBITTWOL | |
MOVF ITOAL, 0 | |
SUBLW 0xD0 | |
BTFSC STATUS, Z, 0 | |
GOTO FOURBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0xD0 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITTHREEH | |
CHECKFOURBITTHREEH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x0B | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFOURBITTHREEL | |
MOVF ITOAH, 0 | |
SUBLW 0x0B | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITFOURH | |
CHECKFOURBITTHREEL | |
MOVF ITOAL, 0 | |
SUBLW 0xB8 | |
BTFSC STATUS, Z, 0 | |
GOTO FOURBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0xB8 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITFOURH | |
CHECKFOURBITFOURH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x0F | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFOURBITFOURL | |
MOVF ITOAH, 0 | |
SUBLW 0x0F | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITFIVEH | |
CHECKFOURBITFOURL | |
MOVF ITOAL, 0 | |
SUBLW 0xA0 | |
BTFSC STATUS, Z, 0 | |
GOTO FOURBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0xA0 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITFIVEH | |
CHECKFOURBITFIVEH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x13 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFOURBITFIVEL | |
MOVF ITOAH, 0 | |
SUBLW 0x13 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITSIXH | |
CHECKFOURBITFIVEL | |
MOVF ITOAL, 0 | |
SUBLW 0x88 | |
BTFSC STATUS, Z, 0 | |
GOTO FOURBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x88 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITSIXH | |
CHECKFOURBITSIXH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x17 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFOURBITSIXL | |
MOVF ITOAH, 0 | |
SUBLW 0x17 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITSEVENH | |
CHECKFOURBITSIXL | |
MOVF ITOAL, 0 | |
SUBLW 0x70 | |
BTFSC STATUS, Z, 0 | |
GOTO FOURBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x70 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITSEVENH | |
CHECKFOURBITSEVENH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x1B | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFOURBITSEVENL | |
MOVF ITOAH, 0 | |
SUBLW 0x1B | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITEIGHTH | |
CHECKFOURBITSEVENL | |
MOVF ITOAL, 0 | |
SUBLW 0x58 | |
BTFSC STATUS, Z, 0 | |
GOTO FOURBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x58 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITEIGHTH | |
CHECKFOURBITEIGHTH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x1F | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFOURBITEIGHTL | |
MOVF ITOAH, 0 | |
SUBLW 0x1F | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITNINEH | |
CHECKFOURBITEIGHTL | |
MOVF ITOAL, 0 | |
SUBLW 0x40 | |
BTFSC STATUS, Z, 0 | |
GOTO FOURBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x40 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKFOURBITNINEH | |
CHECKFOURBITNINEH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x23 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKFOURBITNINEL | |
MOVF ITOAH, 0 | |
SUBLW 0x23 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO FOURBITINCREMENT | |
CHECKFOURBITNINEL | |
MOVF ITOAL, 0 | |
SUBLW 0x28 | |
BTFSC STATUS, Z, 0 | |
GOTO FOURBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x28 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO FOURBITINCREMENT | |
FOURBITINCREMENT | |
INCF RESULTVALUE, 1 | |
GOTO FOURBITENDCHECK | |
FOURBITENDCHECK | |
MOVF RESULTVALUE, 0 | |
ADDLW 0x30 | |
CALL SEND | |
MOVF RESULTVALUE, 0 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKTHIRDBIT | |
GOTO SUBSTRACT1K | |
CHECKTHIRDBIT | |
CLRF RESULTVALUE | |
GOTO CHECKTHREEBITONEH | |
CHECKTHREEBITONEH | |
MOVF ITOAH, 0 | |
SUBLW 0x00 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKTHREEBITONEL | |
MOVF ITOAH, 0 | |
SUBLW 0x00 | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO CHECKTHREEBITTWOH | |
CHECKTHREEBITONEL | |
MOVF ITOAL, 0 | |
SUBLW 0x64 | |
BTFSC STATUS, Z, 0 | |
GOTO THREEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x64 | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO CHECKTHREEBITTWOH | |
CHECKTHREEBITTWOH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x00 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKTHREEBITTWOL | |
MOVF ITOAH, 0 | |
SUBLW 0x00 | |
BTFSC STATUS, C, 0 | |
GOTO SECONDBITENDCHECK | |
GOTO CHECKTHREEBITTHREEH | |
CHECKTHREEBITTWOL | |
MOVF ITOAL, 0 | |
SUBLW 0xC8 | |
BTFSC STATUS, Z, 0 | |
GOTO THREEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0xC8 | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO CHECKTHREEBITTHREEH | |
CHECKTHREEBITTHREEH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKTHREEBITTHREEL | |
MOVF ITOAH, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO CHECKTHREEBITFOURH | |
CHECKTHREEBITTHREEL | |
MOVF ITOAL, 0 | |
SUBLW 0x2C | |
BTFSC STATUS, Z, 0 | |
GOTO THREEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x2C | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO CHECKTHREEBITFOURH | |
CHECKTHREEBITFOURH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKTHREEBITFOURL | |
MOVF ITOAH, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, C, 0 | |
GOTO FOURBITENDCHECK | |
GOTO CHECKTHREEBITFIVEH | |
CHECKTHREEBITFOURL | |
MOVF ITOAL, 0 | |
SUBLW 0x90 | |
BTFSC STATUS, Z, 0 | |
GOTO THREEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x90 | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO CHECKTHREEBITFIVEH | |
CHECKTHREEBITFIVEH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKTHREEBITFIVEL | |
MOVF ITOAH, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO CHECKTHREEBITSIXH | |
CHECKTHREEBITFIVEL | |
MOVF ITOAL, 0 | |
SUBLW 0xF4 | |
BTFSC STATUS, Z, 0 | |
GOTO THREEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0xF4 | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO CHECKTHREEBITSIXH | |
CHECKTHREEBITSIXH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x02 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKTHREEBITSIXL | |
MOVF ITOAH, 0 | |
SUBLW 0x02 | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO CHECKTHREEBITSEVENH | |
CHECKTHREEBITSIXL | |
MOVF ITOAL, 0 | |
SUBLW 0x58 | |
BTFSC STATUS, Z, 0 | |
GOTO THREEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x58 | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO CHECKTHREEBITSEVENH | |
CHECKTHREEBITSEVENH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x02 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKTHREEBITSEVENL | |
MOVF ITOAH, 0 | |
SUBLW 0x02 | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO CHECKTHREEBITEIGHTH | |
CHECKTHREEBITSEVENL | |
MOVF ITOAL, 0 | |
SUBLW 0xBC | |
BTFSC STATUS, Z, 0 | |
GOTO THREEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0xBC | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO CHECKTHREEBITEIGHTH | |
CHECKTHREEBITEIGHTH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x03 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKTHREEBITEIGHTL | |
MOVF ITOAH, 0 | |
SUBLW 0x03 | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO CHECKTHREEBITNINEH | |
CHECKTHREEBITEIGHTL | |
MOVF ITOAL, 0 | |
SUBLW 0x20 | |
BTFSC STATUS, Z, 0 | |
GOTO THREEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x20 | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO CHECKTHREEBITNINEH | |
CHECKTHREEBITNINEH | |
INCF RESULTVALUE, 1 | |
MOVF ITOAH, 0 | |
SUBLW 0x03 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKTHREEBITNINEL | |
MOVF ITOAH, 0 | |
SUBLW 0x03 | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO THREEBITINCREMENT | |
CHECKTHREEBITNINEL | |
MOVF ITOAL, 0 | |
SUBLW 0x84 | |
BTFSC STATUS, Z, 0 | |
GOTO THREEBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x84 | |
BTFSC STATUS, C, 0 | |
GOTO THREEBITENDCHECK | |
GOTO THREEBITINCREMENT | |
CHECKSECONDBIT | |
CLRF RESULTVALUE | |
GOTO CHECKTWOBITONE | |
CHECKTWOBITONE | |
MOVF ITOAL, 0 | |
SUBLW 0x0A | |
BTFSC STATUS, Z, 0 | |
GOTO SECONDBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x0A | |
BTFSC STATUS, C, 0 | |
GOTO SECONDBITENDCHECK | |
GOTO CHECKTWOBITTWO | |
CHECKTWOBITTWO | |
INCF RESULTVALUE, 1 | |
MOVF ITOAL, 0 | |
SUBLW 0x14 | |
BTFSC STATUS, Z, 0 | |
GOTO SECONDBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x14 | |
BTFSC STATUS, C, 0 | |
GOTO SECONDBITENDCHECK | |
GOTO CHECKTWOBITTHREE | |
CHECKTWOBITTHREE | |
INCF RESULTVALUE, 1 | |
MOVF ITOAL, 0 | |
SUBLW 0x1E | |
BTFSC STATUS, Z, 0 | |
GOTO SECONDBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x1E | |
BTFSC STATUS, C, 0 | |
GOTO SECONDBITENDCHECK | |
GOTO CHECKTWOBITFOUR | |
CHECKTWOBITFOUR | |
INCF RESULTVALUE, 1 | |
MOVF ITOAL, 0 | |
SUBLW 0x28 | |
BTFSC STATUS, Z, 0 | |
GOTO SECONDBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x28 | |
BTFSC STATUS, C, 0 | |
GOTO SECONDBITENDCHECK | |
GOTO CHECKTWOBITFIVE | |
CHECKTWOBITFIVE | |
INCF RESULTVALUE, 1 | |
MOVF ITOAL, 0 | |
SUBLW 0x32 | |
BTFSC STATUS, Z, 0 | |
GOTO SECONDBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x32 | |
BTFSC STATUS, C, 0 | |
GOTO SECONDBITENDCHECK | |
GOTO CHECKTWOBITSIX | |
CHECKTWOBITSIX | |
INCF RESULTVALUE, 1 | |
MOVF ITOAL, 0 | |
SUBLW 0x3C | |
BTFSC STATUS, Z, 0 | |
GOTO SECONDBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x3C | |
BTFSC STATUS, C, 0 | |
GOTO SECONDBITENDCHECK | |
GOTO CHECKTWOBITSEVEN | |
CHECKTWOBITSEVEN | |
INCF RESULTVALUE, 1 | |
MOVF ITOAL, 0 | |
SUBLW 0x46 | |
BTFSC STATUS, Z, 0 | |
GOTO SECONDBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x46 | |
BTFSC STATUS, C, 0 | |
GOTO SECONDBITENDCHECK | |
GOTO CHECKTWOBITEIGHT | |
CHECKTWOBITEIGHT | |
INCF RESULTVALUE, 1 | |
MOVF ITOAL, 0 | |
SUBLW 0x50 | |
BTFSC STATUS, Z, 0 | |
GOTO SECONDBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x50 | |
BTFSC STATUS, C, 0 | |
GOTO SECONDBITENDCHECK | |
GOTO CHECKTWOBITNINE | |
CHECKTWOBITNINE | |
INCF RESULTVALUE, 1 | |
MOVF ITOAL, 0 | |
SUBLW 0x5A | |
BTFSC STATUS, Z, 0 | |
GOTO SECONDBITINCREMENT | |
MOVF ITOAL, 0 | |
SUBLW 0x5A | |
BTFSC STATUS, C, 0 | |
GOTO SECONDBITENDCHECK | |
GOTO SECONDBITINCREMENT | |
CHECKFIRSTBIT | |
MOVF ITOAL, 0 | |
ADDLW 0x30 | |
CALL SEND | |
RETURN | |
SERIAL | |
MOVFF RCREG, SERIALVALUE | |
MOVF SERIALVALUE, 0 | |
CALL SEND | |
GOTO OPSTATE0 | |
OPSTATE0 | |
MOVF OPSTATE, 0 | |
SUBLW 0x00 | |
BTFSC STATUS, Z, 0 | |
GOTO E0 | |
GOTO OPSTATE1 | |
OPSTATE1 | |
MOVF OPSTATE, 0 | |
SUBLW 0x01 | |
BTFSC STATUS, Z, 0 | |
GOTO E1 | |
GOTO OPSTATE2 | |
OPSTATE2 | |
MOVF OPSTATE, 0 | |
SUBLW 0x02 | |
BTFSC STATUS, Z, 0 | |
GOTO E2 | |
GOTO OPSTATE3 | |
OPSTATE3 | |
MOVF OPSTATE, 0 | |
SUBLW 0x03 | |
BTFSC STATUS, Z, 0 | |
GOTO E3 | |
GOTO OPSTATE4 | |
OPSTATE4 | |
MOVF OPSTATE, 0 | |
SUBLW 0x04 | |
BTFSC STATUS, Z, 0 | |
GOTO E4 | |
GOTO OPSTATE5 | |
OPSTATE5 | |
MOVF OPSTATE, 0 | |
SUBLW 0x05 | |
BTFSC STATUS, Z, 0 | |
GOTO E5 | |
RETURN | |
E0 | |
CALL MEMCLEAN | |
MOVLW 0x3A | |
CPFSLT SERIALVALUE | |
GOTO CHECKERROR | |
CALL ATOI | |
SUBWF SERIALVALUE, 0 | |
BTFSC STATUS, N, 0 | |
GOTO CHECKERROR | |
MOVWF FIRSTVALUEL | |
INCF OPSTATE, 1 | |
RETURN | |
E1 | |
CALL CHECKOP | |
MOVF ISOP, 0 | |
BTFSS STATUS, Z, 0 | |
GOTO OPERATIONVALUE | |
MOVLW 0x3A | |
CPFSLT SERIALVALUE | |
GOTO CHECKERROR | |
MOVFF FIRSTVALUEL, MULTIPLICATIONVALUEL | |
MOVFF FIRSTVALUEH, MULTIPLICATIONVALUEH | |
CALL MULTIPLY10 | |
CALL ATOI | |
SUBWF SERIALVALUE, 0 | |
BTFSC STATUS, N, 0 | |
GOTO CHECKERROR | |
ADDWF RESULTL, 0 | |
BTFSC STATUS, C, 0 | |
INCF RESULTH, 1 | |
MOVWF FIRSTVALUEL | |
MOVFF RESULTH, FIRSTVALUEH | |
MOVFF FIRSTVALUEH, CHECKVALUEH | |
MOVFF FIRSTVALUEL, CHECKVALUEL | |
CALL CHECKVALUE | |
MOVF ISVALID, 0 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKERROR | |
MOVLW 0x01 | |
MOVWF OPSTATE | |
RETURN | |
E2 | |
RETURN | |
E3 | |
MOVLW 0x3A | |
CPFSLT SERIALVALUE | |
GOTO CHECKERROR | |
CALL ATOI | |
SUBWF SERIALVALUE, 0 | |
BTFSC STATUS, N, 0 | |
GOTO CHECKERROR | |
MOVWF SECONDVALUEL | |
MOVLW 0x04 | |
MOVWF OPSTATE | |
RETURN | |
E4 | |
MOVF SERIALVALUE, 0 | |
SUBLW 0x3D | |
BTFSC STATUS, Z, 0 | |
GOTO ENDOPERATION | |
MOVLW 0x3A | |
CPFSLT SERIALVALUE | |
GOTO CHECKERROR | |
MOVFF SECONDVALUEL, MULTIPLICATIONVALUEL | |
MOVFF SECONDVALUEH, MULTIPLICATIONVALUEH | |
CALL MULTIPLY10 | |
CALL ATOI | |
SUBWF SERIALVALUE, 0 | |
BTFSC STATUS, N, 0 | |
GOTO CHECKERROR | |
ADDWF RESULTL, 0 | |
BTFSC STATUS, C, 0 | |
INCF RESULTH, 1 | |
MOVWF SECONDVALUEL | |
MOVFF RESULTH, SECONDVALUEH | |
MOVFF SECONDVALUEH, CHECKVALUEH | |
MOVFF SECONDVALUEL, CHECKVALUEL | |
CALL CHECKVALUE | |
MOVF ISVALID, 0 | |
BTFSC STATUS, Z, 0 | |
GOTO CHECKERROR | |
MOVLW 0x04 | |
MOVWF OPSTATE | |
RETURN | |
E5 | |
RETURN | |
E6 | |
RETURN | |
OPERATIONVALUE | |
MOVFF SERIALVALUE, OPVALUE | |
MOVLW 0x03 | |
MOVWF OPSTATE | |
RETURN | |
ENDOPERATION | |
CLRF ISEND | |
CLRF OPSTATE | |
RETURN | |
CHECKADD | |
MOVF OPVALUE, 0 | |
SUBLW 0x2B | |
RETURN | |
CHECKSUBSTRACT | |
MOVF OPVALUE, 0 | |
SUBLW 0x2D | |
RETURN | |
CHECKMULTIPLYDOT | |
MOVF OPVALUE, 0 | |
SUBLW 0x2A | |
RETURN | |
CHECKMULTIPLYCROSS | |
MOVF OPVALUE, 0 | |
SUBLW 0x78 | |
RETURN | |
CHECKMULTIPLYCROSSM | |
MOVF OPVALUE, 0 | |
SUBLW 0x58 | |
RETURN | |
CHECKDIVIDE | |
MOVF OPVALUE,0 | |
SUBLW 0x2F | |
RETURN | |
NOOPERATION | |
CALL SENDERROR | |
SETF ISEND | |
CALL SENDNEWLINE | |
RETURN | |
OP | |
CALL CHECKADD | |
BTFSC STATUS, Z, 0 | |
GOTO ADDITION | |
CALL CHECKSUBSTRACT | |
BTFSC STATUS, Z, 0 | |
GOTO SUBSTRACTION | |
CALL CHECKMULTIPLYDOT | |
BTFSC STATUS, Z, 0 | |
GOTO MULTIPLICATION | |
CALL CHECKMULTIPLYCROSS | |
BTFSC STATUS, Z, 0 | |
GOTO MULTIPLICATION | |
CALL CHECKMULTIPLYCROSSM | |
BTFSC STATUS, Z, 0 | |
GOTO MULTIPLICATION | |
CALL CHECKDIVIDE | |
BTFSC STATUS, Z, 0 | |
GOTO DIVISION | |
CALL NOOPERATION | |
RETURN | |
ADDITION | |
MOVF FIRSTVALUEH, 0 | |
ADDWF SECONDVALUEH, 0 | |
MOVWF RESULTH | |
MOVF FIRSTVALUEL, 0 | |
ADDWF SECONDVALUEL, 0 | |
BTFSC STATUS, C, 0 | |
INCF RESULTH, 1 | |
MOVWF RESULTL | |
MOVFF RESULTL, ITOAL | |
MOVFF RESULTH, ITOAH | |
CALL CHECKRESULTVALUE | |
SETF ISEND | |
CALL SENDNEWLINE | |
RETURN | |
SUBSTRACTION | |
MOVF SECONDVALUEH, 0 | |
SUBWF FIRSTVALUEH, 0 | |
BTFSS STATUS, C, 0 | |
GOTO SUBSTRACTNEGATIVEVALUE | |
MOVF SECONDVALUEH, 0 | |
SUBWF FIRSTVALUEH, 0 | |
BTFSS STATUS,Z, 0 | |
GOTO SUBSTRACTPOSITIVEVALUE | |
MOVF SECONDVALUEL, 0 | |
SUBWF FIRSTVALUEL, 0 | |
BTFSS STATUS, C, 0 | |
GOTO SUBSTRACTNEGATIVEVALUE | |
GOTO SUBSTRACTPOSITIVEVALUE | |
SUBSTRACTPOSITIVEVALUE | |
MOVF SECONDVALUEL, 0 | |
SUBWF FIRSTVALUEL, 0 | |
BTFSS STATUS, C, 0 | |
INCF SECONDVALUEH, 1 | |
MOVWF RESULTL | |
MOVF SECONDVALUEH, 0 | |
SUBWF FIRSTVALUEH, 0 | |
BTFSS STATUS, C, 0 | |
GOTO DECREMENTLOWVALUE | |
MOVWF RESULTH | |
GOTO ENDSUBSTRACTION | |
SUBSTRACTNEGATIVEVALUE | |
CALL SENDNEGATIVE | |
MOVF FIRSTVALUEL, 0 | |
SUBWF SECONDVALUEL, 0 | |
BTFSS STATUS, C, 0 | |
INCF FIRSTVALUEH, 1 | |
MOVWF RESULTL | |
MOVF FIRSTVALUEH, 0 | |
SUBWF SECONDVALUEH, 0 | |
BTFSS STATUS, C, 0 | |
GOTO DECREMENTLOWVALUE | |
MOVWF RESULTH | |
GOTO ENDSUBSTRACTION | |
DECREMENTLOWVALUE | |
DECF RESULTL, 1 | |
CLRF RESULTH | |
ENDSUBSTRACTION | |
MOVFF RESULTL, ITOAL | |
MOVFF RESULTH, ITOAH | |
CALL CHECKRESULTVALUE | |
SETF ISEND | |
CALL SENDNEWLINE | |
RETURN | |
PREPAREMULTIPLICATIONVALUE | |
MOVFF FIRSTVALUEL, FIRSTMULTIPLICATIONVALUEL | |
MOVFF FIRSTVALUEH, FIRSTMULTIPLICATIONVALUEH | |
MOVFF SECONDVALUEL, SECONDMULTIPLICATIONRESULTVALUEL | |
MOVFF SECONDVALUEH, SECONDMULTIPLICATIONRESULTVALUEH | |
RETURN | |
MULTIPLICATION | |
CALL PREPAREMULTIPLICATIONVALUE | |
CALL MULTIPLY | |
MOVFF RESULTU, ITOAU | |
MOVFF RESULTUH, ITOAUH | |
MOVFF RESULTL, ITOAL | |
MOVFF RESULTH, ITOAH | |
CALL CHECKRESULTVALUE | |
SETF ISEND | |
CALL SENDNEWLINE | |
RETURN | |
PREPAREDIVISIONVALUE | |
MOVFF FIRSTVALUEL, DIVIDENTL | |
MOVFF FIRSTVALUEH, DIVIDENTH | |
MOVFF SECONDVALUEL, DIVISORL | |
MOVFF SECONDVALUEH, DIVISORH | |
RETURN | |
DIVISION | |
CALL PREPAREDIVISIONVALUE | |
CALL DIVIDE | |
MOVF REMINDERH, 0 | |
BTFSS STATUS, Z, 0 | |
GOTO DECIMALVALUE | |
MOVF REMINDERL, 0 | |
BTFSS STATUS, Z, 0 | |
GOTO DECIMALVALUE | |
MOVFF QUOTIENTL, ITOAL | |
MOVFF QUOTIENTH, ITOAH | |
CALL CHECKRESULTVALUE | |
SETF ISEND | |
CALL SENDNEWLINE | |
RETURN | |
PREPAREDECIMALVALUE | |
MOVFF QUOTIENTH, DECIMALVALUEH | |
MOVFF QUOTIENTL, DECIMALVALUEL | |
MOVFF REMINDERL, MULTIPLICATIONVALUEL | |
MOVFF REMINDERH, MULTIPLICATIONVALUEH | |
RETURN | |
DECIMALVALUE | |
CALL PREPAREDECIMALVALUE | |
CALL MULTIPLY10 | |
MOVFF RESULTL, DIVIDENTL | |
MOVFF RESULTH, DIVIDENTH | |
MOVFF SECONDVALUEL, DIVISORL | |
MOVFF SECONDVALUEH, DIVISORH | |
CALL DIVIDE | |
MOVFF DECIMALVALUEL, ITOAL | |
MOVFF DECIMALVALUEH, ITOAH | |
MOVFF QUOTIENTH, DECIMALVALUEH | |
MOVFF QUOTIENTL, DECIMALVALUEL | |
CALL CHECKRESULTVALUE | |
MOVLW 0x2E ; . | |
CALL SEND | |
MOVF DECIMALVALUEL, 0 | |
ADDLW 0x30 | |
CALL SEND | |
SETF ISEND | |
CALL SENDNEWLINE | |
RETURN | |
;******** | |
;* MAIN * | |
;******** | |
MAIN | |
CALL PORTS | |
CALL INTERRUPTS | |
CALL TXRX | |
CALL OPS | |
GOTO MAINLOOP | |
MAINLOOP | |
BTFSC PIR1, RCIF | |
CALL SERIAL | |
MOVF ISEND, 0 | |
BTFSC STATUS, Z, 0 | |
CALL OP | |
GOTO MAINLOOP | |
;******* | |
;* END * | |
;******* | |
END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment