Mity Eltu
Member
I'm having some difficulty understanding how to make this interface operate. Rather than try to explain what I don't understand, let me just post my code. All I'm trying to do is get the port expander to turn on the leds on portb. So far I'm getting nothing. Can someone look at the code and tell me where I've hosed it up?
Please?
Please?
Code:
Define CONFIG1L = 0x00
Define CLOCK_FREQUENCY = 8
Dim loop As Bit
main:
OSCCON = 0x72 'internal 8MHz
Gosub setup
Call sspsend(0x0a, 0x28) 'sequential address, sequ op dis
Call sspsend(0x0b, 0x28)
Call sspsend(0x01, 0x00) 'all pins output
Call sspsend(0x0d, 0x00) 'pull ups disabled
Call sspsend(0x13, 0xff) 'on
While loop 'heart beat
PORTD.0 = 1
WaitMs 1000
PORTD.0 = 0
WaitMs 1000
Wend
End
setup:
INTCON = 0x00
INTCON2 = 0x80 'pull ups disabled
INTCON3 = 0x00
CCP1CON = 0x00 'cap / comp off
CCP2CON = 0x00
SSPCON1 = 0x20 'spi on
SSPSTAT = 0x40 'sample at end, cke=0
ADCON0 = 0x00 'A/D off
ADCON1 = 0x0f 'all digital
CMCON = 0x07 'comp off, digital io
CVRCON = 0x00
HLVDCON = 0x00 'Low volt detect off
TRISA = 0x00
TRISB = 0x00
TRISC = 0x00
TRISC.4 = 1 'sdi input
TRISD = 0x00
LATD.0 = 1
TRISE = 0x00
PORTA = 0x00
PORTB = 0x00
PORTC = 0x00
PORTE = 0x00
WaitUs 100
loop = 1
Return
Proc sspsend(adr As Byte, dat As Byte)
PORTD.1 = 0 'chip select
SSPBUF = 0x40 'send chip id
While SSPSTAT.0 = 0
Wend
'send address
SSPBUF = adr
While SSPSTAT.0 = 0
Wend
'send data
SSPBUF = dat
While SSPSTAT.0 = 0
Wend
PORTD.1 = 1
End Proc