martes, 17 de diciembre de 2013

CLAVE MORSE (codigo)

PROGRAMA FINAL

Código del programa en la sección Processor Expert



/** ###################################################################
**     Filename    : ProcessorExpert.c
**     Project     : ProcessorExpert
**     Processor   : MKL25Z128VLK4
**     Version     : Driver 01.01
**     Compiler    : GNU C Compiler
**     Date/Time   : 2013-04-03, 18:11, # CodeGen: 0
**     Abstract    :
**         Main module.
**         This module contains user's application code.
**     Settings    :
**     Contents    :
**         No public methods
**
** ###################################################################*/
/* MODULE ProcessorExpert */


/* Including needed modules to compile this module/procedure */
#include "Cpu.h"
#include "Events.h"
#include "TU1.h"
#include "TI1.h"
#include "TU2.h"
#include "AS1.h"
#include "ASerialLdd1.h"
#include "LED_ROJO.h"
#include "BitIoLdd1.h"
/* Including shared modules, which are used for whole project */
#include "PE_Types.h"
#include "PE_Error.h"
#include "PE_Const.h"
#include "IO_Map.h"
#include "notas.h"
#include "Alfabeto_Morse.h"

void f_inicio(void);

extern AS1_TComData Letra_ing;
extern int Enter_ing;

byte Entrada[]="\n\r Introduce una letra y presiona Enter \n\r";
byte *ap_men;

Letra_Morse *ap_letra_sele,*ap_reset;


/* User includes (#include below this line is not maintained by Processor Expert) */

