Hi ich habe hier ein Programm geschrieben für das RN Control 1.4.
Es soll ständig die Werte des Analogen Port a messen und auf die LED´s ausgeben.

Jetzt ist die Frage ob das so laufen wird.
Später soll dann an den Analog Port A ein Sharp GP2D12 dran .
mit der Vektoren tabelle bin ich mir nicht so sicher ob das passt.

Wäre sehr nett wenn ein Profi hier verbesserungen vornehmen würden ^^


NOLIST
.INCLUDE "m32def.inc"
.LIST


jmp RESET ; Reset Handler
;jmp EXT_INT0 ; IRQ0 Handler
;jmp EXT_INT1 ; IRQ1 Handler
;jmp EXT_INT2 ; IRQ2 Handler
;jmp TIM2_COMP ; Timer2 Compare Handler
;jmp TIM2_OVF ; Timer2 Overflow Handler
;jmp TIM1_CAPT ; Timer1 Capture Handler
;jmp TIM1_COMPA ; Timer1 CompareA Handler
;jmp TIM1_COMPB ; Timer1 CompareB Handler
;jmp TIM1_OVF ; Timer1 Overflow Handler
;jmp TIM0_COMP ; Timer0 Compare Handler
;jmp TIM0_OVF ; Timer0 Overflow Handler
;jmp SPI_STC ; SPI Transfer Complete Handler
;reti USART_RXC ; USART RX Complete Handler
;reti USART_UDRE ; UDR Empty Handler
;jmp USART_TXC ; USART TX Complete Handler
jmp OnADC ; ADC Conversion Complete Handler
;jmp EE_RDY ; EEPROM Ready Handler
;jmp ANA_COMP ; Analog Comparator Handler
;jmp TWI ; Two-wire Serial Interface Handler
;jmp SPM_RDY ; Store Program Memory Ready Handler


RESET:

;---------------------------------------------------------
ldi r16,high(RAMEND)
out SPH,r16 ;init Stackpointer low
ldi r16,low(RAMEND)
out SPL,r16 ;init Stackpointer high
;---------------------------------------------------------

;Kanlauswahl wo gemessen wird

ldi r16,0x00 ;ADC Channel 0
out ADMUX, r16 ;ADC Channel 0
;-----------------------------------------------------------

;Einstellung ADC und Messung

ldi r16, 0b11010111 ; hier werden die obigen informationen übergeben vorteil 32
out ADCSRA , r16

;ADEN|ADSC|ADFR|ADIF|ADIE|ADSP2|ADSP1|ADSP0

;ADEN ADC Enable
;ADSC Start conversion
;ADFR Free Run
;ADIF Interupt Flag
;Interupt Enable
;ADSP 0..2 Vorteiler bei mir = 128 alle drei auf 111

mainloop: WDR

rjmp mainloop

OnADC:
cli ;interrupts sperren
in r26,ADCL ;Low Teil auslesen
in r27,ADCH ;High Teil auslesen
reti
;-------------------------------------
;Von 10Bit auflösung nach 8 Bit auflösung Konvertieren
asr r27 ;schiebe BIT 0 des "High TEILs" ins c FLAG
ror r26 ;schiebe alle bits nach rechts C-Flag in Bit 7
asr r27 ;schiebe BIT 0 des "High TEILs" ins c FLAG
ror r26 ;schiebe alle bits nach rechts C-Flag in Bit 7

ldi r16, 0xFF ;0xFF ins Arbeitsregister r16 laden
out DDRC, r16 ;Inhalt von r16 ins IO-Register DDRC ausgeben

mov r25, r26


out PORTC, r25 ; hier sind acht LED´s dran


sbi ADCSRA,6
sei
reti