Программа в на микроконтроллере ATmega16

Nute 2001
Offline
Зарегистрирован: 06.10.2020

Подскажите, что не так с последними 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

Bruzzer
Offline
Зарегистрирован: 17.03.2020

Скачайте описание команд AVR например

http://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instructi...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015
mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А как в r18 7 оказалось? Может на порте 2 было?