/*lint -save  -e970 Disable MISRA rule (6.3) checking. */
int main(void)
{

/*lint -restore Enable MISRA rule (6.3) checking. */

  /* Write your local variable definition here */

  /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
  PE_low_level_init();
  /*** End of Processor Expert internal initialization.                    ***/

  /* Write your code here */

    f_inicio();
 
    for(;;)
    {
// ------------------  Para saber qué letra se seleccionó  ------------------       
       if(Enter_ing==1)
       {
             switch (Letra_ing)
             {
             case 'A':    case 'a':
                    ap_letra_sele=ltr_A;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;
                   
             case 'B':    case 'b':
                    ap_letra_sele=ltr_B;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'C':    case 'c':
                    ap_letra_sele=ltr_C;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'D':    case 'd':
                    ap_letra_sele=ltr_D;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;
                   
             case 'E':    case 'e':
                    ap_letra_sele=ltr_E;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'F':    case 'f':
                    ap_letra_sele=ltr_F;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'G':    case 'g':
                    ap_letra_sele=ltr_G;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;
                   
             case 'H':    case 'h':
                    ap_letra_sele=ltr_H;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'I':    case 'i':
                    ap_letra_sele=ltr_I;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'J':    case 'j':
                    ap_letra_sele=ltr_J;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;
                   
             case 'K':    case 'k':
                    ap_letra_sele=ltr_K;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'L':    case 'l':
                    ap_letra_sele=ltr_L;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'M':    case 'm':
                    ap_letra_sele=ltr_M;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;
                   
             case 'N':    case 'n':
                    ap_letra_sele=ltr_N;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'O':    case 'o':
                    ap_letra_sele=ltr_O;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'P':    case 'p':
                    ap_letra_sele=ltr_P;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;
                   
             case 'Q':    case 'q':
                    ap_letra_sele=ltr_Q;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'R':    case 'r':
                    ap_letra_sele=ltr_R;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'S':    case 's':
                    ap_letra_sele=ltr_S;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;
                   
             case 'T':    case 't':
                    ap_letra_sele=ltr_T;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'U':    case 'u':
                    ap_letra_sele=ltr_U;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'V':    case 'v':
                    ap_letra_sele=ltr_V;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;
                   
             case 'W':    case 'w':
                    ap_letra_sele=ltr_W;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'X':    case 'x':
                    ap_letra_sele=ltr_X;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'Y':    case 'y':
                    ap_letra_sele=ltr_Y;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case 'Z':    case 'z':
                    ap_letra_sele=ltr_Z;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;

             case ';':    case '*':
                    ap_letra_sele=EXTRA;
                    toca_nota(ap_letra_sele);
                    Enter_ing=0; break;
                   
             default:
             ap_men=Entrada;
             AS1_SendChar(*ap_men);
             Enter_ing=0;                     
             }      //<- Cierra Switch
       }      //<- Cierra If
      
    }  //<- Cierra For

  /*** Don't write any code pass this line, or it will be deleted during code generation. ***/
  /*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON'T MODIFY THIS CODE!!! ***/
  #ifdef PEX_RTOS_START
    PEX_RTOS_START();                  /* Startup of the selected RTOS. Macro is defined by the RTOS component. */
  #endif
  /*** End of RTOS startup code.  ***/
  /*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/
  for(;;){}
  /*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/
} /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/

/* END ProcessorExpert */
/*
** ###################################################################
**
**     This file was created by Processor Expert 10.0 [05.03]
**     for the Freescale Kinetis series of microcontrollers.
**
** ###################################################################
*/

void f_inicio(void)
{

         gen_per_notasTicks();           // Genera los periodos en TICKS de las notas. 

         ap_men=Entrada;                 // Apuntador de mensaje posicionado en mensaje de entrada.
         AS1_SendChar(*ap_men);      // Manda a la pantalla el mensaje de entrada
         
         ap_letra_sele=Inicio;              // Apunta a los sonidos de inicio del programa.
         toca_nota(ap_letra_sele);    // Toca la primera nota
         ap_reset=Sil;                            // Apuntador de Reset en Silencio
}


Código del programa en la sección Events.c.
 


/** ###################################################################
**     Filename    : Events.c
**     Project     : ProcessorExpert
**     Processor   : MKL25Z128VLK4
**     Component   : Events
**     Version     : Driver 01.00
**     Compiler    : GNU C Compiler
**     Date/Time   : 2013-04-03, 18:11, # CodeGen: 0
**     Abstract    :
**         This is user's event module.
**         Put your event handler code here.
**     Settings    :
**     Contents    :
**         Cpu_OnNMIINT - void Cpu_OnNMIINT(void);
**
** ###################################################################*/
/* MODULE Events */

#include "Cpu.h"
#include "Events.h"
#include "notas.h"

#define RANGO 41
#define TIEMPO 5
extern uint32_t escalas[RANGO];
extern Letra_Morse *ap_letra_sele, *ap_reset;
byte tempo;

AS1_TComData Letra_ing;
int Enter_ing;             //De inicio era: AS1_TComData
extern byte*ap_men;

/* User includes (#include below this line is not maintained by Processor Expert) */

/*
** ===================================================================
**     Event       :  Cpu_OnNMIINT (module Events)
**
**     Component   :  Cpu [MKL25Z128LK4]
**     Description :
**         This event is called when the Non maskable interrupt had
**         occurred. This event is automatically enabled when the <NMI
**         interrrupt> property is set to 'Enabled'.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/
void Cpu_OnNMIINT(void)
{
  /* Write your code here ... */
}

/*
** ===================================================================
**     Event       :  TI1_OnInterrupt (module Events)
**
**     Component   :  TI1 [TimerInt_LDD]
**     Description :
**         Called if periodic event occur. Component and OnInterrupt
**         event must be enabled. See <SetEventMask> and <GetEventMask>
**         methods. This event is available only if a <Interrupt
**         service/event> is enabled.
**     Parameters  :
**         NAME            - DESCRIPTION
**       * UserDataPtr     - Pointer to the user or
**                           RTOS specific data. The pointer passed as
**                           the parameter of Init method.
**     Returns     : Nothing
** ===================================================================
*/
void TI1_OnInterrupt(LDD_TUserData *UserDataPtr)
{

  /* Write your code here ... */
       tempo--;    
       if(ap_letra_sele->nota!=SILENCIO)
             LED_ROJO_ClrVal();
       else LED_ROJO_SetVal();
       if(tempo==0)
       {
             ap_letra_sele++;
             if(ap_letra_sele->nota==0&&ap_letra_sele->tempo==0)
                    ap_letra_sele=ap_reset;
             toca_nota(ap_letra_sele);
       }     
}

/*
** ===================================================================
**     Event       :  AS1_OnError (module Events)
**
**     Component   :  AS1 [AsynchroSerial]
**     Description :
**         This event is called when a channel error (not the error
**         returned by a given method) occurs. The errors can be read
**         using <GetError> method.
**         The event is available only when the <Interrupt
**         service/event> property is enabled.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/
void AS1_OnError(void)
{
  /* Write your code here ... */
}

