Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 28.04.2011, 21:46  
Opasif
Частый гость
 
Регистрация: 18.01.2009
Сообщений: 22
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Opasif на пути к лучшему
По умолчанию Преобразование 2-х байтного числа в набор десятизначных цифр (Assembler,PIC)

Преобразование 2-х байтного числа в набор ДЕСЯТИЧНЫХ цифр (Assembler,PIC)

Может, кто-нибудь писал на Assembler для PIC контролеров функцию преобразования числа, заданного 2 байтами NumH:NumL в число, выводимое на группу 7-сегментных индикаторов (или строку символов, или массив десятизначных цифр)?


Мало ли понадобится
Код:
;Коды цифр для 7-сегментного индикатора с общим анодом:
NUM7_1	EQU		B'11111001'
NUM7_2	EQU		B'10100100'
NUM7_3	EQU		B'10110000'
NUM7_4	EQU		B'10011001'
NUM7_5	EQU		B'10010010'
NUM7_6	EQU		B'10000010'
NUM7_7	EQU		B'11111000'
NUM7_8	EQU		B'10000000'
NUM7_9	EQU		B'10010000'
NUM7_0	EQU		B'11000000'

dat0        UDATA
ARR_7DIG_IND	RES		8	; массив (8 байт), хранящий показания 7-сегментного индикатора на 8 разрядов
NumH	RES	1
NumL	RES	1
P.S. У меня PIC18F4520.
Функцию вывода массива ARR_7DIG_IND на группу 7-сегментных индикаторов я написал. Надо заполнить массив.
Реклама:

Последний раз редактировалось Opasif; 28.04.2011 в 21:54.
Opasif вне форума  
Непрочитано 28.04.2011, 23:53  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Преобразование 2-х байтного числа в набор десятизначных цифр (Assembler,PIC)

писал на основе стандартных некрочиповских аппнотов:
1, преобразование BIN › BCD - перевод 16разрядного двоичного числа в 5разрядное десятичное
2. преобразование BCD › 7SEGMENT - перевод каждого десятичного разряда в семисегментный код путем сложения базового адреса таблицы с числом в данном разряде (указатель на код)
jump вне форума  
Непрочитано 29.04.2011, 10:08  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Преобразование 2-х байтного числа в набор десятизначных цифр (Assembler,PIC)

В двух словах алгоритм прост:
вычитаем из исходного числа последовательно 10000 1000 100 10 и подсчитывая количество циклов получаем каждую десятичную цифру.
Недостаток - долго и время счета сильно зависит от исходных данных, можно попробовать сразу делить, но как будет по времени нужно смотреть.
__________________
misterdi<@>i.ua

Последний раз редактировалось MisterDi; 29.04.2011 в 10:11.
MisterDi вне форума  
Непрочитано 29.04.2011, 10:57  
Driver_gv
Временная регистрация
 
Регистрация: 09.06.2006
Адрес: Lugansk
Сообщений: 75
Сказал спасибо: 0
Сказали Спасибо 26 раз(а) в 21 сообщении(ях)
Driver_gv на пути к лучшему
По умолчанию Re: Преобразование 2-х байтного числа в набор десятизначных цифр (Assembler,PIC)

Готовые подпрограммы

Осталось подставить только свои коды цифр

Код:
;*************************************************  ***************************;
;Название: bin2bcd   bcd1, bcd2, bcd3 = bin1, bin2
;Входные данные: двоичное число в регистрах bin1, bin2. При этом bin1 - старший байт.
;Выходные: единицы будут в младшей тетраде регистра bcd3, десятки в старшей регистра bcd3,
;сотни в младшей тетраде регистра bcd2, тысячи в старшей bcd2,
;десятки тысяч будут находиться в младшей тетраде регистра bcd1. 
;Используемые регистры: bin1, bin2, bcd1, bcd2, bcd3, ctr.
bin2bcd 
		        movlw 	.16 
                movwf 	ctr
                clrf 	bcd1
                clrf 	bcd2
                clrf 	bcd3
                goto 	start 

adjdec          movlw 	0x33 
                addwf 	bcd1,f 
                addwf 	bcd2,f 
                addwf 	bcd3,f 

                movlw 	0x03 
                btfss 	bcd1,3 
                subwf 	bcd1,f 
                btfss 	bcd2,3 
                subwf 	bcd2,f 
                btfss 	bcd3,3 
                subwf 	bcd3,f 

                movlw 	0x30 
                btfss 	bcd1,7 
                subwf 	bcd1,f 
                btfss 	bcd2,7 
                subwf 	bcd2,f 
                btfss 	bcd3,7 
                subwf 	bcd3,f 

start           rlf 	bin2,f 
                rlf 	bin1,f 
                rlf 	bcd3,f 
                rlf 	bcd2,f 
                rlf 	bcd1,f 
                decfsz 	ctr,f 
                goto 	adjdec 

                return 
;*************************************************  ******************************

Код:
	ORG			0x160
;*************************************************  ********************;
;=================== LCD TABLE ==================================
; Подпрограмма вывода на семисегментный индикатор
;порт В0 -А ........ В7 - Н
;Исходные данные: В регистре W число от 0 до 7F
;Выходные данные: В регистре W код для индикатора
LCDTable

;            retlw     ; ABCDEFGH = '8,'	hXX    
	  ADDLW		.0
			BTFSC	STATUS,Z	  
            retlw      b'00000011' ; 0	  
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'10011111' ; 1
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'00100101' ; 2
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'00001101' ; 3
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'10011001' ; 4
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'01001001' ; 5
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'01000001' ; 6
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'00011111' ; 7
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'00000001' ; 8
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'00001001' ; 9
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'00010001' ; A
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'11000001' ; B
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'01100011' ; C
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'10000101' ; D
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'01100001' ; E
	  ADDLW		.255 				
			BTFSC	STATUS,Z	  
            retlw      b'01110001' ; F
            
            retlw      b'00000011' ; 0	             
; **************************************************  ***************************
__________________
picping.lg.ua
Driver_gv вне форума  
Непрочитано 29.04.2011, 13:06  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Преобразование 2-х байтного числа в набор десятизначных цифр (Assembler,PIC)

Частотомер уж сразу...
MiniFmetr.zip
omercury вне форума  
Непрочитано 29.04.2011, 14:46  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: Преобразование 2-х байтного числа в набор десятизначных цифр (Assembler,PIC)

Opasif, Вы бы название топика поправили, а то глаза режет и догадываться приходится - о чем речь. Цифры то все-таки десятичные, а не десятизначные.
Halex07 вне форума  
Непрочитано 29.04.2011, 19:52  
Opasif
Частый гость
 
Регистрация: 18.01.2009
Сообщений: 22
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Opasif на пути к лучшему
По умолчанию Re: Преобразование 2-х байтного числа в набор десятизначных цифр (Assembler,PIC)

Большое спасибо за помощь! Буду разбираться с кодом и воплощать в прошивку.
Halex07, как исправить название темы?
Opasif вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
преобразование 16bit числа на Си (нужна помощь) Uz_Sleep_Walker Микроконтроллеры, АЦП, память и т.д 4 19.02.2010 15:49
преобразование числа для занесения его в регистр на PIC16F84 CERGEI1982 Микроконтроллеры, АЦП, память и т.д 9 11.01.2007 17:47


Часовой пояс GMT +4, время: 09:45.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot