Here's a untested/simplfied version that should work. Compare it to your original to see the changes.
Code:
DEFINE OSC 4 ' 4 MHz clock
DEFINE ADC_BITS 10 ' Set number of bits in result
DEFINE ADC_CLOCK 3 ' Set clock source (3=rc)
DEFINE ADC_SAMPLEUS 20 ' Set sampling time in uS
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 25 ' 2400 Baud @ 4MHz, 0.17%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
TRISA = %000001 ' Set PORTA
TRISB = %01100000 ' Set PORTB
TRISC = %10000000 ' Set PORTC
ADCON1 = %10001110 ' RA0 A/D input. +Vref=Vdd, -Vref=Vss. Right justified for 10-bit
INTCON = %11000000 ' Global & peripheral ints enabled. Not RB0/INT
PIE1 = %00100000
'**************** DEFINE VARIABLES ***************************************
relay VAR BYTE 'relay number storage variable
stat VAR BYTE 'relay status ON/OFF variable
POTADC VAR WORD 'ADC Result
RXBYTE var byte
'**************** PORT B Setup *******************************************
ANT4 VAR PORTB.3 'ANT4 Relay
ANT3 VAR PORTB.2 'ANT3 Relay
ANT2 VAR PORTB.1 'ANT2 Relay
ANT1 VAR PORTB.0 'ANT1 Relay
'**************** PORT C Setup *******************************************
CCW VAR PORTC.5 'CCW Relay
CW VAR PORTC.4 'CW Relay
'****************** PORT SETUP *******************************************
CW=0 ' CW Relay Off
CCW=0 ' CCw Relay Off
ANT1=0
ANT2=0
ANT3=0
ANT4=0
ADCON0=0 ' Set up ADCON1
ON INTERRUPT GOTO RECEIVE
MAIN:
ADCIN 0, POTADC 'convert ADC value to a byte value:
HSEROUT [DEC POTADC,32] 'TX DATA on PORTC.6
PAUSE 300
GOTO MAIN
DISABLE ' <-- doesn't matter if DISABLE is before or after the label
' just as long as it's before any CODE.
RECEIVE:
IF RCSTA.2=1 THEN
HSERIN [RXBYTE]
ELSE
HSERIN 500,IntExit,[relay,stat] 'Serial data in on PortC.7
ENDIF
' Simplified version without gosubs, gotos, etc.
IF relay = 1 THEN CW = Stat.0 ' Process relay#1
IF relay = 2 THEN CCW = Stat.0 ' Process relay#2
IF relay = 3 THEN PORTB = %00000001 ' Process relay#3
IF relay = 4 THEN PORTB = %00000010 ' Process relay#4
IF relay = 5 THEN PORTB = %00000100 ' Process relay#5
IF relay = 6 THEN PORTB = %00001000 ' Process relay#6
IntExit:
RESUME
ENABLE ' <-- You only need ENABLE if you place more code below
' it and you want interrupt checking code there.
END
Bookmarks