roboforum.ru

Технический форум по робототехнике.

 

bin_to_dec

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

bin_to_dec

Сообщение arm-17 » 10 янв 2015, 14:33

Почему не отображается на LCD?
Вроде bin_to_dec рабочий.

Код: Выделить всёРазвернуть
;********************************************************************
;;=========================================================================
;; Преобразование 10-разрядного двоичного числа
;; в 3-разрядное двоично-десятичное неупакованное число
;; resH:resL - двоичное число
;; r18:r17:r16 - десятичное
bin_to_dec:

ser r18
bin_to_dec1: inc r18
subi resL, 100
sbci resH, 0
brcc bin_to_dec1; вычитаем еще раз (нет заема)
subi resL, -100
sbci resH, 0

ser r17
bin_to_dec2: inc r17
subi resL, 10
brcc bin_to_dec2
subi resL, -10

ser r16
bin_to_dec3: inc r16
subi resL, 1
brcc bin_to_dec3
subi resL, -1
ret

;*************************************************************************

;*************************************************************************
;*************************************************************************
LCD_Write:
;преобразовать десятичный код в ASCII
   ldi temp1,0x30 ;Смещение для ASCII кода
add r18,temp1 ;r2
   add r17,temp1 ;r3
   add r16,temp1 ;r4

;*************************************************************************

;запись в lcd
ldi r16,0x45 ;;;;;;;;;;
rcall LCD_SetAddressDD ;запись в LCD ;;;;;;;;;;;

   mov temp1,r2 ;;;;;;;;;;;
   rcall LCD_WriteData ;;;;;;;;;;;
   mov temp1,r3 ;;;;;;;;;;;;
   rcall LCD_WriteData ;;;;;;;;;;
   mov temp1,r4 ;;;;;;;;;;;;;;
   rcall LCD_WriteData ;;;;;;;;;;
   mov temp1,r5 ;;;;;;;;;;;;
   rcall LCD_WriteData ;;;;;;;;
   mov temp1,r6 ;;;;;;;;;;
   rcall LCD_WriteData ;;;;;;;;;;;;;

;************************************************************************

reti
Аватара пользователя
arm-17
 
Сообщения: 46
Зарегистрирован: 15 июл 2013, 15:15
Откуда: г.Москва
прог. языки: ASM

Re: bin_to_dec

Сообщение Radist » 10 янв 2015, 23:12

Приведены несколько подпрограмм - и все. Как тут помочь?

ЗЫ. Почему у меня машина не едет? Вот колеса - на вид нормальные. Вот генератор и радиатор. Гляньте, почему машина не едет.
Аватара пользователя
Radist
 
Сообщения: 2233
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: bin_to_dec

Сообщение arm-17 » 10 янв 2015, 23:37

А машина не едет потому что прокладка между машиной и водителем протекла))

Все разобрался. тема закрыта
Аватара пользователя
arm-17
 
Сообщения: 46
Зарегистрирован: 15 июл 2013, 15:15
Откуда: г.Москва
прог. языки: ASM

Re: bin_to_dec

Сообщение arm-17 » 14 янв 2015, 18:44

Подскажите уважаемые гуру форума, а как сделать чтоб в этом BIN_BCD появилась точка ну например (5.12V)

Код: Выделить всёРазвернуть
;; Преобразование 10-разрядного двоичного числа
;; в 3-разрядное двоично-десятичное неупакованное число
;; resH:resL - двоичное число
;; r18:r17:r16 - десятичное
bin_to_dec:

ser r18
bin_to_dec1: inc r18
subi resL, 100
sbci resH, 0
brcc bin_to_dec1; вычитаем еще раз (нет заема)
subi resL, -100
sbci resH, 0

ser r17
bin_to_dec2: inc r17
subi resL, 10
brcc bin_to_dec2
subi resL, -10

ser r16
bin_to_dec3: inc r16
subi resL, 1
brcc bin_to_dec3
subi resL, -1
ret
Аватара пользователя
arm-17
 
Сообщения: 46
Зарегистрирован: 15 июл 2013, 15:15
Откуда: г.Москва
прог. языки: ASM

Re: bin_to_dec

Сообщение Radist » 15 янв 2015, 04:08

Проще всего точку рисовать в процедуре вывода на экран. Нужно только знать где. И работать как с целым натуральным числом, например 512.
Аватара пользователя
Radist
 
Сообщения: 2233
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: bin_to_dec

Сообщение arm-17 » 15 янв 2015, 19:44

Это преобразование правда какое-то ущербное.
У меня счет идет почему-то вот так: 4.00,4.11,4.22,4.33,4.44,4.55 и т.д.
Может есть у кого трехзначное преобразование?
Аватара пользователя
arm-17
 
Сообщения: 46
Зарегистрирован: 15 июл 2013, 15:15
Откуда: г.Москва
прог. языки: ASM

Re: bin_to_dec

Сообщение Duhas » 15 янв 2015, 21:01

