Code:
/* +---------------------------------+
| |
| Morse-Code-Generator |
| von René Becker |
| Modifiziert von Warringer |
| |
+---------------------------------+
*/
//---------------------------------------------------------
/* +-----------------+
| | | |
| | Includes | |
| | & | |
| | Defines | |
| V V |
+-----------------+
*/
//---------------------------------------------------------
#include <asuro.h>
//---------------------------------------------------------
#define sekunden 0.4
//---------------------------------------------------------
#define MORSE_a blinken(1,1,0); blinken(1,3,2);
#define MORSE_b blinken(1,3,0); blinken(2,1,0); blinken(1,1,2);
#define MORSE_c blinken(1,3,0); blinken(1,1,0); blinken(1,3,0); blinken(1,1,2);
#define MORSE_d blinken(1,3,0); blinken(1,1,0); blinken(1,1,2);
#define MORSE_e blinken(1,1,2);
#define MORSE_f blinken(2,1,0); blinken(1,3,0); blinken(1,1,2);
#define MORSE_g blinken(2,3,0); blinken(1,1,2);
#define MORSE_h blinken(3,1,0); blinken(1,1,2);
#define MORSE_i blinken(1,1,0); blinken(1,1,2);
#define MORSE_j blinken(1,1,0); blinken(2,3,0); blinken(1,3,2);
#define MORSE_k blinken(1,3,0); blinken(1,1,0); blinken(1,3,2);
#define MORSE_l blinken(1,1,0); blinken(1,3,0); blinken(1,1,0); blinken(1,1,2);
#define MORSE_m blinken(1,3,0); blinken(1,3,2);
#define MORSE_n blinken(1,3,0); blinken(1,1,2);
#define MORSE_o blinken(2,3,0); blinken(1,3,2);
#define MORSE_p blinken(1,1,0); blinken(2,3,0); blinken(1,1,2);
#define MORSE_q blinken(2,3,0); blinken(1,1,0); blinken(1,3,2);
#define MORSE_r blinken(1,1,0); blinken(1,3,0); blinken(1,1,2);
#define MORSE_s blinken(2,1,0); blinken(1,1,2);
#define MORSE_t blinken(1,3,2);
#define MORSE_u blinken(2,1,0); blinken(1,3,2);
#define MORSE_v blinken(3,1,0); blinken(1,3,2);
#define MORSE_w blinken(1,1,0); blinken(1,3,0); blinken(1,3,2);
#define MORSE_x blinken(1,3,0); blinken(2,1,0); blinken(1,3,2);
#define MORSE_y blinken(1,3,0); blinken(1,1,0); blinken(1,3,0); blinken(1,3,2);
#define MORSE_z blinken(2,3,0); blinken(1,1,0); blinken(1,1,2);
#define MORSE_wortende Msleep(5*einheit);
#define MORSE_punkt blinken(1,1,0); blinken(1,3,0); blinken(1,1,0); blinken(1,3,0); blinken(1,1,0); blinken(1,3,2);
//---------------------------------------------------------
/* +----------------------+
| | | |
| | Unterprogramme | |
| V V |
+----------------------+
*/
//---Einheit-----------------------------------------------
uint16_t einheit = sekunden*1000;
//---------------------------------------------------------
//---Wort/Satz/Buchstabe-----------------------------------
char einZeichen[] = "#";
char Zeichenkette[] = "";
uint8_t z1, z2 = 0;
//---Blinken-----------------------------------------------
int blinken(int anzahl,int multipl,int endsleep)
{
int xx;
for (xx=0;xx<anzahl;xx++)
{
BackLED(ON, ON);
Msleep(multipl*einheit);
BackLED(OFF, OFF);
Msleep(einheit);
}
Msleep(endsleep*einheit);
return(0);
}
//---------------------------------------------------------
//----Hyperterminaleingabe---------------------------------
//---------------------------------------------------------
/* +----------------------+
| | | |
| | Hauptprogramm | |
| V V |
+----------------------+
*/
//---Main--------------------------------------------------
int main ()
{
Init();
while(1)
{
z1=0;
do
{
SerRead(einZeichen,1,0); // warten bis ein Zeichen über IR kommt
SerWrite(&einZeichen[0],1); // Kontrollausgabe zum Terminal
Zeichenkette[z1] = einZeichen[0];
z1++;
}
while (einZeichen[0] != 0x09); // solange Zeichen einlesen bis VT erkannt wird
for (z2 = 0; z2 < z1; z2++)
{
switch (Zeichenkette[z2]) // der erste Index von einZeichen[] ist 0
{
case ('a'): MORSE_a; break;
case ('b'): MORSE_b; break;
case ('c'): MORSE_c; break;
case ('d'): MORSE_d; break;
case ('e'): MORSE_e; break;
case ('f'): MORSE_f; break;
case ('g'): MORSE_g; break;
case ('h'): MORSE_h; break;
case ('i'): MORSE_i; break;
case ('j'): MORSE_j; break;
case ('k'): MORSE_k; break;
case ('l'): MORSE_l; break;
case ('m'): MORSE_m; break;
case ('n'): MORSE_n; break;
case ('o'): MORSE_o; break;
case ('p'): MORSE_p; break;
case ('q'): MORSE_q; break;
case ('r'): MORSE_r; break;
case ('s'): MORSE_s; break;
case ('t'): MORSE_t; break;
case ('u'): MORSE_u; break;
case ('v'): MORSE_v; break;
case ('w'): MORSE_w; break;
case ('x'): MORSE_x; break;
case ('y'): MORSE_y; break;
case ('z'): MORSE_z; break;
case (' '): MORSE_wortende; break;
case ('.'): MORSE_punkt; break;
default: break;
}
}
}
return(0);
}
Möglich daß da die breaks in der Case Unterscheidung gefehlt haben...
Lesezeichen