;25 mal pro Sekunde den Zählerstand messen und über den UART ausgeben und den Zähler wieder auf Null setzten. .include "m8515def.inc" .equ CountValue = 22 ;Startwert für Timer0 .equ Teiler = 0b00000101 ;Teiler= 1024 von Timer0 .equ CLOCK = 6000000 ;Quartzfrequenz .equ BAUD = 19200 ;Baudrate .equ UBRRVAL = CLOCK/(BAUD*16)-1 ;Berechnung .def temp = r16 .def ZA = r17 ;Zähler .def Val1L = r18 ;16Bit Zähler Low .def Val1H = r19 ;16Bit Zähler High .def Val2L = r20 ;16Bit Wert Low für Drehmoment .def Val2H = r21 ;16Bit Wert High für Drehmoment .def Sende = r22 ;Der Wert der gesendet wird rjmp Reset ;Reset vector reti ;Ext Int 0 reti ;Ext Int 1 reti ;Timer 1 Capture Event reti ;Timer 1 Compare Match A reti ;Timer 1 Compare Match B reti ;Timer 1 Overflow rjmp Timer0 ;Timer 0 Overflow reti ;Serial Transfer complet rjmp int_rxc ;UART Rx Complete reti ;USART, Dataregister Empty reti ;USART, Tx Complete reti ;Analog Compare reti ;External Interrupt Request 2 reti ;Timer0 Compare Match reti ;EEPROM ready reti ;Store Programm Memory ready Reset: ;Stack initialisieren ldi temp,LOW(RAMEND) ;LOW-Byte der obersten RAM-Adresse out SPL, temp ldi temp,HIGH(RAMEND) ;HIGH-Byte der obersten RAM-Adresse out SPH, temp ldi temp,0x00 out DDRB, temp ;Datenrichtung von PortB Eingang ldi temp,0xFF out DDRC, temp ;Datenrichtung von PortC Ausgang ldi temp,CountValue ;Startwert des Timer 0 einstellen: out TCNT0, temp ldi temp, LOW(UBRRVAL) ;Baudrate einstellen out UBRRL, temp ldi temp, HIGH(UBRRVAL) ;Baudrate einstellen out UBRRH, temp ldi temp, (1<