Например TDA7294

Форум РадиоКот • Просмотр темы - bin_to_dec
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вс июн 15, 2025 19:55:02

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 31 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: bin_to_dec
СообщениеДобавлено: Сб янв 10, 2015 11:58:08 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
Почему не отображается на 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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Сб янв 10, 2015 13:54:11 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 209
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1517
Рейтинг сообщения: 0
На каком этапе ошибка? Вывод символа на дисплей, преобразование число - строка, вывод строки, может выводите число вместо его кода?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Сб янв 10, 2015 14:40:44 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4326
Откуда: Ижевск
Рейтинг сообщения: 0
arm-17 Ваше bin-bcd преобразование немного ущербно, т.к. не может преобразовать числа больше 999. Касательно вывода на LCD сказано в предыдущем сообщении.
Спойлер
Код:
;; Преобразование 10-разрядного двоичного числа
;; в 5-разрядное двоично-десятичное неупакованное число
;; resH:resL - двоичное число
;; R20:R19:r18:r17:r16 - десятичное
bin_to_dec:
;10000
   ser R20
bin_to_dec10000:
   inc r20
   subi resL,LOW(10000)
   sbci resH,HIGH(10000)
   brcc bin_to_dec10000

   subi resL,LOW(-10000)
   sbci resH,HIGH(-10000)
;1000
   ser R19
