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

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

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

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

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

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

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

 
Опции темы
Непрочитано 03.12.2004, 19:35  
polimer
Прохожий
 
Регистрация: 02.12.2004
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
polimer на пути к лучшему
По умолчанию как преобразовать из двоичного в десять

помогите как выполнить преобразование из двоичного
в десятичное на MPASM в среде MPLAB
т.е. на входе езмеренное АЦП Pic-ом напряжение 0...ff на
выходе должно получиться 0...99 которое выводиться на 2х
разрядный индикатор. как его преобразовать и потом разложить на разряды с последующим выводом наиндикатор
Реклама:
polimer вне форума  
Непрочитано 05.12.2004, 14:37  
DK
Почётный гражданин KAZUS.RU
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
DK на пути к лучшему
По умолчанию

хмм... Забавно... Как ты собираешься число 255 на двух разрядах показывать? Придется вычисления с плавающей точкой юзать...
Просто преобразовать двоичный в двоично - десятичный код:
Код:
;binary_to_bcd - 8-bits 
; 
;Input 
;  bin  - 8-bit binary number 
;	A1*16+A0
;Outputs 
; hundreds - the hundreds digit of the BCD conversion 
; tens_and_ones - the tens and ones digits of the BCD conversion 
binary_to_bcd: 

        CLRF    hundreds 
        SWAPF   bin, W 		;w  = A0*16+A1
        ADDWF   bin, W 		;w  = A0+A1
        ANDLW   00001111b 	;w  = A0+A1 % 16
        SKPNDC 			;if A0+A1 › 16
         ADDLW  0x16 		;  w  += 16
        SKPNDC 			;if w % 16 › 10
         ADDLW  0x06 		;  w  += 6
        ADDLW   0x06 		;w  += 6
        SKPDC 			;if w ‹ 10
         ADDLW  -0x06 		;  w  -= 6

        BTFSC   bin,4 
         ADDLW   0x16 - 1 + 0x6 
        SKPDC 
         ADDLW  -0x06 

        BTFSC   bin, 5 
         ADDLW  0x30 

        BTFSC   bin, 6 
         ADDLW  0x60 

        BTFSC   bin, 7 
         ADDLW  0x20 

        ADDLW   0x60 
        RLF     hundreds, F 
        BTFSS   hundreds, 0 
         ADDLW  -0x60 

        MOVWF   tens_and_ones 
        BTFSC   bin,7 
         INCF   hundreds, F
А чтоб не париться со всякой мурой и алгоритмами - кто мешает табличку забить? И через retlw выбирать? Не так уж и много... Тем более что младший разряд АЦП можно выкинуть принципиально - он только вредит Типа, незначащий. Итого 128 значений всего.

