Форум РадиоКот • Просмотр темы - bin_to_dec
Сообщения без ответов | Активные темы
Страница 1 из 2
[ Сообщений: 31 ]
,
Автор
Сообщение
arm-17
Заголовок сообщения: 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
Вернуться наверх
Реклама
COKPOWEHEU
Заголовок сообщения: Re: bin_to_dec
Добавлено: Сб янв 10, 2015 13:54:11
Говорящий с текстолитом
Карма: 8
Рейтинг сообщений: 209
Зарегистрирован: Чт июн 10, 2010 20:11:19Сообщений: 1517
Рейтинг сообщения: 0
На каком этапе ошибка? Вывод символа на дисплей, преобразование число - строка, вывод строки, может выводите число вместо его кода?
Вернуться наверх
Реклама
akl
Заголовок сообщения: 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 раз.
Вернуться наверх
arm-17
Заголовок сообщения: Re: bin_to_dec
Добавлено: Сб янв 10, 2015 15:05:08
Зарегистрирован: Пн янв 10, 2011 00:12:19Сообщений: 75
Рейтинг сообщения: 0
Для измерения 5-и вольт по АЦП пойдет 999.А вот почему не выводит на LCD? не пойму. У меня до этого был другой BIN_BSD он работал до 65535 и спокойно все это выводил на LCD.
Вернуться наверх
akl
Заголовок сообщения: 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)
Вернуться наверх
Реклама
arm-17
Заголовок сообщения: 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 раз.
Вернуться наверх
Реклама
arm-17
Заголовок сообщения: Re: bin_to_dec
Добавлено: Сб янв 10, 2015 15:54:00
Зарегистрирован: Пн янв 10, 2011 00:12:19Сообщений: 75
Рейтинг сообщения: 0
Может число должно быть упакованное?
Вернуться наверх
akl
Заголовок сообщения: 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
Вернуться наверх
arm-17
Заголовок сообщения: Re: bin_to_dec
Добавлено: Сб янв 10, 2015 21:32:32
Зарегистрирован: Пн янв 10, 2011 00:12:19Сообщений: 75
Рейтинг сообщения: 0
Разобрался ошибка где "запись в LCD". Пора завязывать отмечать праздники.
Тема закрыта.
Вернуться наверх
Реклама
arm-17
Заголовок сообщения: 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
Вернуться наверх
akl
Заголовок сообщения: Re: bin_to_dec
Добавлено: Чт янв 15, 2015 04:13:23
Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43Сообщений: 4326Откуда: Ижевск
Рейтинг сообщения: 0
В этом преобразовании никак. После преобразования на индикатор выводите 0x35 0x2E 0x31 0x32.
Вернуться наверх
arm-17
Заголовок сообщения: 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 и т.д. Может есть у кого трехзначное преобразование?
Вернуться наверх
akl
Заголовок сообщения: 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
Думаю, что напутано при выводе на индикацию
Мне больше нравится
такое преобразование
Вернуться наверх
arm-17
Заголовок сообщения: Re: bin_to_dec
Добавлено: Пт янв 16, 2015 21:10:51
Зарегистрирован: Пн янв 10, 2011 00:12:19Сообщений: 75
Рейтинг сообщения: 0
Подставил все равно считает не правильно.
Вернуться наверх
akl
Заголовок сообщения: Re: bin_to_dec
Добавлено: Сб янв 17, 2015 04:52:48
Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43Сообщений: 4326Откуда: Ижевск
Рейтинг сообщения: 0
По мне, у Вас вывод на индикатор неправильный.
Вернуться наверх
arm-17
Заголовок сообщения: 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 ;*****************************************************************************
Вернуться наверх
akl
Заголовок сообщения: 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
Вернуться наверх
arm-17
Заголовок сообщения: 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 ;сдвинуть старший с переносом Или я чего-то не понял?
Вернуться наверх
akl
Заголовок сообщения: 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
Вернуться наверх
arm-17
Заголовок сообщения: Re: bin_to_dec
Добавлено: Вс янв 18, 2015 19:57:21
Зарегистрирован: Пн янв 10, 2011 00:12:19Сообщений: 75
Рейтинг сообщения: 0
Не получилось. Может если будет время ,то посмотрите? Посылаю исходник и рабочий пример в PROTEUS. Всем кто только изучает АЦП и ПИШЕТ на ASSEMBLER, будет интересно.
Вернуться наверх
Страница 1 из 2
[ Сообщений: 31 ]
,
Кто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения