Vad __ADDWRR gör?
Vart HIGH(1)/LOW(1) ligger?
Här är min tolkning hittils:
Kod: Markera allt
ASM format: Förklaring: Klockcykler:
_adc_isr:Kommentar.
CALL SUBOPT_0x0 Anropar nån funktion i plats 0x0? 4+?
som antagligen ställer in
LOW/HIGH till 0x0001
LDI R30,LOW(1) Ladda in värdet i LOW till Registret plats 30, 1
LDI R31,HIGH(1) Ladda in värdet i HIGH till Registret plats 31, 1
__ADDWRR 5,6,30,31 Adderar registrets ord med ord i minnet(ADCIntCount) 2+?
__ADDWRR 8,9,30,31 Adderar registrets ord med ord i minnet(ADCIntCount2) 2+?
IN R7,5 Värdet i port 5 (adc buffert) hamnar i R7 1
CALL SUBOPT_0x1
RETI Återgår från interrupt: laddar in programadressen i pekaren 4
och enablar interrupt.
Kod: Markera allt
;### 126 //**************************************************
;### 127 // ADC interrupt service routine
;### 128 interrupt [ADC_INT] void adc_isr(void)
;### 129 {
_adc_isr:
CALL SUBOPT_0x0
;### 130
;### 131 ADCIntCount++;
LDI R30,LOW(1)
LDI R31,HIGH(1)
__ADDWRR 5,6,30,31
;### 132 ADCIntCount2++;
__ADDWRR 8,9,30,31
;### 133 adc_data=ADCH; // Sparar dom 8MSB.
IN R7,5
;### 134
;### 135 }//END ADC interrupt
CALL SUBOPT_0x1
RETI
;### 136