Приветствую!
Уважаемые знатоки, подскажите пожалуйста, где ошибка?
По задумке, программа выдает лог. 1 на PB2 мк, если на PB0 и PB1 присутствует лог. 1.
Микроконтроллер ATTINY 85.
Насколько я разобрался, в симуляторе AVR Studio, по шагам, программа работоспособна.
Однако в Proteus, а также на плате мк не работает.
.def temp=r20; директива .def назначает регистру r20 имя temp
.def temp2=r21; директива .def назначает регистру r21 имя temp2
.def sample=r22; директива .def назначает регистру r22 имя sample
.def ok=r23; директива .def назначает регистру r23 имя ok
;====================================================
; Начало программы
.org 0; начало первой строки программы
rjmp Start; относительный переход к метке Start
; ====================================================
Start:
ldi ok,0b00000000; LowLevel PB2 __ Led OFF
out PORTB, ok;
ldi sample,0b00000011; записать в регистр sample 00000011 PB0=1 PB0=0
ldi temp2,0b00000100;
out DDRB,temp2; переводит все биты порта B на вывод
Cycle:
clr temp; обнуляет регистр temp
in temp,PINB; считываем порт B в переменную temp
cp temp, sample; Сравнить регистры temp и sample
breq equal; Перейти если содержимое регистров совпадает
rjmp Cycle; Возвращаемся к метке Cycle, зацикливаемся
; Подпрограмма
equal:
ldi ok,0b00000100; HighLevel PB2 __ Led ON
out PORTB, ok;
ret; выйти из подпрограммы
Раздел: AVR
Уважаемые знатоки, подскажите пожалуйста, где ошибка?
По задумке, программа выдает лог. 1 на PB2 мк, если на PB0 и PB1 присутствует лог. 1.
Микроконтроллер ATTINY 85.
Насколько я разобрался, в симуляторе AVR Studio, по шагам, программа работоспособна.
Однако в Proteus, а также на плате мк не работает.
.def temp=r20; директива .def назначает регистру r20 имя temp
.def temp2=r21; директива .def назначает регистру r21 имя temp2
.def sample=r22; директива .def назначает регистру r22 имя sample
.def ok=r23; директива .def назначает регистру r23 имя ok
;====================================================
; Начало программы
.org 0; начало первой строки программы
rjmp Start; относительный переход к метке Start
; ====================================================
Start:
ldi ok,0b00000000; LowLevel PB2 __ Led OFF
out PORTB, ok;
ldi sample,0b00000011; записать в регистр sample 00000011 PB0=1 PB0=0
ldi temp2,0b00000100;
out DDRB,temp2; переводит все биты порта B на вывод
Cycle:
clr temp; обнуляет регистр temp
in temp,PINB; считываем порт B в переменную temp
cp temp, sample; Сравнить регистры temp и sample
breq equal; Перейти если содержимое регистров совпадает
rjmp Cycle; Возвращаемся к метке Cycle, зацикливаемся
; Подпрограмма
equal:
ldi ok,0b00000100; HighLevel PB2 __ Led ON
out PORTB, ok;
ret; выйти из подпрограммы
Раздел: AVR