Hallo, Leute
hier mal ein Auszug aus dem Kompilat - Compiler 3.98 und 5.05 liefern dasselbe.
SYSTEM.SETADCFIXED:
LDS _ACCB, _ADCBUFF +006h
LDD _ACCA, Y+001h
TST _ACCA
BRNE SYSTEM._L0088
ANDI _ACCB, 0FEh
RJMP SYSTEM._L0089
SYSTEM._L0088:
ORI _ACCB, 01h
LDD _ACCA, Y+000h
CPI _ACCA, 004h
BRCS SYSTEM._L0090
CPI _ACCA, 007h
BRCC SYSTEM._L0090
DEC _ACCA
CLI
MOV _ACCCLO, _ACCA
ANDI _ACCA, 15
ANDI _ACCCLO, 8
IN _ACCCHI, admux
CBR _ACCCHI, 15
OR _ACCA, _ACCCHI
OUT admux, _ACCA
IN _ACCCHI, adcsrb
CBR _ACCCHI, 8
OR _ACCCHI, _ACCCLO
OUT adcsrb, _ACCCHI
SBRC Flags, IntFlag
SEI
SYSTEM._L0089:
STS _ADCBUFF +007h, _ACCB
SYSTEM._L0090:
RET
was mich wundert: -
es wird ein Flag von _ADCBUFF+06h gelesen, das auch in der Inerruptroutine ausgewertet wird um ggf. das MUXer-Umschalten zu umgehen.
Diese Flag wird aber beim Verlassen der Routine nach _ADCBUFF+07h zurückgeschrieben.
keine Ahnung ob diese Speicherstelle vom System reserviert ist.
hier mal ein Auszug aus dem Kompilat - Compiler 3.98 und 5.05 liefern dasselbe.
SYSTEM.SETADCFIXED:
LDS _ACCB, _ADCBUFF +006h
LDD _ACCA, Y+001h
TST _ACCA
BRNE SYSTEM._L0088
ANDI _ACCB, 0FEh
RJMP SYSTEM._L0089
SYSTEM._L0088:
ORI _ACCB, 01h
LDD _ACCA, Y+000h
CPI _ACCA, 004h
BRCS SYSTEM._L0090
CPI _ACCA, 007h
BRCC SYSTEM._L0090
DEC _ACCA
CLI
MOV _ACCCLO, _ACCA
ANDI _ACCA, 15
ANDI _ACCCLO, 8
IN _ACCCHI, admux
CBR _ACCCHI, 15
OR _ACCA, _ACCCHI
OUT admux, _ACCA
IN _ACCCHI, adcsrb
CBR _ACCCHI, 8
OR _ACCCHI, _ACCCLO
OUT adcsrb, _ACCCHI
SBRC Flags, IntFlag
SEI
SYSTEM._L0089:
STS _ADCBUFF +007h, _ACCB
SYSTEM._L0090:
RET
was mich wundert: -
es wird ein Flag von _ADCBUFF+06h gelesen, das auch in der Inerruptroutine ausgewertet wird um ggf. das MUXer-Umschalten zu umgehen.
Diese Flag wird aber beim Verlassen der Routine nach _ADCBUFF+07h zurückgeschrieben.
keine Ahnung ob diese Speicherstelle vom System reserviert ist.