Dear All,
The following code works fine for 16F777, but not work for 18F4525. Hope to get helps from you. The Led is flashing OK, but I2C, Serout, and string ABC do not work at all. Note that the slave is 16F747.
================================================== ===
include "modedefs.bas"
'DEFINE I2C_HOLD 1
SCL VAR PORTC.3 ' Clock pin
SDA VAR PORTC.4 ' Data pin
LED var PORTB.7
ABC var byte[2]
Out var PORTD.2
Address CON 2 ' Slave PIC 7-bit address
OSCCON = %01101110 ' Use internal 4MHz clock
ADCON1 = $0F ' Disable A/D convertor
' SSPADD = $09
' SSPCON1 = %00101000
' SSPCON2 = $FF
TRISA = %00000000 ' PORTA all set to Output
TRISB = %00000000
TRISC = %00011000
TRISD = %00000000
TRISE = %00000000
PORTA = 0
PORTB = 0
PORTC = 0
PORTD = 0
PORTE = 0
' LATA = 0
' LATB = 0
' LATC = 0
' LATD = 0
' LATE = 0
SCL = 1
SDA = 1
ABC[0] = "A"
ABC[1] = "B"
goto loop
FailedR:
serout Out, n9600, ["Read fail"] ' I2C command timed out
return
FailedW:
serout Out, n9600, ["write fail"] ' I2C command timed out
return
Loop:
low led
pause 500
I2CWRITE SDA,SCL,Address,[127],FailedW
pause 100
I2CRead SDA,SCL,Address,[str ABC\2], FailedR ' Read two bytes from slave
high led
serout Out, n9600, [ABC[0], ABC[1], 13, 10] ' sent to PC
pause 500
Goto Loop
END
=============================================
I made the changes of 18F4525.INC
from
__CONFIG _CONFIG1H, _OSC_XT_1H
__CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
__CONFIG _CONFIG4L, _LVP_OFF_4L
to
__CONFIG _CONFIG1H,_OSC_INTIO67_1H
__CONFIG _CONFIG2H, _WDT_OFF_2H
__CONFIG _CONFIG3H, _MCLRE_ON_3H
__CONFIG _CONFIG4L, _LVP_OFF_4L
Best regards,
Yuantu
Bookmarks