msp430 ADC шестнадцатиричное в десятичное обычных

S

sam_manchali

Guest
привет,
кто-нибудь может мне помочь, предоставив метод или код (

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Очень веселый" border="0" />

) В C для переноса шестнадцатиричный о / р в 12bit ADC по СМП в десятичный номер??
Мне нужно сделать некоторые Мул.Div и т.д. на том, что данные до отображения на ЖК-дисплее.
любая помощь будет признателен.

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Улыбка" border="0" />спасибо
Сэм

 
Что вы подразумеваете под "десятичное число"?Является ли это BCD число?
Например, если у вас есть 0x12 hexadecimally вы хотите изменить его на
BCD число: 0x18?
0x18 является десятичное представление шестнадцатеричное число 0x12.

С обычной для этого преобразования (шестнадцатеричное должна быть меньше, чем 0x64):Неподписанный hex2bcd знаков (знаков неподписанными шестнадцатеричный)
(
Неподписанный символ BCD;

BCD = ((шестнадцатеричный / 10) <<4) (шестнадцатеричный 10%);
возвращение (BCD);
) / / hex2bcd

 
привет,
Спасибо за ответ.
как я говорил раньше, мне нужно для ADC.так
она должна быть способна принимать от 0x00 до 0xFFF.Я думаю, ур обычной только для десятичное 0-100.
пока
все равно спасибо, но я все еще нуждаются в ней так я пытаюсь buold один из рис обычным я.

<img src="http://www.edaboard.com/images/smiles/icon_idea.gif" alt="Идея" border="0" />пока
Сэм

 
Привет,

Для того, чтобы перевести 12 битный номер в десятичной или ASCII попробовать код

недействительным hex2dec (неподписанные adchex, беззнаковое значение)
(
беззнаковое значение [4];

для (i = 0; I <4; I )
(
Значение = adchex% 10;
/ / Значение = adchex% 10 0 x30; / / ASCII для представления
adchex = adchex/10;
)
)

Надеюсь, что это помогает.

Привет,
Джордж

 
привет,
то, что я хотела не "шестнадцатиричное представление", но в шестнадцатиричное decimail переходов
т.е. 0xF44 (Hex) = 3908 (в десятичной системе)

Вот код для непосредственного отображения на встроенном ЖК (msp430f435)/ / Двоичный файл для BCD

недействительным putdec_lcd (неподписанные долго бинарный)
(
Неподписанный символ кол = 0;
профсоюз (
структуры (
Неподписанный долго низким; / / 4 байта
Неподписанный долго высоким; / / 4 байта
) СПГ;
Неподписанный символ байт [8];
Cdec);

статических характеристик encountered_only_zeros беззнаковое;
подписала с символа;
Неподписанный символ D;

/ / по крайней мере, он печатает'0 ', если она равна нулю, а doesn't пропустить все ведущие нули!
если (двоичные == 0) (
lcd_data [0] = lcd_data [1] = lcd_data [2] = lcd_data [3] = 0;
возвращение;
)

/ / выполнить технику выше
cdec.lng.low = бинарно;
cdec.lng.high = 0; / / 12W / 2L

для (C = 0; C <32; C ) (

/ / сдвиг привет: вот <<1
D = cdec.byte [3];
cdec.lng.low <<= 1;
cdec.lng.high <<= 1;
если ((D
И 0x80) == 0x80) cdec.byte [4] | = 1;

для (D = 4; D <7; Д ) (
если ((cdec.byte [D]
И 0x0F)> = 0x05) cdec.byte [D] = 0x3;
если ((cdec.byte [D]
И 0xF0)> = 0x50) cdec.byte [D] = 0x30;
)
)encountered_only_zeros = 1; / / для пропуска ведущими нулями

для (C = 15; C> = 8; C -) (
D = cdec.byte [C>> 1];
если ((И с 1) == 0) (
И D = 0x0F;
)
еще (
И D = 0xF0;
D>> = 4;
)
если (D> =

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Круто" border="0" />

Д-= 3;
если (D! = 0) encountered_only_zeros = 0;
если (encountered_only_zeros == 0)
(lcd_data [Count] = D; кол ;)
)

если (кол == 3)
(
lcd_data [3] = lcd_data [2];
lcd_data [2] = lcd_data [1];
lcd_data [1] = lcd_data [0];
lcd_data [0] = 0;
)
если (кол == 2)
(
lcd_data [3] = lcd_data [1];
lcd_data [2] = lcd_data [0];
lcd_data [1] = 0;
lcd_data [0] = 0;
)
если (кол == 1)
(
lcd_data [3] = lcd_data [0];
lcd_data [2] = 0;
lcd_data [1] = 0;
lcd_data [0] = 0;
)

_NOP ();

)

/ / Бен к BCD заканчивается

это точное обычные, с некоторыми изменениями, с одной на www.microchipc.com
Если кто-то может дать мне улучшения, они приветствуются.
спасибо
Сэм

 
Привет,

Да, я дал вам десятичное преобразование не шестнадцатиричное представления.Вы должны использовать программу ниже (в плане).

недействительным putdecLCD (INT бинарный)
(
для (i = 0; I <4; I )
(
lcd_data [3-я] = двоично 10%;
двоично = binary/10;
)
)

Давайте проверим это на вашем примере

двоично = 3908;

1) I = 0; lcd_data [3] = 3908% 10 = 8; двоично = 3908/10 = 390;

2) I = 1; lcd_data [2] = 390% 10 = 0; двоично = 3908/10 = 39;

3) I = 2; lcd_data [1] = 39% 10 = 9; двоично = 39/10 = 3;

4) I = 3; lcd_data [0] = 3% 10 = 3; двоичной = 3 / 10 = 0;

Вы можете видеть, что спектр lcd_data является правильным.

Привет,
Джордж

 
привет georgeM,
U Dont-видимому, понимают, что я хочу.
I DONT хотите разделить 3980 на 3,9,8,0 (простые операции%), и дисплейa hexadecimal
number into BCD
, like on the windows acessories , calculator: type some hex num and goto decimal format, it gets converted.

но я хочу перевести
шестнадцатеричное
число в BCD,
как на окнах аксессуары, калькулятор: тип некоторые шестнадцатиричное NUM Гото и десятичном формате, он получает преобразован.Я хочу сделать то же самое на СМП.
Я надеюсь, uhave Понял!!

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Очень веселый" border="0" />Сейчас у
см.
 
INT BCDcode;
BCDcode = (lcd3 <<12) (lcd2 <<8) (lcd1 <<4) lcd0;

 

Welcome to EDABoard.com

Sponsor

Back
Top