I'm working on a project that uses the PCA9685 chip. The chip is set up using the following code, which I confess was provided for me by a friend, but I get the gist of things in that it resets the chip and sets a pre-scaler or something !

Code:
'Initialize the PCA9685

i2cControl      var BYTE                'Used for PCA chip control
i2cReadAddress  var BYTE
i2cWriteAddress var BYTE
pcaAddress      var BYTE
oldMode         var BYTE
newMode         var BYTE
pcaChannel      var BYTE

i2cReadAddress = pcaAddress << 1
i2cWriteAddress = i2cReadAddress | 1
i2cControl = $0                                                     ;Reset
I2CWRITE SDApin,SCLpin,i2cWriteAddress,i2cControl,[$0]              ;PCA9685_MODE1 $0
i2cControl = $0                                                     'PCA9685_MODE1 $0
I2CREAD SDApin,SCLpin,i2cReadAddress,i2cControl,[oldMode]           ;Get old mode
newMode = (oldMode & $7F) | $10                                     ;MODE1 Sleep
i2cControl = $0
I2CWRITE SDApin,SCLpin,i2cWriteAddress,i2cControl,[newMode]         ;PCA9685_MODE1 $0
i2cControl = $FE                                                    ;PCA9685_PRESCALE $FE
I2CWRITE SDApin,SCLpin,i2cWriteAddress,i2cControl,[6]               ;Prescaler is now 6 was 11
i2cControl = $0                                                     ;PCA9685_MODE1 $0
I2CWRITE SDApin,SCLpin,i2cWriteAddress,i2cControl,[oldMode]         ;Set old mode
i2cControl = $0                                                     ;PCA9685_MODE1 $0
I2CWRITE SDApin,SCLpin,i2cWriteAddress,i2cControl,[oldMode | $A1 ]   ;Set MODE1 AutoIncrementOn | $A1
Using word variables (CH1_PWM, CH2_PWN etc) for the 0 to 4095 PWM levels the following code performs the setting of channel brightness, (the value for pcaChannel runs through from 0 to 15 for the 16 channels with each increment of CHx_PWM variable if that makes sense ?)

Code:
pcaChannel = 0                                            
i2cControl = $6 + 4*pcaChannel                            
I2CWRITE SDApin,SCLpin,i2cWriteAddress,i2cControl,[0,0,CH1_PWM.lowbyte,CH1_PWM.highbyte]

The above code is called when a time condition is matched, so each channel is has its own on/off time in a 24 hour period. But I want to have a manual over-ride so that if a button is pressed it jumps to a gosub routine which makes all the outputs of the PCA chip turn on. Looking at the datasheet https://cdn-shop.adafruit.com/datasheets/PCA9685.pdf there is register setting to turn all the LEDs on or off (FA, FB, FC and FD) but I don't know how to implement this in the code, so wondered if anyone has some suggestions ?