Hola.... miren este código.... que estoy haciendo mal... No se me escribe nada en la memoria o por lo menos no se muestra en el hyperterminal.... Index es el puntero que se mueve por cada dirección de memoria para escribir un dato n la dirección a la que apunte el puntero index...
#include <18F4550.h>
#fuses NOPROTECT,NOCPD,NOLVP,NOMCLR,XT
#use fast_io (A)
#use fast_io (B)
#use fast_io (C)
#use fast_io (D)
#use fast_io (E)
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) // Habilita las funciones RS232, velocidad a 9600 baudios
#byte portd= 0xF83
#byte portb= 0xF81
#byte portc= 0xF82
#byte porta= 0xF80
int seccionador,index,datos,j;
void main(void)
{
set_tris_d(0x00); // Puerto D, como b'00000000 (salida)
set_tris_b(0x00); // Puerto B, como b'00000000 (salida)
set_tris_a(0xFF); // Puerto A, como b'11111111 (entrada)
set_tris_c(0xFF); // Puerto c, como b'11111111 (entrada)
setup_adc(ADC_OFF); // Deshabilito el conversor A/D
setup_adc_ports(NO_ANALOGS); // Deshabilito las entradas análogicas
output_b(0); // Limpio el puerto B
output_d(0); // Limpio el puerto D
output_a(0); // Limpio el puerto A
output_c(0); // Limpio el puerto C
delay_ms(10); // Una demorita de 10 mS
while(true)
{
/////////////////////Enciende los leds cuando los seccionadores están en "1" lógico/////////////////////
index= read_EEPROM(0x00); // Leo la memoria interna
if(index==255) // Si la memoria interna está en la posición
{index=0;} // Entonces la mando a escribir desde el principio
while(input(PIN_E0)==1)
{
if(input(PIN_A0)==1) // Seccionador 1
{
output_high(PIN_D0); // Enciendo un led de indicación
seccionador= 1; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D0); // Apago el led de indicación
}
if(input(PIN_A1)==1) // Seccionador 2
{
output_high(PIN_D1); // Enciendo un led de indicación
seccionador= 2; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D1); // Apago el led de indicación
}
if(input(PIN_A2)==1) // Seccionador 3
{
output_high(PIN_D2); // Enciendo un led de indicación
seccionador= 3; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D2); // Apago el led de indicación
}
if(input(PIN_A3)==1) // Seccionador 4
{
output_high(PIN_D3); // Enciendo un led de indicación
seccionador= 4; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D3); // Apago el led de indicación
}
if(input(PIN_A4)==1) // Seccionador 5
{
output_high(PIN_D4); // Enciendo un led de indicación
seccionador= 5; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D4); // Apago el led de indicación
}
if(input(PIN_A5)==1) // Seccionador 6
{
output_high(PIN_D5); // Enciendo un led de indicación
seccionador= 6; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D5); // Apago el led de indicación
}
if(input(PIN_C0)==1) // Seccionador 7
{
output_high(PIN_D6); // Enciendo un led de indicación
seccionador= 7; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D6); // Apago el led de indicación
}
if(input(PIN_C1)==1) // Seccionador 8
{
output_high(PIN_D7); // Enciendo un led de indicación
seccionador= 8; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D7); // Apago el led de indicación
}
if(input(PIN_C2)==1) // Seccionador 9
{
output_high(PIN_B0); // Enciendo un led de indicación
seccionador= 9; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_B0); // Apago el led de indicación
}
if(input(PIN_C4)==1) // Seccionador 10
{
output_high(PIN_B1); // Enciendo un led de indicación
seccionador= 10; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_B1); // Apago el led de indicación
}
}
/////////////////////Enciende los leds cuando los seccionadores están en "0" lógico/////////////////////
if(input(PIN_A0)==0) // Seccionador 1
{
output_high(PIN_D0); // Enciendo un led de indicación
seccionador= 1; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D0); // Apago el led de indicación
}
if(input(PIN_A1)==0) // Seccionador 2
{
output_high(PIN_D1); // Enciendo un led de indicación
seccionador= 2; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D1); // Apago el led de indicación
}
if(input(PIN_A2)==0) // Seccionador 3
{
output_high(PIN_D2); // Enciendo un led de indicación
seccionador= 3; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D2); // Apago el led de indicación
}
if(input(PIN_A3)==0) // Seccionador 4
{
output_high(PIN_D3); // Enciendo un led de indicación
seccionador= 4; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D3); // Apago el led de indicación
}
if(input(PIN_A4)==0) // Seccionador 5
{
output_high(PIN_D4); // Enciendo un led de indicación
seccionador= 5; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D4); // Apago el led de indicación
}
if(input(PIN_A5)==0) // Seccionador 6
{
output_high(PIN_D5); // Enciendo un led de indicación
seccionador= 6; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D5); // Apago el led de indicación
}
if(input(PIN_C0)==0) // Seccionador 7
{
output_high(PIN_D6); // Enciendo un led de indicación
seccionador= 7; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D6); // Apago el led de indicación
}
if(input(PIN_C1)==0) // Seccionador 8
{
output_high(PIN_D7); // Enciendo un led de indicación
seccionador= 8; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_D7); // Apago el led de indicación
}
if(input(PIN_C2)==0) // Seccionador 9
{
output_high(PIN_B0); // Enciendo un led de indicación
seccionador= 9; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_B0); // Apago el led de indicación
}
if(input(PIN_C4)==0) // Seccionador 10
{
output_high(PIN_B1); // Enciendo un led de indicación
seccionador= 10; // Asigno el número del seccionador encendido
index++;
write_EEPROM(index,seccionador); // Escribo el seccionador encendido
}
else
{
output_low(PIN_B1); // Apago el led de indicación
}
delay_ms(3000);
for(j=1;j<=index;j++)
{ datos= read_EEPROM(j);
printf("%d",datos);
delay_ms(5000);
}
}
}
Atte: Enigma... La llanerita de Guayana