если не забуду скину завтра, напишите пост чтобы тема вылезла в новых сообщениях завтра..
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6341
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: bin_to_dec

Сообщение arm-17 » 15 янв 2015, 21:42

O.K.:)
Аватара пользователя
arm-17
 
Сообщения: 46
Зарегистрирован: 15 июл 2013, 15:15
Откуда: г.Москва
прог. языки: ASM

Re: bin_to_dec

Сообщение Duhas » 16 янв 2015, 08:13

Код: Выделить всёРазвернуть
UARTE0_TX_DEC_16:
   push   R18
   push   R19
   push   R20
.equ   UARTE0_TX_DEC_16_DIGITS = 5

   ldi      R20,      UARTE0_TX_DEC_16_DIGITS-1;result digits - 1

UARTE0_TX_DEC_16_1:
   
   clr      R18
   ldi      R19,      16 ;data bits

UARTE0_TX_DEC_16_2:
   
   lsl      R16
   rol      R17
   rol      R18

   cpi      R18,      10
   brcs   UARTE0_TX_DEC_16_3

   subi   R18,      10
   ori      R16,      1

UARTE0_TX_DEC_16_3:

   dec      R19
   brne   UARTE0_TX_DEC_16_2
   

   push   R18

   dec      R20
   brne   UARTE0_TX_DEC_16_1

   subi   R16,      -0x30
   call   UARTE0_TX_byte

   ldi      R20,         UARTE0_TX_DEC_16_DIGITS-1
UARTE0_TX_DEC_16_4:
   pop      R16
   subi   R16,         -0x30
   call   UARTE0_TX_byte
   dec      R20
   brne   UARTE0_TX_DEC_16_4

   pop      R20
   pop      R19
   pop      R18
   ret


в том месте где вызывается
call UARTE0_TX_byte
В R16 будет готовый байт, эта процедура в общем для 2-х байтных целых чисел, для дробных готового нет у меня
UARTE0_TX_DEC_16_DIGITS = 5 можно попробовать поставть 3 - но не уверен что все правильно отработает, пробуйте
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6341
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: bin_to_dec

Сообщение arm-17 » 16 янв 2015, 22:57

не пашет

может мое преобразование лучше исправить?
Аватара пользователя
arm-17
 
Сообщения: 46
Зарегистрирован: 15 июл 2013, 15:15
Откуда: г.Москва
прог. языки: ASM

Re: bin_to_dec

Сообщение arm-17 » 17 янв 2015, 11:12

Нашёл.Регистр r16 заменил на другой и все заработало.
Теперь другая проблема: На вольтметре 5.00V а на LCD 5.11V
причем не сразу начинаетса с 0.35 на вольтметре а на LCD 0.36 и так все больше и больше

Вот мое деление

Код: Выделить всёРазвернуть
;***********************деление***********************************************         ;
   ;деление на 64
   clr count_data
div64L:
        lsr ADC_H;сдвинуть старший в право
   ror ADC_L;сдвинуть младший с переносом
   inc count_data
   cpi count_data,1
   brne div64L
;*****************************************************************************
Аватара пользователя
arm-17
 
Сообщения: 46
Зарегистрирован: 15 июл 2013, 15:15
Откуда: г.Москва
прог. языки: ASM

Re: bin_to_dec

Сообщение Duhas » 17 янв 2015, 11:46

а причем тут деление на 64? расскажите как вы вообще все это делаете, начиная с опорного напряжения и делителя резистивного, если он есть, оч. желательно использовать знаки препинания в объяснении
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6341
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: bin_to_dec

Сообщение arm-17 » 18 янв 2015, 02:20

Деление на 64 это если так: cpi count_data,6

В железе пока не делал.Эксперименты c АЦП пока в PROTEUSE.
Аватара пользователя
arm-17
 
Сообщения: 46
Зарегистрирован: 15 июл 2013, 15:15
Откуда: г.Москва
прог. языки: ASM

Re: bin_to_dec

Сообщение Duhas » 18 янв 2015, 11:05

не важно где, распишите как вы полагаете это все должно работать. типа на измеряемом источнике N вольт, на вход микроконтроллера подается M вольт, при опорном напряжении Q вольт, АЦП должен выдать такой то код, его я делю на столько то, дабы нам понять где может быть ошибка
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6341
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: bin_to_dec

Сообщение arm-17 » 18 янв 2015, 16:55

Посылаю код + схема в PROTEUS
Комментарии в коде превратились в кракозябры не знаю как это исправить.



Всем кто только изучает АЦП и ПИШЕТ на ASSEMBLER, будет интересно.
Вложения
КОД и схема в протеусе.zip
Исходник и схема в PROTEUS
(44.83 КиБ) Скачиваний: 0
Последний раз редактировалось arm-17 19 янв 2015, 01:57, всего редактировалось 1 раз.
Аватара пользователя
arm-17
 
Сообщения: 46
Зарегистрирован: 15 июл 2013, 15:15
Откуда: г.Москва
прог. языки: ASM

След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Mail.ru counter