bin_to_dec1000:
   inc r19
   subi resL,LOW(1000)
   sbci resH,HIGH(1000)
   brcc bin_to_dec1000; a^u^?e`o`a`a*i` a*u`a* ?a`c, (i'a*o` c,a`a*i`a`)
   subi resL,LOW(-1000)
   sbci resH,HIGH(-1000)
;100
   ser r18
bin_to_dec100:
   inc r18
   subi resL, 100
   sbci resH, 0
   brcc bin_to_dec100; a^u^?e`o`a`a*i` a*u`a* ?a`c, (i'a*o` c,a`a*i`a`)
   subi resL,LOW(-100)
   sbci resH,HIGH(-100)
;10
   ser r17
bin_to_dec10:
   inc r17
   subi resL, 10
   brcc bin_to_dec10
   subi resL,LOW(-10)
   sbci resH,HIGH(-10)


   MOV   R16,resL

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

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

   RJMP   BIN_TO_DEC


Последний раз редактировалось akl Сб янв 10, 2015 15:10:51, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Сб янв 10, 2015 15:05:08 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
Для измерения 5-и вольт по АЦП пойдет 999.А вот почему не выводит на LCD? не пойму. У меня до этого был другой BIN_BSD он работал до 65535 и спокойно все это выводил на LCD.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Сб янв 10, 2015 15:19:19 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4326
Откуда: Ижевск
Рейтинг сообщения: 0
Может из-за этого
Код:
subi resL, -100
sbci resH, 0

вместо
Код:
subi resL,low(-100)
sbci resH, high(-100)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Сб янв 10, 2015 15:38:56 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
akl подставил не получилось. Даже если BIN_BCD не правильный какие-то кракозябры все равно должны были выходить?

Подставил BIN_BCD который предложил akl, тоже не выводит на LCD(((


Последний раз редактировалось arm-17 Сб янв 10, 2015 16:00:42, всего редактировалось 1 раз.

Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Сб янв 10, 2015 15:54:00 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
Может число должно быть упакованное?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Сб янв 10, 2015 16:51:49 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4326
Откуда: Ижевск
Рейтинг сообщения: 0
Может так?
Спойлер
Код:
;; Преобразование 10-разрядного двоичного числа
;; в 5-разрядное двоично-десятичное неупакованное число
;; resH:resL - двоичное число
;; R20:R19:r18:r17:r16 - десятичное
   LDI   ZH,HIGH(RAMEND)
   LDI   ZL,LOW(RAMEND)
   OUT   SPH,ZH
   OUT   SPL,ZL

bin_to_dec:

;10000
   ser R20
bin_to_dec10000:
   inc r20
   subi resL,LOW(10000)
   sbci resH,HIGH(10000)
   brcc bin_to_dec10000

   subi resL,LOW(-10000)
   sbci resH,HIGH(-10000)
;1000
   ser R19
bin_to_dec1000:
   inc r19
   subi resL,LOW(1000)
   sbci resH,HIGH(1000)
   brcc bin_to_dec1000; a^u^?e`o`a`a*i` a*u`a* ?a`c, (i'a*o` c,a`a*i`a`)
   subi resL,LOW(-1000)
   sbci resH,HIGH(-1000)
;100
   ser r18
bin_to_dec100:
   inc r18
   subi resL, 100
   sbci resH, 0
   brcc bin_to_dec100; a^u^?e`o`a`a*i` a*u`a* ?a`c, (i'a*o` c,a`a*i`a`)
   subi resL,LOW(-100)
   sbci resH,HIGH(-100)
;10
   ser r17
bin_to_dec10:
   inc r17
   subi resL, 10
   brcc bin_to_dec10
   subi resL,LOW(-10)
   sbci resH,HIGH(-10)


   MOV   R16,resL

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

;*************************************************************************
;*************************************************************************
LCD_Write:
;преобразовать десятичный код в ASCII
   SUBI   R20,-0x30
   SUBI   R19,-0x30
   SUBI   R18,-0x30
   SUBI   R17,-0x30
   SUBI   R16,-0x30

   MOV   R2,R16
   MOV   R3,R17
   MOV   R4,R18
   MOV   R5,R19
   MOV   R6,R20
;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 ;;;;;;;;;;;;;

   RJMP   BIN_TO_DEC

LCD_SetAddressDD:
   RET
LCD_WriteData:
   RET


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Сб янв 10, 2015 21:32:32 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
Разобрался ошибка где "запись в LCD". Пора завязывать отмечать праздники. :))

Тема закрыта.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Ср янв 14, 2015 16:37:52 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
Подскажите уважаемые гуру форума, а как сделать чтоб в этом 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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Чт янв 15, 2015 04:13:23 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4326
Откуда: Ижевск
Рейтинг сообщения: 0
В этом преобразовании никак. После преобразования на индикатор выводите 0x35 0x2E 0x31 0x32.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Чт янв 15, 2015 17:39:02 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
Это преобразование правда какое-то ущербное.
У меня счет идет почему-то вот так: 4.00,4.11,4.22,4.33,4.44,4.55 и т.д.
Может есть у кого трехзначное преобразование?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Пт янв 16, 2015 04:16:42 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4326
Откуда: Ижевск
Рейтинг сообщения: 0
Да нормальное преобразование. Разве что для правильности заменить на
Код:
brcc bin_to_dec1; вычитаем еще раз (нет заема)
subi resL, LOW(-100)
sbci resH, HIGH(-100)
.
.
.
   MOV   R16,resL
;ser r16
;bin_to_dec3: inc r16
;subi resL, 1
;brcc bin_to_dec3
;subi resL, -1
Думаю, что напутано при выводе на индикацию
Мне больше нравится такое преобразование


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Пт янв 16, 2015 21:10:51 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
Подставил все равно считает не правильно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Сб янв 17, 2015 04:52:48 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4326
Откуда: Ижевск
Рейтинг сообщения: 0
По мне, у Вас вывод на индикатор неправильный.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Сб янв 17, 2015 09:00:24 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
Нашёл.Регистр 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
;*****************************************************************************


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Сб янв 17, 2015 09:28:52 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4326
Откуда: Ижевск
Рейтинг сообщения: 0
Я бы сделал так
Код:
  cpi count_data,6
;  cpi count_data,1

или так с заменой деления умножением (X/64=X*K/256->K=4) без потери значащих бит
Код:
   LSL   ADC_L   ;сдвинуть младший с переносом
   ROL   ADC_H   ;сдвинуть старший с переносом

   LSL   ADC_L
   ROL   ADC_H


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Вс янв 18, 2015 00:08:43 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
Что-то не понял зачем сравнивать с 6( cpi count_data,6 )


Вы имеете в виду заменить
lsr ADC_H
ror ADC_L

на

LSL ADC_L ;сдвинуть младший с переносом
ROL ADC_H ;сдвинуть старший с переносом

Или я чего-то не понял?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Вс янв 18, 2015 05:19:02 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4326
Откуда: Ижевск
Рейтинг сообщения: 0
arm-17 писал(а):
Что-то не понял зачем сравнивать с 6( cpi count_data,6 )
Для того, чтобы разделить число на 64=2^6 можно сдвинуть вправо 6 раз.
arm-17 писал(а):
Или я чего-то не понял?
Для того, чтобы разделить число на 64=2^6 можно сдвинуть влево 2 раза, заменив операцию деления умножением. Результатом будет содержимое старшего байта.
X/64=X*K/256->K=4


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: bin_to_dec
СообщениеДобавлено: Вс янв 18, 2015 19:57:21 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
Не получилось. Может если будет время ,то посмотрите?
Посылаю исходник и рабочий пример в PROTEUS.


Всем кто только изучает АЦП и ПИШЕТ на ASSEMBLER, будет интересно.


Вложения:
КОД и схема в протеусе.zip [44.83 KiB]
Скачиваний: 139
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y