#picaxe 14M2
SETFREQ M16
SYMBOL mcp23017 = %01000000 ; $0100 A2, A1, A0, R/W all connected to 0V
SYMBOL IODIRA = $00 ; Port A IO Direction register DEFAULT = I/P
SYMBOL IODIRB = $01 ; Port B IO Direction register DEFAULT = I/P
SYMBOL IOCON = $0A ; IO Expander config register - address $0B accesses the same register
SYMBOL GPIOA = $12 ; Port A General purpose register
SYMBOL GPIOB = $13 ; Port B General Purpose register
SYMBOL OLATA = $14 ; Port A latch register
SYMBOL OLATB = $15 ; Port B latch register
pause 8000
HI2CSETUP i2cmaster, mcp23017, i2cFAST_16, i2cbyte
' HI2CSETUP i2cmaster, mcp23017, i2cSLOW_16, i2cbyte
PAUSE 400
HI2COUT IODIRA, ($00) ;set all port A pins as outputs (0)
HI2COUT IODIRB, ($FF) ;set all port B pins as inputs (1)
PAUSE 100
do
HI2COUT GPIOA, (%11111111) ; all ON
PAUSE 4000
HI2COUT GPIOA, (%00000000) ; all OFF
PAUSE 4000
' sertxd("t")
HI2CIN GPIOB,(b2)
sertxd(#b2)
loop
THanx so much guys. You are the best!!!Thanks to the westaust55 tutorial on the mcp23017:
Code:#picaxe 14M2 SETFREQ M16 SYMBOL mcp23017 = %01000000 ; $0100 A2, A1, A0, R/W all connected to 0V SYMBOL IODIRA = $00 ; Port A IO Direction register DEFAULT = I/P SYMBOL IODIRB = $01 ; Port B IO Direction register DEFAULT = I/P SYMBOL IOCON = $0A ; IO Expander config register - address $0B accesses the same register SYMBOL GPIOA = $12 ; Port A General purpose register SYMBOL GPIOB = $13 ; Port B General Purpose register SYMBOL OLATA = $14 ; Port A latch register SYMBOL OLATB = $15 ; Port B latch register pause 8000 HI2CSETUP i2cmaster, mcp23017, i2cFAST_16, i2cbyte ' HI2CSETUP i2cmaster, mcp23017, i2cSLOW_16, i2cbyte PAUSE 400 HI2COUT IODIRA, ($00) ;set all port A pins as outputs (0) HI2COUT IODIRB, ($FF) ;set all port B pins as inputs (1) PAUSE 100 do HI2COUT GPIOA, (%11111111) ; all ON PAUSE 4000 HI2COUT GPIOA, (%00000000) ; all OFF PAUSE 4000 ' sertxd("t") HI2CIN GPIOB,(b2) sertxd(#b2) loop
; MCP23017 register address constants (from westaust55 tutorial)
SYMBOL mcp23017_0 = %01000000 ; $0100 A2, A1, A0, R/W all connected to 0V
SYMBOL mcp23017_1 = %01000010 ; A0 connected to +V
SYMBOL mcp23017_2 = %01000100 ; A1 connected to +V
SYMBOL IODIRA = $00 ; Port A IO Direction register DEFAULT = I/P
SYMBOL IODIRB = $01 ; Port B IO Direction register DEFAULT = I/P
SYMBOL GPIOA = $12 ; Port A General purpose register
SYMBOL GPIOB = $13 ; Port B General Purpose register
' set up mcp23017 i/o expanders
HI2CSETUP i2cmaster, mcp23017_0, cI2CSpeed, i2cbyte
HI2COUT IODIRA, ($00) ;set all port A pins as outputs (0)
HI2COUT IODIRB, ($00) ;set all port B pins as outputs (0)
HI2COUT GPIOA, ($00) ;set port A pins
HI2COUT GPIOB, ($FF) ;set all port B pins as inputs (1)
HI2CSETUP i2cmaster, mcp23017_1, cI2CSpeed, i2cbyte
HI2COUT IODIRA, ($00) ;set all port A pins as outputs (0)
HI2COUT IODIRB, ($00) ;set all port B pins as outputs (0)
HI2COUT GPIOA, ($00) ;set port A pins
HI2COUT GPIOB, ($FF) ;set all port B pins as inputs (1)