.include "m8def.inc" ;Hardwareeinstellungen .def null = r2 .def temp = r16 .def switch=r17 .def highByte = r18 .def stopper=r19 .def Einer =r20 .def Zehner =r21 .def ergebnislow=r22 .def tempi=r27 .def ergebnishigh=r24 .def vergleich=r25 .def law=r26 .def hunderter=r23 .equ start1=225 ;.equ start10=225 ;208 ;.equ start100=225 ;223 .org 0x000 rjmp RESET ; Reset Handler reti ;EXT_INT0 ; IRQ0 Handler reti ;EXT_INT1 ; IRQ1 Handler reti ;TIM2_COMP ; Timer 2 Compare Handler reti ;TIM2_OVF ; Timer 2 Overflow Handler reti ;TIM1_CAPT ; Timer 1 Capture Handler reti ;TIM1_COMPA ; Timer 1 CompareA Handler reti ;TIM1_COMPB ; Timer 1 CompareB Handler reti ;TIM1_OVF ; Timer 1 Overflow Handler rjmp TIM0_OVF ; Timer 0 Overflow Handler reti ;SPI_STC ; SPI Transfer Complete Handler reti ;USART_RXC ; USART TX Complete Handler reti ;USART_UDRE ; UDR Empty Handler reti ;USART_TXC ; Usart TX Complete Handler reti ;ADC_COMPLETE ; ADC Conversion Complete Handler reti ;EE_RDY ; EEprom Ready Handler reti ;ANA_COMP ; Analog Comparator Handler reti ;TWSI ; Two-Wire Serial Interface Handler reti ;SPM_RDY ; Store Programm Memory Ready Handler TIM0_OVF: ; Timer 1 Overflow Handler inc r28 ; überprüfen in welchen Mode er gehen soll ldi temp,1 cp r28,temp breq mode1 ldi temp,2 cp r28,temp breq mode2 ldi temp,3 cp r28,temp breq mode3 mode1: ldi temp, start1 ;ldi temp, start100 ; Startwert des Timers einstellen: out TCNT0, temp ldi zl,low(segment*2) ldi zh,high(segment*2) add zl,hunderter adc zh,null ldi temp,0x08 out portb,temp lpm temp,z out portd,temp rcall adwandlung reti mode2: ldi temp,start1 ;ldi temp, start10 ; Startwert des Timers einstellen: out TCNT0, temp ldi zl,low(segment*2) ldi zh,high(segment*2) add zl,zehner adc zh,null ldi temp,0x10 out portb,temp lpm temp,z out portd,temp rcall runden reti mode3: ldi temp, start1 ; Startwert des Timers einstellen: out TCNT0, temp ldi zl,low(segment*2) ldi zh,high(segment*2) add zl,einer adc zh,null ldi temp,0x20 out portb,temp lpm temp,z out portd,temp in switch,pinb ldi r28,0 rcall verarbeitung reti reti ;Programmstart ;Initialisierung RESET: ;Stack initialisieren ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ;Watchdog initialisieren ; ldi r16,0x08 ; out WDTCR,r16 ;Ports initialisieren ldi temp, 0xFF ; Port D as output for the 7-segment out DDRD, temp ldi temp, 0x38 ; Port B pin (0,1,2 input),(3,4,5 output multiplex) out ddrb, temp ldi r28,0 ;AD-Wandler initialisieren ldi temp, ((1<