Schönen Abend,

nun habe ich vor Freude über die Funktion der RS232-Ausgabe (mit späterem Abkokeln des max232 UND des tiny2313 und Koma eines zweiten tiny mit lock1 und lock2) und anschliessendem Netzteilausfall am PC etwas übersehen.

Schaltung der LED´s und Code "an/aus" entsprechen der RN-Control. Aber die LED geht bei mir sofort an und mit "setportbon(2)" aus - und danach kommt das "Hallo, Welt."
Code:
/* >> Diese ersten 2 Zeilen können zum Assemblieren entfernt werden (muss nicht)
  Sicherung vom 28nov07, 1734 nach Datei ..C1\hello-world\he-wo_x90.asm
 ===================================================================================
 ========== Beachte: printout aus AVRStudio geht (nur) bis col 85 ==================
  Target MCU        : ATtiny2313
  Target Hardware   : Servos auf PB5 und 6, LED auf PB4
  Target cpu-frequ. : 16 MHz, externer Quarzoszillator
 ===================================================================================
  *** Versionsgeschichte:
 ====================
  x91 28nov07 17:34  === Läuft mit 2-sec-Takt (LED), noch ohne Terminalaufruf 
  	#####>>>>> ABER : LED geht SOFORT an, obwohl Schaltung und Code wie in
	RNControl 1.4 :(( 
  x90 24nov07 23:ff  === Läuft erst nach Einbau des Quarzes
  x10 23nov07 16:ff  Erster Aufbau, u.a. zum Test der Flash- und Experimentier-
  			Platine für tiny2313 mit RS232
  *** Aufgabenstellung (erweitert für x91): 
  Sende wiederholt "Hallo, Welt." über die RS232 UND LED auf PB2 anzünden.
  Abstand der Abläufe: 2 sec LED leuchten, Textausgabe und danach 2 sec Pause.
	offen: Start dann, wenn Taste 1 gedrückt, läuft durch wenn gedrückt bleibt
	später: einlesen 100 ==> Programm startet mit 1sec-Takt, evtl. Erweiterung
		einlesen 200 ==> startet mit 2 sek-Takt; Einlesen über Terminal
  Autor: JWT 
  Läuft, ABER erst mit Quarz. Hilfe von Hubert.G und robocat
	Portbelegung, Schaltung auszugsweise
                     VAP = LED an, wenn ddrb=1 + portb=0  
  Vcc ---------+-----t2313-Vcc                         
               |                   +------+      rLED|\ |              
               +-------------------+ 100R +----------| >+------+ 
               |                   +------+          |/ |      |
               |     t2313-PB2---------------------------------+ 
               |                                                   
               +-----------------------------------------------+        
                                                Taste1 \       |      
                     t2313-PB4----------------+-------+ |------+      
                                   +------+   |                                            
               +-------------------+ 10 K +---+                                           
               |                   +------+                                           
               |                                                        
 GND-----------+---------------------------------------GND     
 ===================================================================================
										  */
#include <stdlib.h> 
#include <avr/io.h> 
#include <avr/iotn2313.h>     //<<< das is ja wohl nix 

//#define MCU = attiny2313 

//   Mit Quarz 16 Mhz-CPU 
#define F_CPU  16000000 
#define BAUD 9600 
#define UBRR (unsigned int)(F_CPU / BAUD / 16 - 0.5) 

//   ### Portinitialisierung und waitms aus RNContr Demo C 
//   *### Ports setzen auf HIGH/LOW  ### 

static inline void setportbon(const uint8_t n) 
{PORTB |= (1<<n);}   //set PORTB.n high 
static inline void setportboff(const uint8_t n) 
{PORTB &= ~(1<<n);}   //set PORTB.n low 

/*### Programm pausieren lassen ###*/ 
/*Pausenwert ist nur experimentell !*/ 

void waitms(uint16_t ms) 
{ 
   for(; ms>0; ms--) 
   { 
      uint16_t __c = 4000; 
      __asm__ volatile ( 
         "1: sbiw %0,1" "\n\t" 
         "brne 1b"      
         : "=w" (__c)   
         : "0" (__c)    
                       ); 
   } 
} 


// ------------------------------------------------------------------ 
//   Dieser Codeschnipsel ähnlich 2313-doc, S 121 
void USART_Init( unsigned int baud ) 
{ 
/* Set baud rate */ 
UBRRH = (unsigned char)(baud>>8); 
UBRRL = (unsigned char)baud; 
/* Enable receiver and transmitter */ 
UCSRB = (1<<RXEN)|(1<<TXEN); 
/* Set frame format: 8data, 2stop bit */ 
UCSRC = (3<<UCSZ0); 
} 

// ------------------------------------------------------------------ 
void sendchar(unsigned char c) 
{ 
   while(!(UCSRA & (1<<UDRE))) //Warten, bis Senden möglich ist 
   { 
   } 
   UDR = c; //schreibt das Zeichen aus 'c' auf die Schnittstelle 
} 

// ------------------------------------------------------------------ 
void sendUSART(char *s) //*s funktiniert wie eine Art Array - auch bei 
         // einem String werden die Zeichen (char) 
         // einzeln ausgelesen - und auf die 
         // Sendeschnittstelle übertragen 
{ 
   while(*s) 
   { 
   sendchar(*s); 
   s++; 
   } 
} 

// ------------------------------------------------------------------ 
/*### Hauptschleife ###*/ 
int main(void) 
{ 
  USART_Init(UBRR);      //USART initialisieren 
  DDRB=0xff; 
  PORTB=0;
//   for(uint8_t i=0; i<10; i++) 

for(;;){ 
        
   setportboff(2); 
   waitms(2000); 
   setportbon(2); 
          
   /*###Text senden###*/ 
   sendUSART("\r\n\n\n"); //Sendet Kennung und Text. 
            // "\r" setze Cursor auf Zeilenanfang, 
            // "\n" beginnt dann die nächste Zeile 
   sendUSART("**** ATtiny2313 *****\r\n"); 
   sendUSART(" \r\n"); 
   sendUSART("Hallo, Welt.\r\n"); 
   sendUSART(" \r\n"); 
          
   waitms(2000); 
          
       } 
}
Und ich komm wirklich nicht darauf, was daran falsch sein sollte. Vielleicht könnte mal jemand bitte drüber gucken?
Danke.