Написал текст под atmega16. Должен получиться перебор на порту А. Перебором управлют кнопки на порту С pin 0 и 1. В теории должно все работать, а по факту перебор работает только на краях тоесть вывод 0 и 5 (первый и последний) вариант. Промежуточного перебора нет. Проверяю, вроде све должно работать. Но не идет.
Текст программы ниже:
.include "m16def.inc"
.def temp1=r16
.def temp2=r17
.def porttest=r18
.def temp3=r19
.cseg
.org 0
//Настраиваем порт А на вывод и зажигаем табло
ldi temp1,0b11111111
out ddra,temp1
out porta,temp1
ldi temp1,0b00000000
out ddrc,temp1
ldi temp1,0b00000000
out porta,temp1
// зажигаем 0
ldi temp1,0b01001000// 0
out porta,temp1
ldi temp2,3
//ставим цикл с опросом на кнопки
loop: in porttest,pinc
cpi porttest,1
breq step1
cpi porttest,2
breq step2
cpi porttest,3
breq step2_1
rjmp loop
step1: cpi temp2,5
breq loop
inc temp2
rjmp step1_1
step2: cpi temp2,0
breq loop
dec temp2
rjmp step1_1
step1_1:cpi temp2,0
ldi temp1,0b01001000
breq step2_1
cpi temp2,1
ldi temp1,0b11001011
breq step2_1
cpi temp2,2
ldi temp1,0b10001100
breq step2_1
cpi temp2,3
ldi temp1,0b10001001
breq step2_1
cpi temp2,4
ldi temp1,0b00101011
breq step2_1
cpi temp2,5
ldi temp1,0b00011001
breq step2_1
step2_1:out porta,temp1
ldi temp3,0b00000000
out pinc,temp3
rjmp loop
прогонял текст в AVR Studio 4.17 пошагово все нормально идет. А в Proteuse ISIS только края.


