hola... resulta que estava provando unas funciones de manejos de cadena, el cual en este caso es strcpy donde esta copia el contenido de cadena2 en cadena1. cadena2 puede ser una variable o una cadena directa (por ejemplo "hola"). el cual el unico cuidado de que la cadena destino (cadena1) tenga espacio suficiente para albergar a la cadena origen (cadena2). donde esto se define:
char strcpy(cadena1, cadena2);
bueno el codigo que le aplico a esto es bien sencillo, trabajo con un teclado 4x4 y va almacenando los valores pulsados en una cadena definida como clave, el cual es del tipo char clave[40]; y despues de apretar la D del teclado la transfiere a una segunda cadena, y borra la cadena clave, dejando el contenido ahora solo en mi segunda cadena, donde esta definida como string[40];
bueno mi duda es, si alguien la a otrabajado esta funcion en proteus, porque ami por lo menos no me funciona, mejor dicho proteus se queda sin hacer nada mas.... cuando llega a esta linea, prove sacando esta linea y cambiando los los printf de en vez de poner string poniendo clave, y me funciona bien, esto era para descartar que el programa estuviese con algun error.
de todas formas le pongo el codigo para que vean de que ablo.
#include <16F873a.h>
#fuses HS,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT //ordenes para el programador
#use delay (clock=20000000) //Fosc=20Mhz
#include<kbd2+espacio.c> //libreria manejo keypad
#define use_portb_lcd TRUE //definir portb lcd
#include<lcd2.c> //libreria manejo lcd
#include <stdlib.h> //Libreria de manego de string
char clave[40],string[40],c,borrar[40];
signed char i;
int longitud;
///PROGRAMA
void main(void)
{
lcd_init(); //inicializa, o activa lcd
for(i=0;i<40;i++){
do{ //espera hasta...
c=kbd_getc();
}while(c==0); //...pulsar una tecla
if(c=='D'){
strcpy( string, clave );//Copia el contenido de cadena2 en cadena1
strcpy( clave,borrar); // borra cadena1
break;}
clave[i]=c; //almacena clave(maximo 16 caracteres)
borrar[i]; //almacena cuantas posiciones se ocuparon
if(i<19){
lcd_gotoxy(1,1);
printf(lcd_putc,"%s",clave);
}else{
lcd_gotoxy(-19,2);
printf(lcd_putc,"%s",clave);
}
}
lcd_gotoxy(1,1);
printf(lcd_putc,"separando la cadena ");
lcd_gotoxy(1,2);
printf(lcd_putc,"2 para verla entera ");
delay_ms(1500);
longitud = strlen(string); //devuelve el número de caracteres que tiene la cadena (sin contar el '\0').
if(longitud>18){
lcd_gotoxy(1,1);
printf(lcd_putc,"%s"string);
lcd_gotoxy(-19,2);
printf(lcd_putc,"%s",string);
}else{
lcd_gotoxy(1,1);
printf(lcd_putc,"%s",string);
}
}