Hallo Florian!
Wie in der PM besprochen hab ich das ganze mal für den 4433 umgeschrieben.
Auf Richtigkeit kann ich leider keine Garantie geben, da ich schon lang nix mehr in Assembler programmiert habe und ich es auch nicht getestet habe. Ich werd aber gleich mal das Programm im AVR Studio ausprobieren und schauen, ob es funktioniert oder nicht ...![]()
So, der Code:
Viele GrüßeCode:.include "4433def.inc" .def temp = r16 .def ad_value = r17 .org 0x000 rjmp init ; Initialisierung / RESET reti ; IRQ0 reti ; IRQ1 reti ; Timer1 Capture reti ; Timer1 Compare reti ; Timer1 Overflow reti ; Timer0 Overflow reti ; SPI Complete reti ; UART Rx reti ; UART Data empty reti ; UART Tx rjmp adc_int ; ADC Conversion Complete reti ; EEPROM ready reti ; Analog Comparator ; ################################ ; Initialisierung ; ################################ init: ; ################################ ; Ports initialisieren (alle PINS INPUT - interne Pullups aktiviert) ; ################################ ldi temp, 0x00 out DDRB, temp ldi temp, 0xFF out PORTB, temp ldi temp, 0x00 out DDRC, temp ldi temp, 0xFF out PORTC, temp ldi temp, 0x00 out DDRD, temp ldi temp, 0xFF out PORTD, temp ; ################################ ; Stack initialisieren ; ################################ ldi temp, RAMEND out SP, temp ; ################################ ; ADC initialisieren ; ################################ ; Multiplexer setzen - PC0 ist analoger Eingang cbi ADMUX, MUX0 cbi ADMUX, MUX1 cbi ADMUX, MUX2 ; ADC Interrupt anschalten sbi ADCSR, ADIE ; Prescaler auf 16 setzen cbi ADCSR, ADPS0 cbi ADCSR, ADPS1 sbi ADCSR, ADPS2 ; AD Converter anschalten sbi ADCSR, ADEN ; Erste Wandlung auslösen sbi ADCSR, ADSC ; ################################ ; Hauptprogramm ; ################################ main: ; Hier könnte nun der ad_value umgerechnet werden und über ; UART oder LCD ausgegeben werden rjmp main ; ################################ ; ADC Interrupt ; ################################ adc_int: ; gewandelte Werte einlesen in ZL, ADCL in ZH, ADCH ; zweimal nach rechts rotieren (um die beiden LSB ; in das Low Register zu kriegen) -> 8 bit Wandlung ror Z ror Z ; 8 bit Wert in ad_value schreiben mov ad_value, ZL ; neue Wandlung starten sbi ADCSR, ADSC reti
Flite
EDIT: Ach ja, wenn du irgendwleche Fragen hast: nur zu !!







Zitieren

Lesezeichen