Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Ответ:

Отправлено колян безпарольный 13 ноября 2009, г. 01:48
В ответ на: вот зануда))) если на камне нет набортного двухбайтового деления то выделение декад из инта методом последовательного деления на 10000,1000,100,10 занимает куда больше времени чем стандартное BCD преобразование. отправлено пользователем колян безпарольный 13 ноября 2009, г. 01:48


;Перевод 2ух байтового числа в 5 цифр для семисегментного индикатора
;Вызов
; void int2bcdASM(char *dst,int i);
;
;308 циклов 74 байт

MODULE int2bcd
RSEG CODE
PUBLIC int2bcdASM

int2bcdASM:
;R16-указатель на конечный буфер
;R18:R19-исходная величина
;R20,R21,R22- переходные регистры
mov R30,R16
mov R31,R17
ldi R20,0
ldi R21,1
mov R22,R20
; mov R31,R20

Lab0: ;цикл
subi R20,-$33 ;add 0x30
sbrs R20,7
subi R20,$30 ;add 0x30
sbrs R20,3
subi R20,$03 ;add 0x03

tst R22
breq Lab1

subi R21,-$33 ;add 0x30
sbrs R21,7
subi R21,$30 ;add 0x30
sbrs R21,3
subi R21,$03 ;add 0x03
Lab1:
lsl R18
rol R19
rol R20 ;a
rol R21 ;b
rol R22 ;c
brcc Lab0
;закончили, перенести значение в конечный буфер
andi R22,0x0F ;
st Z, R22
mov R16,R21
swap R21
andi R21,0x0F
std Z+1,R21
andi R16,0x0F
std Z+2,R16
mov R16,R20
swap R20
andi R20,0x0F
std Z+3,R20
andi R16,0x0F
std Z+4,R16
RET

END




Составить ответ | Вернуться на конференцию.

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 89:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru