Hola, les comento lo que pretendo con un código en ccs c y no e conseguido realizar.
Lo que pretendo hacer es que a partir del abecedario en un arreglo recorrerlo (con un pulsador1), con otro pulsador2 seleccionar la letra deseada y estarla guardando en la eeprom, asi sucesivamente hasta formar una palabra de no máximo 10 letras. Esta palabra formada deberá guardarse en la eeprom y mostrarse al presionar un tercer pulsador3.
Tengo algo de codigo..Código: C#
char abecedario[27] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; char x=-1; void main(void) { lcd_init(); while (true) { if(!input(pin_A0)) // ESCRIBE ABECEDARIO { x++; if(x >= 27){ x = 0; }; while(!input(pin_A0)); {} lcd_gotoxy(1,2); printf(lcd_putc," %c ",abecedario[x]); } if(!input(pin_A1)) // GRABA { printf(lcd_putc,"\f" ) ; lcd_gotoxy(6,1); printf(lcd_putc,"Grabado"); }; while(!input(pin_A1)); {} if(!input(pin_A2)) // LEE LO GRABADO { printf(lcd_putc,"\f") ; lcd_gotoxy(2,1); printf(lcd_putc,"valor guardado"); }; while(!input(pin_A2)); {} } }
Alguien me ayuda con algún consejo o avance?..
Gracias...
printf(lcd_putc,"%s",abecedario);char abecedario[27] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; siempre te vaya a guardar un 0 en la posición [26], fundamental para saber que termina el string.char abecedario[] = {"abcdefghijklmnopqrstuvwxyz"};que de paso es mas breve.
Para imprimir un string debe ser:Código: [Seleccionar]printf(lcd_putc,"%s",abecedario);
Pero ojo, no estoy seguro que definiendoCódigo: [Seleccionar]char abecedario[27] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
Según un tema de este mismo foro dice así.Código: C
char arreglo[5]; se tendrá un arreglo de 5 elementos de tipo char. El contenido de cada char es aleatorio al arrancar el pic y usando el compilador de CCS para el ejemplo anterior. Se deberá inicializar el valor de cada elemento según el uso que se le vaya a dar. Para convertir el arreglo de chars anterior en una cadena formal, el arreglo deberá contar con lo siguiente: - Debe tener de 0 a 4 elementos (caracteres ascii) en las primeras 4 posiciones - El último elemento deberá ser un NULL char que equivale a 0x00 El elemento NULL marca el fin de los caracteres útiles de la cadena. Armemos una cadena sencilla con las características que se mencionaron: arreglo[0]='c'; arreglo[1]='a'; arreglo[2]='s'; arreglo[3]='a'; arreglo[4]=0x00; La cadena claramente contiene 'casa'. El quinto elemento dice: 'aquí terminó el texto'. Al usar la declaración char arreglo[5]; en realidad se está declarando un apuntador a una secuencia de chars. El apuntador se llamará arreglo y será capaz de conocer la dirección ram de un char.
Gracias Eduardo2.
Voy a intentar así..Código: C++
char abecedario[] = {"abcdefghijklmnopqrstuvwxyz"};
Sin las comillas.
Y probar el string al imprimir.
DominusDRR
Gracias me abrió un mejor panorama tu ayuda. La idea sigue siendo teclear 5 nombres guardar, leer en eeprom e imprimirlo imprimirlo la lcd.
char temp_pass[11]; // Supongo que son 10 caracteres máximo
void escribirPass(cantidad){
int8 contador = 0;
while(temp_pass[contador])
write_eeprom(contador++, temp_pass[contador]);
write_eeprom(contador, '\0');
}
void leerPass(){
int8 contador = 0;
do{
temp_pass[contador] = read_eeprom(contador);
if(contador >= sizeof temp_pass) contador++; break;
while(temp_pass[++contador]);
temp_pass[contador] = '\0';
}
Esta bien. El código se ve bien pensado, pero creo que trae detalles. Al menos lo e simulado en Proteus y no hace lo que debería. Pero es una buena manera de implementarlo. Al menos me dio otra forma de como lograrlo.
Gracias KILLERJC.