;+---------------------------------------------------------------------- ;| Title : myAVR Grundgerüst für ATmega8 ;+---------------------------------------------------------------------- ;| Funktion : ... ;| Schaltung : ... ;+---------------------------------------------------------------------- ;| Prozessor : ATmega8 ;| Takt : 3,6864 MHz ;| Sprache : Assembler ;| Datum : ... ;| Version : ... ;| Autor : ... ;+---------------------------------------------------------------------- .include "AVR.H" ;.include "m8def.inc" ; ###################### NEU ;------------------------------------------------------------------------ ;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 reti ;8 TC1 Compare Match B reti ;9 TC1 Overflow reti ;10 TC0 Overflow 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 ;------------------------------------------------------------------------ ;Start, Power ON, Reset main: ldi r16,lo8(RAMEND) out ioSPL,r16 ldi r16,hi8(RAMEND) out ioSPH,r16 ;Hier Init-Code eintragen. ;Konfiguration PORT = OUT ldi r16,0b11111111 out DDRD,r16 ldi r16,0b00000000 out DDRC,r16 ;adc initi. ldi r16,0b01100000 ;int. Ref / 8-Bit only / Kanal C0 out ADMUX,r16 ;Festlegen ldi r16,0b10000111 ;int. Ref / 8-Bit only / Kanal C0 out ADCSRA,r16 ;Festlegen sbi ADCSRA,ADEN ;AD generell einschalten ldi r16,0b00000000 out PORTD,r16 ;LEDs aus ;------------------------------------------------------------------------ mainloop: wdr ;Hier den Quellcode eintragen. ;ADC Teil sbi ADCSRA,ADSC ;AD Wandlung starten nop nop in r17,ADCL ;Low-Byte unbedingt zuerst in r16,ADCH ;High-Byte mit Daten in r16 ;Vergleich anstellen cpi r16,40 brlo gn ;r16 < 40 cpi r16,80 brlo ge ;r16 < 80 cpi r16,120 brlo gnge ;r16 < 120 cpi r16,160 brlo gr ;r16 < 160 cpi r16,200 brlo grgn ;r16 < 200 cpi r16,240 brlo grge ;r16 < 240 cpi r16,240 brsh all ;r16 >= 240 gr: ldi r16,0b00100000 out PORTD,r16 ;rote Led rjmp mainloop grgn: ldi r16,0b10100000 out PORTD,r16 ;rote Led rjmp mainloop grge: ldi r16,0b01100000 out PORTD,r16 ;rote Led rjmp mainloop all: ldi r16,0b11100000 out PORTD,r16 ;rote Led rjmp mainloop ge: ldi r16,0b01000000 out PORTD,r16 ;gelbe Led rjmp mainloop gn: ldi r16,0b10000000 out PORTD,r16 ;grüne LED rjmp mainloop gnge: ldi r16,0b11000000 out PORTD,r16 ;grüne LED rjmp mainloop ; LED-Lauf Teil ;myLEDrun ;------------------------------------------------------------------------ ;-------------------------------------------------------------------- ; LED Lauf-Routine ; ;-------------------------------------------------------------------- myLEDrun: ldi r16,0b00000000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b10000000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b01000000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b00100000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b01000000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b10000000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b11000000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b11100000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b01100000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b00100000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b10000000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b01000000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b00100000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b01100000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b11100000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b11000000 out PORTD,r16 ;Konfiguration PORTBit = OUT rcall myWait_500ms ldi r16,0b10000000 out PORTD,r16 ;Konfiguration PORTBit = OUT ret ;---------------------------------------------------------------------- ;-------------------------------------------------------------------- ; Warte-Routine für 500 ms ; die Routine wartet 500ms ;-------------------------------------------------------------------- myWait_500ms: rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms nop rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms nop rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms nop rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms nop rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms rcall myWait_20ms ret ;---------------------------------------------------------------------- ;-------------------------------------------------------------------- ; Warte-Routine für 20 ms ; die Routine wartet inclusive Aufruf 19,9 ms ;-------------------------------------------------------------------- myWait_20ms: push r16 ldi r16,1 myWait_20ms_3: push r16 ldi r16,95 myWait_20ms_2: push r16 ldi r16,255 myWait_20ms_1: dec r16 brne myWait_20ms_1 pop r16 dec r16 brne myWait_20ms_2 pop r16 dec r16 brne myWait_20ms_3 pop r16 ret ;----------------------------------------------------------------------