.INCLUDE "m88padef.inc" ;AVR-Definitionsdatei einbinden ; ;Die Arbeitsregister umbenennen bzw. sinnvollere Namen vergeben ; .DEF a = r16 ;Allgemeines Arbeitsregister .DEF led = r18 ;LED schalten .DEF wh = r25 ;Als Doppelregister... .DEF wl = r24 ;... W verwenden .DEF sh = r29 ;Als Doppelregister... .DEF sl = r28 ;..Y verwenden ; ; ; .EQU XTAL = 160000000 ;Quarzfrequenz in Hertz -> 1Takt = 62,5ns .EQU LED_PIN = PIND ;Eingangspin-Zustand .EQU LED_DDR = DDRD ;Datenrichtungsregister der LED vorgeben .EQU LED_PORT = PORTD ;Ausgabeport der LED bestimmen .EQU led_6 = 6 ;LED bestimmen .EQU IN_PIN = PINC ;Eingangspin-Zustand .EQU IN_DDR = DDRC ;Datenrichtungsregister .EQU IN_PORT = PORTC ;Ausgabeport .EQU in.s0 = PC0 ;Schalter S0 bestimmen .EQU in.s1 = PC1 ;Schalter S1 bestimmen ; ;Die LED soll bei 16MHz mit ; .EQU Gt = 3200 / 4 -1 ;Grundzeit = 0,2ms .EQU G2_1 = 2500 ;Faktor = 0,2ms * 2500 = 500ms .EQU G2_10 = 250 ;Faktor = 0,2ms * 250 = 50ms .EQU G2_100 = 25 ;Faktor = 0,2ms * 25 = 5ms .EQU G2_500 = 5 ;Faktor = 0,2ms * 5 = 1ms .EQU sek = 5000 ;Faktor = 0,2ms * 5000 = 1 Sekunde .EQU s_msk = 0b00000011 ;Schaltermaske ; ;PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP ;P Programmbereich ;PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP ; .CSEG .org $0000 ;Programmstartadresse(Anfang d. Interrupt-Vektortabelle) rjmp _start .ORG INT_VECTORS_SIZE ;Restliche Interrupt-Vektortabelle ueberspringen _start: ser led ;Erstmal von Hochohmig.. out LED_PORT,led ;..auf Pullup umschalten ldi led,1<