.include "M88def.inc" .equ fq = 8000000/32 ; Quarzfrequenz: 250kHz .equ baud = 1200 ; Baudrate RS-232 Schnittstelle .equ bddivH = 0x00 ; Teilfaktor für Baudrate ; Highbyte .equ bddivL = (fq/(16*baud))-1; Teilfaktor für Baudrate ; Lowbyte .equ rsformat = $3E ; RS232 Format: 8 databit, odd ; parity .def w = r4 ; Variable .def temp = r16 ; Variable .def temp1 = r18 ; Variable .def temp2 = r19 ; Variable .def temp3 = r20 ; Variable .def count1 = r17 ; Variable .def count2 = r21 ; Variable .def flagT2 = r25 ; Variable .def SRegSave = r22 .ORG $0000 rjmp main ; Reset Handler reti ; IRQ0 Handler reti ; IRQ1 Handler reti ; PCINT0 Handler reti ; PCINT1 Handler reti ; PCINT2 Handler reti ; Watchdog Timer Handler reti ; Timer2 Compare A Handler reti ; Timer2 Compare B Handler rjmp T2_OV ; Timer2 Overflow Handler reti ; Timer1 Capture Handler reti ; Timer1 Compare A Handler reti ; Timer1 Compare B Handler reti ; Timer1 Overflow Handler reti ; Timer0 Compare A Handler reti ; Timer0 Compare B Handler reti ; Timer0 Overflow Handler reti ; SPI Transfer Complete Handler reti ; USART, RX Complete Handler reti ; USART, UDR Empty Handler reti ; USART, TX Complete Handler reti ; ADC Conversion Complete Handler reti ; EEPROM Ready Handler reti ; Analog Comparator Handler reti ; 2-wire Serial Interface Handler reti ; Store Programm Memory Ready ; Handler main: ; Initialisieren ldi temp, high(RAMEND) ; Stackpointer H initialisieren out SPH, temp ; in Register schreiben ldi temp, low(RAMEND) ; Stackpointer L initialisieren out SPL, temp ; in Register schreiben ; Clock Devider setzen /32 ldi temp, 0b10000000 ; Clock-Teiler vorbereiten sts CLKPR, temp ; in Register schreiben ldi temp, 0b00000101 ; Clock-Teiler 32 laden sts CLKPR, temp ; in Register schreiben nop ; Delay, damit Clock stabil nop ; Delay, damit Clock stabil nop ; Delay, damit Clock stabil nop ; Delay, damit Clock stabil nop ; Delay, damit Clock stabil ; I/O initialisieren ldi temp, 0x00 ; Port B als Eingang out DDRB, temp ; in Register schreiben ldi temp, 0x00 ; Port C als Eingang out DDRC, temp ; in Register schreiben ldi temp, 0x80 ; Port D7 als Ausgang, Rest ; Eingang out DDRD, temp ; in Register schreiben ldi temp, 0xff ; Ports high out PORTB, temp ; in Register schreiben out PORTC, temp ; in Register schreiben out PORTD, temp ; in Register schreiben ; Serielle Schnittstelle initialisieren ldi temp, bddivH ; 0x00, Baudrate DividerH sts UBRR0H, temp ; in Register ablegen ldi temp, bddivL ; Baudrate DividerL sts UBRR0L, temp ; in Register ablegen ; Set frame format ldi temp, rsformat ;(1<