.include "m328Pdef.inc" .def temp = R16 .def temp1 = R17 .def temp2 = R18 .equ F_CPU = 16000000 ; Systemtakt in Hz .equ BAUD = 2400 ; Baudrate ; Berechnungen .equ UBRR_VAL = ((F_CPU+BAUD*8)/(BAUD*16)-1) ; clever runden .equ BAUD_REAL = (F_CPU/(16*(UBRR_VAL+1))) ; Reale Baudrate .equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000) ; Fehler in Promille .if ((BAUD_ERROR>10) || (BAUD_ERROR<-10)) ; max. +/-10 Promille Fehler .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!" .endif ;IRQ-Sprungtabelle .org 0x00 rjmp reset ; Reset Handler .org OC1Aaddr rjmp TIM1_COMPA ; Timer1 CompareA Handler reset: ; Stackpointer initialisieren ldi temp, LOW(RAMEND) out SPL, temp ldi temp, HIGH(RAMEND) out SPH, temp ; Frame-Format: 8N1 ldi temp, 1<