Using PBP 2.60C, MCSP v2.2.1.1, MPASM v5.46, PIC 18F46K22.
62 bytes:
138 bytes:Code:@ __CONFIG _CONFIG1H, _FOSC_HSHP_1H & _PLLCFG_OFF_1H & _PRICLKEN_OFF_1H & _FCMEN_OFF_1H & _IESO_OFF_1H @ __CONFIG _CONFIG2L, _PWRTEN_ON_2L & _BOREN_SBORDIS_2L & _BORV_285_2L @ __CONFIG _CONFIG2H, _WDTEN_OFF_2H @ __CONFIG _CONFIG3H, _PBADEN_OFF_3H & _HFOFST_OFF_3H & _MCLRE_EXTMCLR_3H @ __CONFIG _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L DEFINE OSC 20 ANSELA = 0 ANSELB = 0 ANSELC = 0 ANSELD = 0 ANSELE = 0 TRISA = %00000000 TRISB = %00000000 TRISC = %00000000 TRISD = %10000000 TRISE = %00000000 CODE_ONE VAR PortB.1 CODE_TWO VAR PortB.2 CODE_THREE VAR PortB.3 CODE_FOUR VAR PortB.4 CODE_FIVE VAR PortB.5 IF CODE_ONE = 13 THEN IF CODE_TWO = 13 THEN 'With an oh IF CODE_THREE = 16 THEN IF CODE_FOUR = 21 THEN IF CODE_FIVE = 32 THEN 'Correct code ENDIF ENDIF ENDIF ENDIF ENDIF END
I know, Port be is defined as output and used as input (noticed after test), but that has no impact on test significance.Code:@ __CONFIG _CONFIG1H, _FOSC_HSHP_1H & _PLLCFG_OFF_1H & _PRICLKEN_OFF_1H & _FCMEN_OFF_1H & _IESO_OFF_1H @ __CONFIG _CONFIG2L, _PWRTEN_ON_2L & _BOREN_SBORDIS_2L & _BORV_285_2L @ __CONFIG _CONFIG2H, _WDTEN_OFF_2H @ __CONFIG _CONFIG3H, _PBADEN_OFF_3H & _HFOFST_OFF_3H & _MCLRE_EXTMCLR_3H @ __CONFIG _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L DEFINE OSC 20 ANSELA = 0 ANSELB = 0 ANSELC = 0 ANSELD = 0 ANSELE = 0 TRISA = %00000000 TRISB = %00000000 TRISC = %00000000 TRISD = %10000000 TRISE = %00000000 CODE_ONE VAR PortB.1 CODE_TWO VAR PortB.2 CODE_THREE VAR PortB.3 CODE_FOUR VAR PortB.4 CODE_FIVE VAR PortB.5 IF CODE_ONE = 13 and CODE_TWO = 13 and CODE_THREE = 16 and CODE_FOUR = 21 and CODE_FIVE = 32 THEN 'Correct code ENDIF END
More than twice as big using single IF, nested IF is definitely more efficient. I remember reading about that somewhere recently too, can't remember where.
Robert
![]()




Bookmarks