Vous êtes sur la page 1sur 2

char* MorseABC[] = {

".-/","-.../","-.-./","-../","./","..-./","--./","..../","../",".---/","-.-/",".-..
/", //A asta L
"--/","-./","---/",".--./","--.-/",".-./",".../","-/","..-/","...-/",".--/","-..-/"
,"-.--/", // L asta Y
"--../"};

int Punto = 100; //100ms

void StrToMORSE(char *men);

void RecoridoCadena(char* posicion);


void EncendidoLED(char caracter);

int i=1;
void main(void)
{

TRISB = 0x00;

while(1)
{

StrToMORSE("Hola");

}
}

void StrToMORSE(char *men)


{
char pstr=0,caracter;

caracter=men[pstr];
do{

if((caracter >= 'a') && (caracter <= 'z') )


{
RecoridoCadena(MorseABC[caracter - 'a']);
}
else if((caracter >= 'A') && (caracter <= 'Z') )
{
RecoridoCadena(MorseABC[caracter - 'A']);
}

pstr++;
} while(caracter!='\0');
}

void RecoridoCadena(char* posicion)


{
int i = 0; //Variable usada como contador , para pasar por las
posiciones de las cadenas
while(posicion[i] != '/') //Bucle while (Traducion: Mientras(no finalize
la cadena Ej.A=.- esta cadena es de 2 caracteres))
{
EncendidoLED(posicion[i]); //Invocamos la funcios (para la posicion Nº
tal.Ya la funcion invocada determina que tiene que hacer.
i++; //Aumento de la la variable i, este aumento es = i + 1, en
c++ ,++ significa +1.
}
vDelay_ms(Punto * 3); //Espera entre palabras el valor de una raya que
es el multiplo de 3 de un Punto.
}

void EncendidoLED(char caracter)


{
PORTB.F0=1; //Enciende el LED,
if(caracter == '.') //Condicion que se traduce como si caracter es
igual a . el LED se enciende la duracion de la variable Punto
{
vDelay_ms(Punto); //Duracion.
}
else //Lo contrario de la IF , Seria si no , el LED se enciende
la duracion de la variable Punto * 3,Que es el valor de la Raya.
{
vDelay_ms(Punto * 3);
}
PORTB.F0=0; //Apaga el LED
vDelay_ms(Punto); //Duracion de VAriable.
}

Vous aimerez peut-être aussi