Пример 1.2. Инициализация АЦП АВР (AVRSimulatorIDE): DDRB = %11111111
l0001:
ADMUX = %01000000
ADCSRA = %10000110
ADCSRA.6 = 1 'старт АЦП
l0002:
If ADCSRA.4 = 0 Then
Goto l0002
Endif
ASM: in R16,ADCL
ASM: in R17,ADCH
PORTB = R16 ' младшие 8 бит результата вывести в portb
Goto l0001
Пример работает для atmega8,16,32,64, для atmega48,88 не работает, там нужен другой код ;-)))
Добавлено (16.10.2010, 11.28.30)
---------------------------------------------
Пример 2.1. Инициализация АЦП atmega48 (AVRSimulatorIDE)
Code
DDRB = %11111111
l0001:
ADMUX = %01000000
ADCSRA = %10000110
ADCSRA.6 = 1 'старт АЦП
l0002:
If ADCSRA.4 = 0 Then
Goto l0002
Endif
'ASM: in R17,ADCL
'ASM: in R18,ADCH
R17 = ADCL
R18 = ADCH
PORTB = R17 'младшие 8 бит результата вывести в portb
Goto l0001
Как видно из примера изменение заключается в использовании пары рабочих регистров R17,R18 вместо R16,R17 так как в связи
с переделками Atmel решила переработать адресацию регистров