/*
** ===================================================================
**     Event       :  AS1_OnRxChar (module Events)
**
**     Component   :  AS1 [AsynchroSerial]
**     Description :
**         This event is called after a correct character is received.
**         The event is available only when the <Interrupt
**         service/event> property is enabled and either the <Receiver>
**         property is enabled or the <SCI output mode> property (if
**         supported) is set to Single-wire mode.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/
void AS1_OnRxChar(void)
{
AS1_TComData ch;                         // TComData type is defined in the AS1.h header file

         if(AS1_RecvChar(&ch) == ERR_OK)   //Rutina que lee el caracter ingresado y lo muestra, si no se detecta un error
           AS1_SendChar(ch);

         if(ch=='\r')
               Enter_ing=1;
         else
         {
               Letra_ing=ch;
               Enter_ing=0;
         }
}

/*
** ===================================================================
**     Event       :  AS1_OnTxChar (module Events)
**
**     Component   :  AS1 [AsynchroSerial]
**     Description :
**         This event is called after a character is transmitted.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/
void AS1_OnTxChar(void)
{
  /* Write your code here ... */

       ++ ap_men;
       if(*ap_men)
             AS1_SendChar(*ap_men);
}

/* END Events */



Código del programa en la sección Alfabeto_Morse.h.

 

/*
 * Alfabeto_Morse.h
 *
 *  Created on: Apr 10, 2013
 *      Author: JUAN
 */

#ifndef ALFABETO_MORSE_H_
#define ALFABETO_MORSE_H_
#include "notas.h"

Letra_Morse Inicio[]={     {DO5,NEGRA},
                                        {RE5,NEGRA},
                                        {MI5,NEGRA},
                                        {FA5,NEGRA},
                                        {SOL5,NEGRA},
                                        {LA5,NEGRA},
                                        {SI5,NEGRA},
                                        {DO6,BLANCA},
                                        {0,0}};

Letra_Morse Sil[]={{SILENCIO,SFUSA},{0,0}};


