I also use a 2803 for relay control but use a PGA2320 for volume control. This is very much a work in progress but here is a snippett of code I use to change inputs and outputs. My switches however are a webpage done with a Siteplayer.
Code:
switches:
INTCON.7 = 0
SerOut2 PORTC.6,SPbaud, [$00, $C7, $1E]
SerIn2 PORTC.7,SPbaud, 100, mainloop, [power,ipod,computer,mute,bookshelf,subwoofer,volup,voldown]'
INTCON.7 = 1
checkswitches = 0
if power = 1 then
high relay6
high relay5
INTCON.7 = 0
write 1, power
INTCON.7 = 1
gosub dostuff
else
low relay6
low relay5
INTCON.7 = 0
write 1, power
INTCON.7 = 1
endif
return
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'subroutine
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
dostuff:
mydata.0 = 0
mydata.1 = ipod
mydata.2 = computer
mydata.3 = mute
mydata.4 = bookshelf
mydata.5 = subwoofer
mydata.6 = volup
mydata.7 = voldown
select case mydata
case 18
low relay1 'relays for speaker output
low relay2 'relays for speaker output
low relay7 'relays for Audio In
low relay8 'relays for Audio In
case 20
low relay1 'relays for speaker output
low relay2 'relays for speaker output
high relay7 'relays for Audio In
high relay8 'relays for Audio In
case 34
high relay1 'relays for speaker output
high relay2 'relays for speaker output
low relay7 'relays for Audio In
low relay8 'relays for Audio In
case 36
high relay1 'relays for speaker output
high relay2 'relays for speaker output
high relay7 'relays for Audio In
high relay8 'relays for Audio In
case 82,84,98,100
volup = 0
INTCON.7 = 0
SerOut2 PORTC.6, 84, [$00,$81,$24,volup]
INTCON.7 = 1
gosub Increasegain
gosub Post_Gain
case 146,148,162,164
voldown = 0
INTCON.7 = 0
SerOut2 PORTC.6, 84, [$00,$81,$25,voldown]
INTCON.7 = 1
gosub Decreasegain
gosub Post_Gain
end select
INTCON.7 = 0
write 2, ipod
write 3, computer
write 4, mute
write 5, bookshelf
write 6, subwoofer
INTCON.7 = 1
return
Done somewhat like yours. Hope this helps..
Bookmarks