реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Динамическая индикация
Ich
сообщение Jan 12 2006, 21:15
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 12-05-05
Пользователь №: 4 962



Всем привет, пытаюсь написать прогу для пятиразрядного динамического индикатора на AVR mega16. Задача - в регистровой паре лежит число, его надо вывести на индикатор. Написал дешифратор - выводит на матрицы числа лежащие в соответствующих регистрах, далее от простого к сложному... начал с двух рязрядов, далее три... и тут...все - тупик sad.gif . Не могу перейти через 199, причина ясна - переполнение регистра. Но как перейти к регистровой паре в моем алгоритме не знаю, т. к. я понял что к ней можно прибавлять только константу до 63, а мне надо будет прибавлять 100, затем 1000 (конечно можно 20 раз по 50... но это не красиво). Вот текст программы которая раскладывает число лежащие в регистре r3, по разрядно в регистры r18:r21:r23 (пока только три smile.gif )

L12:ldi r16,100
add r5,r16
cp r3,r5
brlo L11
inc r18
rjmp L12
L11:sub r5,r16
mov r6,r3
sub r6,r5
L9: ldi r16,10
add r4,r16
cp r6,r4
brlo L10
inc r21
rjmp L9
L10:sub r4,r16
mov r23,r6
sub r23,r4

Если кто-то может помочь мне, то я бы был очен признателен... a14.gif Может быть есть более простые способы для того, чтобы разложить число из регистровой пары на пять разрядов и положить соответствующий разряд в свой регистр? Подскажите хотя бы... дальше я уж сам додумаю.
Go to the top of the page
 
+Quote Post
mse
сообщение Jan 12 2006, 21:40
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Разбирацца лень. Вот ссылка, там два варианта. Один быстрый, другой чуть медленней, но компактней.
http://www.telesys.ru/wwwboards/mcontrol/2...es/141667.shtml
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 12 2006, 22:19
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Ich @ Jan 12 2006, 23:15) *
Если кто-то может помочь мне, то я бы был очен признателен... a14.gif Может быть есть более простые способы для того, чтобы разложить число из регистровой пары на пять разрядов и положить соответствующий разряд в свой регистр? Подскажите хотя бы... дальше я уж сам додумаю.


Вам нужно делить число на 10 5 раз, а остаток сохранять в буфер индикатора (в регистрах или в памяти). Быстрая функция деления на 10 16ти раздного числа:

Код
.def AH    = R25
.def AL    = R24
.def BH    = R23
.def BL    = R22
.def CH    = R21
.def CL    = R20
.def DH    = R1
.def DL    = R0
;-----------------------------------------------------
; Функция 16-ти разрядного целочисленного деления на 10
;---> BH:BL - Делимое
;<--- BH:BL - ОСТАТОК,  XH:XL - Частное
div10_16:
    ldi  AL, $CD
    mul  BL, AL
    mov  XL, DH
    mul  BH, AL
    ldi  XH, 0
    add  XL, DL
    adc  XH, DH

    ldi  AL, $CC
    mul  BL, AL
    add  DL, XL
    adc  DH, XH
    mov  XL, DH
    ldi  XH, 0
    adc  XH, XH
    mul  BH, AL
    add  XL, DL
    adc  XH, DH

    lsr  XH
    ror  XL
    lsr  XH
    ror  XL
    lsr  XH
    ror  XL

    ldi  AL, 10
    mul  XL, AL
    sub  BL, DL
    sbc  BH, DH
    mul  XH, AL
    sub  BH, DL  

    ret
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 14 2006, 01:54
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



http://atmel.ru/Articles/Atmel13.htm


--------------------
Go to the top of the page
 
+Quote Post
yung
сообщение Jan 14 2006, 11:35
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 25-03-05
Из: Рязань
Пользователь №: 3 669



Делал лет 8 назад, написано коряво, но работало.
Прикрепленные файлы
Прикрепленный файл  BPS.rar ( 13.98 килобайт ) Кол-во скачиваний: 47
 
Go to the top of the page
 
+Quote Post
Ich
сообщение Jan 15 2006, 19:35
Сообщение #6





Группа: Новичок
Сообщений: 8
Регистрация: 12-05-05
Пользователь №: 4 962



Всем спасибо a14.gif очень помогли!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 12:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016