I cleaned my code up, so it's really apparent what I'm trying to do.

I still won't blink the 16 LEDs.

Code:
#CONFIG
    __config _CONFIG1, _FEXTOSC_OFF & _RSTOSC_HFINT32 & _CLKOUTEN_OFF & _CSWEN_OFF & _FCMEN_ON
    __config _CONFIG2, _MCLRE_ON & _PWRTE_OFF & _LPBOREN_OFF & _BOREN_ON & _BORV_LO & _ZCD_OFF & _PPS1WAY_OFF & _STVREN_ON & _DEBUG_OFF
    __config _CONFIG3, _WDTCPS_WDTCPS_11 & _WDTE_OFF & _WDTCWS_WDTCWS_7 & _WDTCCS_LFINTOSC
    __config _CONFIG4, _WRT_OFF & _SCANE_available & _LVP_OFF
    __config _CONFIG5, _CP_OFF & _CPD_OFF
#ENDCONFIG

DEFINE OSC 32

define  CCP1_REG     0              ' Must clear unused CCP pins or else unpredictable results
DEFINE  CCP1_BIT     0
define  CCP2_REG     0
DEFINE  CCP2_BIT     0
DEFINE  CCP3_REG    PORTB
DEFINE  CCP3_BIT     5
define  CCP4_REG     0
DEFINE  CCP4_BIT     0
define  CCP5_REG     0
DEFINE  CCP5_BIT     0

ANSELA = %00000000
ANSELB = %00000000
ANSELC = %00000000
ANSELD = %00000000
ANSELE = %00000000

TRISA = %00000000
TRISB = %00000000
TRISC = %00000000
TRISD = %00000000
TRISE = %00001000

PinSCL2     VAR PortB.1
PinSDA2     VAR PortB.2

    HPWM 3, 8, 1953

addr        var byte : addr      = %01000000        ' $40

IOCONreg    var byte : IOCONreg  = $05
IOCONdat    var byte : IOCONdat  = %10110000
'   bit 7   1 = The registers associated with each port are separated into different banks.
'   bit 6   0 = The INT pins are not connected. INTA is associated with PORTA and INTB is associated with PORTB
'   bit 5   1 = Sequential operation disabled, address pointer does not increment.
'   bit 4   1 = Slew rate disabled
'   bit 3   0 = Disables the MCP23S17 address pins.
'   bit 2   0 = Active driver output (INTPOL bit sets the polarity.)
'   bit 1   0 = Active-low
'   bit 0   Unimplemented: Read as ‘0’

    I2CWRITE PinSDA2,PinSCL2,addr,IOCONreg,[IOCONdat]

IODIRAreg   var byte : IODIRAreg = $00 
IODIRAdat   var byte : IODIRAdat = %00000000

    I2CWRITE PinSDA2,PinSCL2,addr,IODIRAreg,[IODIRAdat] 'set GPIOA all output

IODIRBreg   var byte : IODIRBreg = $10
IODIRBdat   var byte : IODIRBdat = %00000000

    I2CWRITE PinSDA2,PinSCL2,addr,IODIRBreg,[IODIRBdat] 'set GPIOB all output

GPIOAreg    var byte : GPIOAdat    var byte
GPIOBreg    var byte : GPIOBdat    var byte

LOOOP:
    GPIOAreg    = $09 : GPIOAdat    = %00000000
    I2CWRITE PinSDA2,PinSCL2,addr,GPIOAreg,[GPIOAdat]

    GPIOBreg    = $19 : GPIOBdat    = %00000000
    I2CWRITE PinSDA2,PinSCL2,addr,GPIOBreg,[GPIOBdat]

    pause 250

    GPIOAreg    = $09 : GPIOAdat    = %11111111
    I2CWRITE PinSDA2,PinSCL2,addr,GPIOAreg,[GPIOAdat]

    GPIOBreg    = $19 : GPIOBdat    = %11111111
    I2CWRITE PinSDA2,PinSCL2,addr,GPIOBreg,[GPIOBdat]

    pause 250

    GOTO LOOOP
end

The HPWM is for a IRFZ44N that i use to pulse the LED grounds. I have a simple LED on it to confirm that it's operating.