;*******************************************************************************
;*
;*	Titel:	USART-Empfaenger (C209_EIA232_receiver_char_2.asm)
;*	Datum:	01/10/07	Version:	0.1	
;*	Autor:	WEIGU
;*
;*	Informationen zur Beschaltung:
;*      
;*	Prozessor:	ATmega32		Quarzfrequenz: 16MHz	 
;*	Eingaenge:      Port D Pin O (RxD) an Pegelwandler anschliessen
;*	Ausgaenge:      PORTC 4 LEDs 
;*                            
;*******************************************************************************

;-------------------------------------------------------------------------------
;	Assembler Direktiven (u.a. Definitionsdatei einbinden)
;-------------------------------------------------------------------------------
.NOLIST				;List-Output ausschalten
.INCLUDE "m32def.inc"		;AVR-Definitionsdatei einbinden
.LIST				;List-Output wieder einschalten
.CSEG				;was ab hier folgt kommt in den Flash-Speicher

;-------------------------------------------------------------------------------
;	Startadresse 0x0000 und ueberspringe ISR Vektoren
;-------------------------------------------------------------------------------
.ORG	0x0000			;Programm beginnt an der SRAM-Adresse 0h
RESET:	rjmp	INIT		;springe nach INIT

;-------------------------------------------------------------------------------
;	Initialisierungen und eigene Definitionen
;-------------------------------------------------------------------------------
.ORG    INT_VECTORS_SIZE        ;Platz fuer ISR Vektoren lassen
INIT:
.DEF	Tmp1 = r16      ;Register 16 dient als erster Zwischenspeicher
.EQU    LEDPort = PORTC

	ldi     Tmp1,HIGH(RAMEND)	
	out	SPH,Tmp1		
	ldi	Tmp1,LOW(RAMEND)
	out	SPL,Tmp1

        sbi     UCSRB,RXEN      
        
        ldi     Tmp1,0x00
        out     UBRRH,Tmp1
        ldi     Tmp1,0x33 
        out     UBRRL,Tmp1
        
        ldi     Tmp1,0x87  
        out     DDRC,Tmp1  

;-------------------------------------------------------------------------------
;	Hauptprogramm
;-------------------------------------------------------------------------------
MAIN:   sbis    UCSRA,RXC  
        rjmp    MAIN       
        in      Tmp1,UCSRA 
        andi    Tmp1,0b00011100 
        brne    ERROR
        in      Tmp1,UDR        
        cpi     Tmp1,'L'        
        breq    CHRL            
        cpi     Tmp1,'E'        
        breq    CHRE            
        cpi     Tmp1,'D'        
        breq    CHRD            
        rjmp    MAIN            
CHRL:   sbi     LEDPort,0
        rjmp    MAIN
CHRE:   sbic    LEDPort,0       
        sbi     LEDPort,1
        rjmp    MAIN
CHRD:   sbis    LEDPort,0       
        rjmp    MAIN
        sbic    LEDPort,1       
        sbi     LEDPort,2
        rjmp    MAIN           
ERROR:  sbi     LEDPort,7
        in      Tmp1,UDR       
        rjmp    MAIN           

;-------------------------------------------------------------------------------
.EXIT				;Ende des Quelltextes
