cannot help you with your code. but happy to offer you an approach.
as written, your code has poor reusability -> meaning you or others will have a hard time re-use the code in another project, with all those hard coded pins / ports.
1) read the datasheet thoroughly and understand what's needed to communicate with the device for your application and how the communications work. for example, do you need all CS/SCK/SDI/SDO or just CS/SCK/SDI? ... Form logic pins for those connections.
2) write a basic set of routines that communicate with the device. the datasheet says that it is always one command / instruction byte + data bytes. if you don't mind a little bit of inefficiency, a isl23428_write(cmd, data) + is23428_read(cmd, addr) would work, using logic pins in 1) above
3) with that, you can then write another set of routines writing specific data to dcp channels, or the control register, using routines developed in 2).
4) from there, you can develop your applications.