Hola. Soy microset. He hecho algunos proyectos con microcontroladores en ensamblador, pero no tengo mucha experiencia en C.
Me enviaron este código fuente, pero necesito la cooperación de alguien con mas experiencia para encontrar la solución a varios errores compilando en mikroC PRO para escribir en la eeprom 24LC256 con el PIC16F88.
El primer error es en la línea 32 y es "while expected, but 'Soft_I2C_Stop' found".
El código es para escribir en la eeprom el binario "(1110001)" y leer este dato en el puerto B del PIC.
Agradezco cualquier cooperación. Gracias.
El siguiente es el código fuente:
Me enviaron este código fuente, pero necesito la cooperación de alguien con mas experiencia para encontrar la solución a varios errores compilando en mikroC PRO para escribir en la eeprom 24LC256 con el PIC16F88.
El primer error es en la línea 32 y es "while expected, but 'Soft_I2C_Stop' found".
El código es para escribir en la eeprom el binario "(1110001)" y leer este dato en el puerto B del PIC.
Agradezco cualquier cooperación. Gracias.
El siguiente es el código fuente:
Código:
//16F88_I2C.C
//Variables de conexión I2C
sbit Soft_I2C_Scl at RA1_bit;
sbit Soft_I2C_Sda at RA2_bit;
sbit Soft_I2C_Scl_Direction at TRISA1_bit;
sbit Soft_I2C_Sda_Direction at TRISA2_bit;
// Fin de declaración de variables de conexión.
//Declaración de variable.
unsigned short DATO;
void main() {
OSCCON=0x60; //Oscilador interno a 4MHz (TCI=1 us).
//while (OSCCON.IOFS==0); //Esperar mientras el oscilador está inestable.
ANSEL=0x00; //Bits AN6:AN0 como E/S digital.
Soft_I2C_Init(); //Inicializa la comunicación I2C.
//Escritura
Soft_I2C_Start(); //Envía una señal de START.
Soft_I2C_Write(0b10100000); //Byte de Control. Operación de escritura.
Soft_I2C_Write(0x3B); //MSByte de dirección.
Soft_I2C_Write(0x00); //LSByte de dirección.
Soft_I2C_Write(0b11110001); //Dato que será escrito.
Soft_I2C_Stop(); //Envía una señal de STOP.
Delay_ms(5); //Ciclo interno de escritura.
//Lectura.
Soft_I2C_Start(); //Envía una señal de START.
Soft_I2C_Write(0b10100000); //Byte de Control. Operación de escritura.
Soft_I2C_Write(0x3B); //MSByte de dirección.
Soft_I2C_Write(0x00); //LSByte de dirección.
Soft_I2C_Start();
Soft_I2C_Write(0b10100001); //Byte de Control. Operación de lectura.
do{
dato=Soft_I2C_Read(1); //Lee un dato y responde con ACK.
}
Soft_I2C_Stop(); //Envía una señal de STOP.
portb=dato
}
Última edición por un moderador: