Hier der Code:
Code:
		
/*		+---------------------------------+
		|								  |
		|		Morse-Code-Generator	  |
		|		   von René Becker		  |
		|								  |
		+---------------------------------+
*/ 

//---------------------------------------------------------

/*		+-----------------+
		|  |		   	| |
		|  |  Includes  | |
		|  |     &      | |
		|  |  Defines   | |
       	|  V            V |
		+-----------------+
*/

//---------------------------------------------------------
#include <avr/io.h>
#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 ownsleep(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-----------------------------------------------
long einheit = sekunden/0.00000438;
//---------------------------------------------------------

//---Wort/Satz/Buchstabe-----------------------------------
char einZeichen[] = "#"; 
char Zeichenkette[] = ""; 
uint8_t z1, z2 = 0; 

//---------------------------------------------------------

//---mysleep-----------------------------------------------
int ownsleep (long sleepdauer)                   
{                                                                                                         
         long zaehler;
         for (zaehler=0 ; zaehler<=sleepdauer ; zaehler++ )   
         {                                               
              asm volatile ( "nop":: ) ;                 
         } 
}	
//---------------------------------------------------------


//---Blinken-----------------------------------------------	 
int blinken(int anzahl,int multipl,int endsleep)
{
	int xx;
	for (xx=0;xx<anzahl;xx++)
	{
		PORTD = 0b01000000;
		ownsleep (multipl*einheit);
		PORTD = 0b00000000;
		ownsleep (1*einheit);
	}
	ownsleep(endsleep*einheit);
}
//---------------------------------------------------------

//----Hyperterminaleingabe---------------------------------

//---------------------------------------------------------






/*		+----------------------+
		|  |			   	|  |
		|  |  Hauptprogramm |  |
       	|  V	            V  |
		+----------------------+
*/


//---Main--------------------------------------------------
int main ()
{
DDRD  = 0b01000100;
DDRC  = 0b00000011;
DDRB  = 0b00000000;
char einZeichen[] = "#";
char Zeichenkette[] = ""; 
	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
		            case ('b'): MORSE_b 
		            case ('c'): MORSE_c 
		            case ('d'): MORSE_d
		            case ('e'): MORSE_e 
		            case ('f'): MORSE_f 
					case ('g'): MORSE_g 
		            case ('h'): MORSE_h 
		            case ('i'): MORSE_i 
					case ('j'): MORSE_j
		            case ('k'): MORSE_k
		            case ('l'): MORSE_l
					case ('m'): MORSE_m 
		            case ('n'): MORSE_n 
		            case ('o'): MORSE_o
					case ('p'): MORSE_p 
		            case ('q'): MORSE_q 
		            case ('r'): MORSE_r
					case ('s'): MORSE_s 
		            case ('t'): MORSE_t 
		            case ('u'): MORSE_u
					case ('v'): MORSE_v 
		            case ('w'): MORSE_w 
		            case ('x'): MORSE_x 
		            case ('y'): MORSE_y 
		            case ('z'): MORSE_z 
		            case (' '): MORSE_wortende
					case ('.'): MORSE_punkt  

				  }
				
			  }
       }
      }

return(0);
}
@damaltor: die morsecodes zu den buchstaben stimmen