Letra_Morse ltr_A[]={      {LA3,PUNTO},
                                 {SILENCIO,PUNTO},
                    {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {0,0}};

Letra_Morse ltr_B[]={   {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_C[]={   {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_D[]={   {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_E[]={      {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {0,0}};

Letra_Morse ltr_F[]={   {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_G[]={   {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_H[]={   {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_I[]={   {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_J[]={   {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_K[]={   {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_L[]={   {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_M[]={      {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {0,0}};

Letra_Morse ltr_N[]={      {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {0,0}};

Letra_Morse ltr_O[]={      {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {0,0}};

Letra_Morse ltr_P[]={   {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_Q[]={      {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {0,0}};

Letra_Morse ltr_R[]={   {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_S[]={   {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_T[]={      {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {0,0}};

Letra_Morse ltr_U[]={   {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_V[]={   {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_W[]={   {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_X[]={   {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                 {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {0,0}};

Letra_Morse ltr_Y[]={      {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                    {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                                  {0,0}};

Letra_Morse ltr_Z[]={      {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {LA3,RAYA},
                                  {SILENCIO,PUNTO},
                    {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {LA3,PUNTO},
                                  {SILENCIO,PUNTO},
                                  {0,0}};

Letra_Morse EXTRA[]={      {DO3,1.5*NEGRA},
                                        {FA3,SCORCHEA},
                                        {FA3,NEGRA},
                                        {MI3,NEGRA},
                                        {FA3,CORCHEA},
                                        {SOL3,CORCHEA},
                                        {SOL3,NEGRA},
                                        {FA3,NEGRA},
                                        {SOL3,CORCHEA},
                                        {LA3,CORCHEA},
                                        {LA3,NEGRA},
                                        {SI3,CORCHEA},
                                        {LA3,CORCHEA},
                                        {LA3,SCORCHEA},
                                        {RE3,1.5*CORCHEA},
                                        {RE3,FUSA},
                                        {SOL3,1.5*SCORCHEA},
                                        {SOL3,SCORCHEA},
                                        {SOL3,1.5*CORCHEA},
                                        {FA3,1.5*NEGRA},
                                        {FA3,CORCHEA},
                                        {FA3,NEGRA},
                                        {FA3,NEGRA},
                                         {RE3,NEGRA},
                                        {MI3,CORCHEA},
                                        {FA3,CORCHEA},
                                        {FA3,NEGRA},
                                        {FA3,CORCHEA},
                                        {FA3,CORCHEA},
                                        {0,0}};

#endif /* ALFABETO_MORSE_ */


                                                                            
Código del programa en la sección notas.c.



/*
 * notas.c
 *
 *  Created on: Sep 11, 2013
 *      Author: JUAN
 */

#include "notas.h"
#include "TU1.h"
#include "TI1.h"
#include "TU2.h"

extern byte tempo;
uint32_t escalas[RANGO];

/*
Con la nota más baja (DO3) se programó el timer, como comparador(F=261hZ,T=3.83ms)
cuando la cuenta se desborda se pone en cero la salida, cuando el comparador iguala
la cuenta del contador del timer, se pone en uno la salida del pin PTA12
Nota: Para que sea una señal cuadrada el comparador tiene que tener la mitad de
la cuenta máxima del contador.
Las demás cuentas se generan como fracciones Q15 del periodo, arreglo factores[]
y se calcularon en Excell con la siguiente fórmula factores[i]= 2^15/ 1.059465^RANGO-i
Siendo en este caso RANGO=40;
*/

void gen_per_notasTicks(void) 
{
unsigned char i;
uint32_t Ticks;
uint32_t factores[]={3444,3649,3866,4096,4340,4598,4871,5161,5468,5793,6137,6502,6889,7298,7732,8192,8679,9195,9742,10321,10935,11585,12274,13004,13777,14596,15464,16384,17358,18390,19484,20643,21870,23171,24548,26008,27555,29193,30929,32768,1};
      
       TU1_GetPeriodTicks(TU1_DeviceData,&Ticks); //lee periodo base
       for(i=0;i<RANGO;i++)
             {
                    escalas[i]=(factores[i]*Ticks)>>15;
             }
}

void toca_nota(Letra_Morse *ap_letra_sele)
{
 TU1_SetPeriodTicks(TU1_DeviceData,escalas[ap_letra_sele->nota]); 
 TU1_SetOffsetTicks(TU1_DeviceData,0,(escalas[ap_letra_sele->nota])/2);
 tempo=ap_letra_sele->tempo*TEMPO;
}



Código del programa en la sección notas.h.


/*
 * notas.h
 *
 *  Created on: Apr 3, 2013
 *      Author: JUAN
 */


#ifndef NOTAS_H_
#define NOTAS_H_
#include "PE_Types.h"

#define RANGO 41 //Numero de notas
#define TEMPO 1
#define FREC_BASE 261.626 //Frecuencia equivalente a la nota mas baja deseada (DO3)
#define NUM_GEN 1.059465

typedef enum
{
       REs6,
       RE6,
       DOs6,
       DO6,
       SI5,
       LAs5,
       LA5,
       SOLs5,
       SOL5,
       FAs5,
       FA5,
       MI5,
       REs5,
       RE5,
       DOs5,
       DO5,
       SI4,
       LAs4,
       LA4,
       SOLs4,
       SOL4,
       FAs4,
       FA4,
       MI4,
       REs4,
       RE4,
       DOs4,
       DO4,
       SI3,
       LAs3,
       LA3,
       SOLs3,
       SOL3,
       FAs3,
       FA3,
       MI3,
       REs3,
       RE3,
       DOs3,
       DO3,
       SILENCIO
} notas; //Son 41 (RANGO) notas

typedef   struct    { byte nota; byte tempo;} Letra_Morse;

typedef   enum
{
     SFUSA          =1,
     FUSA           =2,
     SCORCHEA   =4,
     CORCHEA    =8,
     NEGRA      =16,
     BLANCA         =32,
     REDONDA =64,  
     PUNTO          =8,
     RAYA           =3*PUNTO
}dura; // tiempos en duracion de multiplos de 25ms

void gen_per_notasTicks(void);
void toca_nota(Letra_Morse *ap_letra_sele);

#endif /* NOTAS_H_ */


No hay comentarios:

Publicar un comentario