Программа в на микроконтроллере ATmega16
- Войдите на сайт для отправки комментариев
Подскажите, что не так с последними 3 строчками программы. Не совсем понимаю как поместить результат выражения в регистровую пару при помощи команды MUL.
Выражение
Константа a |
Константа b |
Константа с |
Операция |
Тактовая частота МК (МГц) |
Порт вывода X |
Порт ввода Y |
85 |
36 |
7 |
a*(b/4-c) (арифм.) |
8 |
D |
B |
В поле программы вводится код:
.include"m16def.inc";подключение библиотеки
LDI r16,85; в регистр r16 помещаем число a
LDI r17,36; в регистр r17 помещаем число b
clr r18; очистка r18
out DDRB, r18 напрвляем данные на порт ввода B
in r18, PINB; в r 18 сохраняются данные порта B
LSR r17; происходит деление на 2 со сдвигом
LSR r17; происходит деление на 2 со сдвигом
SUB r17,r18 ; происходит вычитание
MUL r17,r16 ; происходит умножение
SER r19 ;установка r19
OUT DDRD, r19;направляем данные на порт вывода D
OUT PORTD, r; в r сохраняются данные порта D
OUT PORTC, r; в r сохраняются данные порта D
JMP LOOP
Скачайте описание команд AVR например
http://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instructi...
Вставка программного кода в тему/комментарий
А как в r18 7 оказалось? Может на порте 2 было?