;+---------------------------------------------------------------------- ;| Title : Ganganzeige highend fließend V1 (YZF1000R) ;+---------------------------------------------------------------------- ;| Funktion : Ganganzeige f. Yamaha YZF1000 Thunderace (simple) ;| Schaltung : Ganzanzeige_SIMPEL ;+---------------------------------------------------------------------- ;| Prozessor : ATmega8 ;| Takt : Int. RC Osc. 8 MHz; Start-up time: 6 CK + 64 ms ;| Sprache : Assembler ;| Datum : 13.07.2023 ;| Version : 1.0 ;| Autor : M. Kossyk ;|+--------------------------------------------------------------------- ;| Beschreibung: ;| Ganganzeige über 7-Segment-LED mit gemeinsamer Kathode(-). ;| Die Schaltzustände des Neutralschalters werden direkt eingelesen und als High an die jeseiligen Segmente ;| der Anzeige ausgegeben. Segmente werden direkt über eine eigene 20mA KSQ angesteuert. Jedoch in der ;| Helligkeit über gemeinsae Kathode via PWM gedimmt wenn Umgebungshelligkeit abnimmt. ;| Ermittlung der Umgebungshelligkeit durch ADC und Fototransistor. Spannungswert des ADC wird direkt ;| an OCR2 als Taktrate für die PWM gegeben. ;| Inkl. Fehlererkennung; Wurde ca. 2,5 Sekunden lang kein eingelegter Gang erkannt, wechselt die Anzeige auf "F" ;| und bleibt dort bis zum nächsten Restet (Zdg aus/ein) ;+---------------------------------------------------------------------- .include "m8def.inc" ;------------------------------------------------------------------------ ;Reset and Interrupt vector ;VNr. Beschreibung rjmp main ;1 POWER ON RESET reti ;2 Int0-Interrupt reti ;3 Int1-Interrupt reti ;4 TC2 Compare Match reti ;5 TC2 Overflow reti ;6 TC1 Capture reti ;7 TC1 Compare Match A ( rjmp LED ;8 TC1 Compare Match B reti ;9 TC1 Overflow reti ;10 TC0 Overflow (Teiler 1 = 0.000256s / Teiler 8 = 0.002048s / Teiler 64 = 0.016384s / Teiler 256 = 0.065536s / Teiler 1024 = 0.262144s reti ;11 SPI, STC Serial Transfer Complete reti ;12 UART Rx Complete reti ;13 UART Data Register Empty reti ;14 UART Tx Complete reti ;15 ADC Conversion Complete reti ;16 EEPROM Ready reti ;17 Analog Comparator reti ;18 TWI (I²C) Serial Interface reti ;19 Store Program Memory Ready ;------------------------------------------------------------------------ main: ;Start, Power ON, Reset init: ldi temp,HIGH(RAMEND) ; HIGH-Byte der obersten RAM-Adresse out SPH,temp ldi temp,LOW(RAMEND) ; LOW-Byte der obersten RAM-Adresse out SPL,temp ;================================================================ ; Ports initialisieren ;---------------------------------------------------------------- sbi DDRD,7 ; Port auf Ausgang (kein Segment Pin ist N.C. ) cbi PORTD,7 ; Port auf H über Pullup (Segement bleibt dunkel) ;-------------------------------------------------------------------------------------- ; Zuordnung der Register u. Laden von Vorgaben ;-------------------------------------------------------------------------------------- .def temp = r16 ;------------------------------------------------------------------------ ; TC1 - Timer Compare Match Interrupt setzen ;------------------------------------------------------------------------ cli ldi temp,0b00000000 out TCCR1A,temp ; setze Compare Output Mode for channel A ldi temp,0b00001101 out TCCR1B,temp ; CTC und Prescaler auf 1024 ldi r16,0b00000011 ldi r17,0b11101000 out OCR1BH,r16 ;lade Comparewert 0 ins H-Byte (Helligkeit) out OCR1BL,r17 ;lade Comparewert 49 ins L-Byte (Helligkeit) = 0.050176s ldi temp,0b0001000 out TIMSK,temp ; aktiviere Output Compare A Match Interrupt(Helligkeit) und Timer/Counter0 Overflow(ADC-Refresh) sei mainloop: wdr rjmp mainloop ;----------LED-Interruptroutine ----------------------------------------------- LED: sbic PORTD,7 rjmp AUS rjmp EIN AUS: cbi PORTD,7 reti EIN: sbi PORTD,7 reti