Аналогичная ситуация и у меня: при изменении одного регистра, AVR Studio показывает изменение другого, и наоборот. НО только лишь ПОКАЗЫВАЕТ, реального изменения состояния нет. Просто глюк такой и надо с ним смириться)
Кину пример небольшой программки. Она производит АЦП и пересылает байт результата оцифровки по UART. Прога отлажена на реальном стенде, так что всё работает.
CODE
.include "m16def.inc"
.org $000 rjmp start
.org $018 rjmp trans
.org $01c rjmp adccomp
.org $030
trans:
out UDR,r28
reti
adccomp:
in r27,ADCL
out portb,r27
in r28,ADCH
out portc,r28
reti
start:
ldi r31,LOW(RAMEND)
out spl,r31
ldi r31,HIGH(RAMEND)
out sph,r31
sei
ldi r27,0b11111111
out ddrb, r27
ldi r27,0b11111111
out ddrc, r27
ldi r28,0b11101111
out ADCSRA,r28
ldi r28,0b00100000
out ADMUX,r28
ldi r28,95
out UBRRL,r28
ldi r28,0b00101000
out UCSRB,r28
ldi r28,0b10000110
out UCSRC,r28
Loop:
rjmp Loop
На порты В и С выводится результат АЦП для наглядности при симуляции в AVR Studio или Протеусе.
Сообщение отредактировал rezident - Dec 27 2008, 22:19