нужно подать 2-а числа с фиксированной точкой, перемножить их между собой и подать на выход через com порт
проблема возникла в представлении чисел с фиксированной точкой, как это организовать?
вот исходник
.include "tn2313def.inc"
;инициализация USART
; Set baud rate
ldi r17,0 ;загружаем в регистр r17 ноль
ldi r16,0x33 ;загружаем в регистр r16 число 0b00110011
out UBRRH, r17 ;определяем старший байт скорости по USART
out UBRRL, r16 ;определяем младший байт скорости по USART
; Enable receiver and transmitter
ldi r16, (1<<RXEN)|(1<<TXEN) ;загружаем в r16 число 0b00011000
out UCSRB,r16 ;засылаем его в регистр управления и контроля В.
; Set frame format: 8data, 2stop bit
ldi r16, (1<<USBS)|(3<<UCSZ0) ;загружаем в r16 число 0b00001010
out UCSRC,r16 ;засылаем его в регистр управления и контроля С.
;прием первого числа
USART_Receive_1:
; Wait for data to be received
sbis UCSRA, RXC ;проверяем флаг приема
rjmp USART_Receive_1 ;если не готов, то снова ждем
; Get and return received data from buffer
in r16, UDR ;считываем принятый байт в r16
;прием второго числа
USART_Receive_2:
; Wait for data to be received
sbis UCSRA, RXC
rjmp USART_Receive_2
; Get and return received data from buffer
in r17, UDR ;считываем принятый байт в r17
;итак, получены два числа.
;Первое в r16, второе в r17
;
;перемножаем
MOV R0,R17 ;содержимое r17 посылаем в r0
SUB R17,R17 ;вычитаем из r17 содержимое r17
LDI R27,9 ;загружаем в r27 число 9
RJMP met1 ;переход на met1
met3:
BRCC met2 ;в случае сброшенного флага переноса уходим на met2
ADD R17,R0 ;складываем r17 и r0. Результат помещаетсяв r17.
met2:
LSR R17 ;сдвигаем r17 вправо (логический).
met1:
ROR R16 ;ротация r16 вправо
DEC R27 ;вычитаем из r27 единницу
BRNE met3 ;если результат не равен нулю, то переходим на met3.
;результат перемножения в r16
;отправляем
USART_Transmit:
; Wait for empty transmit buffer
sbis UCSRA,UDRE ;проверяем готовность регистра передачи
rjmp USART_Transmit ;если не готов, то опять ждем
; Put data (r16) into buffer, sends the data
out UDR,r16 ;засылаем содержимое r16 в регистр передачи USART
;
;ALLES IN ORDNUNG!!!
;
ребята помогите с умножением
Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Вернуться в «Микроконтроллеры и ПЛИС»
Перейти
- Наш сайт
- ↳ Сувенирная лавка Кота
- ↳ О нашем сайте...
- ↳ Опросы, конкурсы...
- ↳ Статьи
- Устройства
- ↳ Аналоговая техника
- ↳ Усилители низкой частоты
- ↳ Радиотехника: приемники, передатчики, антенны
- ↳ АвтоМотоВело
- ↳ Цифровая техника
- ↳ Микроконтроллеры и ПЛИС
- ↳ Интеграция с ПК
- ↳ Умные мысли
- Силовая электроника
- ↳ Сварочное оборудование
- ↳ Питание
- ↳ Управление двигателями
- ↳ Индукционные нагреватели
- ↳ Прочая силовая электроника
- Микроконтроллеры и ПЛИС
- ↳ AVR
- ↳ ARM
- ↳ PIC
- ↳ ПЛИС
- ↳ Периферия
- ↳ Разные вопросы по МК
- ↳ Arduino
- Обучалка
- ↳ Теория
- ↳ Практика
- Технология
- ↳ Изготовление PCB
- ↳ Корпуса
- ↳ Измерения
- Ремонт
- ↳ Не слышно, не видно
- ↳ Не стирает, не готовит
- ↳ Ничего не работает
- ↳ Дохлые потаскунчики
- Посиделки у Кота
- ↳ Травим анекдоты
- ↳ Котоссылки
- ↳ Ищу...
- ↳ МЯЯЯУ!
- ↳ Чистилище
- Базар
- ↳ Куплю
- ↳ Продам
- ↳ Отдам-Обменяю
- ↳ Есть работа
- ↳ Ищу работу
- ↳ Базарные разговорчики