Not answering your question but a couple of comments on your code.
Firstly, put the "#include <xc.h>" after the config pragmas. This is the way that the MPLABx recommends and also gets around any possible later issues with redefining "ON" and "OFF" (not that you are here bit it is a VERY common source of had to trace problems).
Don't set the DEBUG pragma. This is controlled by the MPLAB IDE when you select a release or debug build. Also the debug builds do more than just set this config setting that just setting this does not do.
Now to your question: please look at Figure 5-1 of the datasheet (
https://ww1.microchip.com/downloads/en/devicedoc/11195c.pdf) and compare the \CS\ line with how you are controlling it in your SPI_Write() function. In the data sheet it shows the \CS| line being low for both the command and data bytes whereas you only have it low for each byte. What that will do is to to cancel the command and possibly try to interpret the data byte as a command but it wil then get cancelled anyway.
Move the 'CS=0' and 'CS=1' lines into your MCP411200_SetResistance() function
Can I suggest that you don't use the 'magic numbers' for registers such as SSP21CON1 and SSP1STAT. You are using the register bit references elsewhere and this makes it much easier to not only write in the first place but for you and others to read later on.
Personally I would NOT set the interrupt enable bits (PEIE and GIE) within the timer initialisation function. Instead, do all of the setup and then enable the interrupts. While you only have the interrupts in one place now, when you later have a more complex progam and you try to 'cut and paste' code from previous programs, turning on the global interrupts too soon can cause problems. Moving the enable code into the main setup section is good practice.
Susan
PS: I see that
@KlausST mentioned the \CS\ handling while I was typing.