At first glance (and it was a quick one), shouldn't the interrupt subroutines be at the beginning of the program, at the top, in Bank 0 if possible?

And...right here...

if reedswitchstate then
gosub lowvoltagecheck
else
pause 1000 ;Wait for a second to make sure the switch
high holdtxon ;is not being held HIGH
----------------------<<<<<<<<<<
high reedswitchstate
----------------------<<<<<<<<<<
gosub Lowvoltagecheck
endif

You're manually holding reedswitchstate (an input pin) with a command for an output pin. Did you actually mean to do something else here? It just doesn't look right to me.