Код:
00	00	00	00000000
01	01	01	00000001
02	02	02	00000010
03	03	02	00000010
04	04	03	00000011
05	05	04	00000100
06	06	05	00000101
07	07	05	00000101
08	08	06	00000110
09	09	07	00000111
0A	10	08	00001000
0B	11	09	00001001
0C	12	09	00001001
0D	13	10	00010000
0E	14	11	00010001
0F	15	12	00010010
10	16	12	00010010
11	17	13	00010011
12	18	14	00010100
13	19	15	00010101
14	20	16	00010110
15	21	16	00010110
16	22	17	00010111
17	23	18	00011000
18	24	19	00011001
19	25	19	00011001
1A	26	20	00100000
1B	27	21	00100001
1C	28	22	00100010
1D	29	23	00100011
1E	30	23	00100011
1F	31	24	00100100
20	32	25	00100101
21	33	26	00100110
22	34	27	00100111
23	35	27	00100111
24	36	28	00101000
25	37	29	00101001
26	38	30	00110000
27	39	30	00110000
28	40	31	00110001
29	41	32	00110010
2A	42	33	00110011
2B	43	34	00110100
2C	44	34	00110100
2D	45	35	00110101
2E	46	36	00110110
2F	47	37	00110111
30	48	37	00110111
31	49	38	00111000
32	50	39	00111001
33	51	40	01000000
34	52	41	01000001
35	53	41	01000001
36	54	42	01000010
37	55	43	01000011
38	56	44	01000100
39	57	44	01000100
3A	58	45	01000101
3B	59	46	01000110
3C	60	47	01000111
3D	61	48	01001000
3E	62	48	01001000
3F	63	49	01001001
40	64	50	01010000
41	65	51	01010001
42	66	51	01010001
43	67	52	01010010
44	68	53	01010011
45	69	54	01010100
46	70	55	01010101
47	71	55	01010101
48	72	56	01010110
49	73	57	01010111
4A	74	58	01011000
4B	75	58	01011000
4C	76	59	01011001
4D	77	60	01100000
4E	78	61	01100001
4F	79	62	01100010
50	80	62	01100010
51	81	63	01100011
52	82	64	01100100
53	83	65	01100101
54	84	65	01100101
55	85	66	01100110
56	86	67	01100111
57	87	68	01101000
58	88	69	01101001
59	89	69	01101001
5A	90	70	01110000
5B	91	71	01110001
5C	92	72	01110010
5D	93	72	01110010
5E	94	73	01110011
5F	95	74	01110100
60	96	75	01110101
61	97	76	01110110
62	98	76	01110110
63	99	77	01110111
64	100	78	01111000
65	101	79	01111001
66	102	80	10000000
67	103	80	10000000
68	104	81	10000001
69	105	82	10000010
6A	106	83	10000011
6B	107	83	10000011
6C	108	84	10000100
6D	109	85	10000101
6E	110	86	10000110
6F	111	87	10000111
70	112	87	10000111
71	113	88	10001000
72	114	89	10001001
73	115	90	10010000
74	116	90	10010000
75	117	91	10010001
76	118	92	10010010
77	119	93	10010011
78	120	94	10010100
79	121	94	10010100
7A	122	95	10010101
7B	123	96	10010110
7C	124	97	10010111
7D	125	97	10010111
7E	126	98	10011000
7F	127	99	10011001
А на выход прицепляешь два дешифратора типа 514ИД2 и все
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Непрочитано 21.03.2006, 09:55  
Гость
 
Сообщений: n/a
По умолчанию Re: как преобразовать из двоичного в десять

Сообщение от polimer
помогите как выполнить преобразование из двоичного
в десятичное на MPASM в среде MPLAB
т.е. на входе езмеренное АЦП Pic-ом напряжение 0...ff на
выходе должно получиться 0...99 которое выводиться на 2х
разрядный индикатор. как его преобразовать и потом разложить на разряды с последующим выводом наиндикатор
 
Непрочитано 21.03.2006, 15:13  
taranov_a
Прохожий
 
Регистрация: 21.03.2006
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
taranov_a на пути к лучшему
По умолчанию

1. ненадо ничего городить.
делишь на сто : получаешь сотни
делишь на десять: получаешь десятки.
остаток еденицы.
Цитата:
А на выход прицепляешь два дешифратора типа 514ИД2 и все
в данном случае можно городить дешифраторы до бесконечности.
строй динамическую индикацию.
taranov_a вне форума  
Непрочитано 21.03.2006, 23:23  
NTBeast
Прописка
 
Аватар для NTBeast
 
Регистрация: 13.03.2005
Сообщений: 125
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
NTBeast на пути к лучшему
По умолчанию

И делить на 100 тем более не надо )))
просто отнимай 100 пока не дойдешь до отр. числа, запомни наим. положительное.
Далее от него отнимаешь 10 пока не дойдешь до отр. числа и запомни наим. положительное и .т.д. т.о. получишь к-во сотен, десятков и единиц

NTBeast вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать прямогульные импульсы с синусоиду? ArtUrl1986 Электроника - это просто 2 12.05.2009 03:46
помогите преобразовать сигнал 0...10В в 2...10В :-( kdy1 Электроника средств транспорта 2 25.02.2009 11:16
Как остановить мк? Как сделать паузу? skllks Микроконтроллеры, АЦП, память и т.д 8 27.12.2008 17:27
преобразование из двоичного в двоич-десятичное CERGEI1982 Микроконтроллеры, АЦП, память и т.д 0 25.01.2007 15:50


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


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