1. RMW issue here:

greenport = 0 'provides a pulse to measure for diagnostics to check timer is actually running
greenport= 1
greenport = 0

I think you will not see the greenport change because of RMW issue. It depends on the capacitive load of the port though.

2. SetTimer turns off the timer.

So the rest of the commands after this line

Gosub SetTimer ' Set the Timer for next Interrupt

I guess are not executed.

The Interrupt routine should be less loaded also.

If time allows I will try to see more on your code.

Ioannis