Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

P18F252 програмиране
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=10261
Страница 1 от 1

Автор:  v.n.angelov [ Вто Юни 26, 2012 11:33 am ]
Заглавие:  P18F252 програмиране

Здравейте!
Правя система за управление по скорост и по позиция на стъпков двигател със матрична клавиатура и LCD за визуализация. Използвам MikroC PRO for PIC 4.15.

Въпроса ми е следния:
Как микроконтролера да чете ASCII кода за да му задам позиция. В момента програмата тръгва, но го позиционирам от 0 до 9, а трябва да го позиционирам до 480, т.е. до 10 оборота с точност 7,5 градуса.

Ще съм много благодарен ако някой може да ми помогне в това мое начинание. :)

Автор:  Gogo [ Вто Юни 26, 2012 11:53 am ]
Заглавие:  Re: P18F252 програмиране

Има няколко функции за преобразуване от ASCII в число:

Convert a string to an 8-bit signed byte: char atob( const char * s );
Convert a string to a 16-bit signed integer: int atoi( const char * s );
Convert a string into a long integer representation: long atol( const char * s );
Convert a string into a floating point value: double atof( const char * s );

Автор:  v.n.angelov [ Вто Юни 26, 2012 12:57 pm ]
Заглавие:  Re: P18F252 програмиране

Примерен код може ли да ми дадеш ?

Автор:  Gogo [ Вто Юни 26, 2012 1:45 pm ]
Заглавие:  Re: P18F252 програмиране

#include <stdlib.h>

int hex_val;
char asc_buf[8];

hex_val = atoi((char*)&asc_buf[0]);


В asc_buf ти е ASCII на числото, което ще преобразуваш - например: 0x33, 0x38, 0x36, 0x32.
На края, в hex_val е шеснадесетичната му стойност (0xF16 = 3862).

P.S. Горе бях сгрешл, но го оправих!

Автор:  v.n.angelov [ Вто Юни 26, 2012 1:51 pm ]
Заглавие:  Re: P18F252 програмиране

Много ти Благодаря!!!

Автор:  v.n.angelov [ Чет Юни 28, 2012 12:27 pm ]
Заглавие:  Re: P18F252 програмиране

Възможно ли е следното нещо:
във масива съм въвел 3 стойности например : asc_buf{0x31,0x34,0x34};
и функцията atоi да преобразува числото в случая 144 ?

Автор:  michev [ Чет Юни 28, 2012 12:36 pm ]
Заглавие:  Re: P18F252 програмиране

Да. Само добави в масива още една последна стойност - '\0' , че atoi няма как да знае че е изчела всички числа които си въвел и ще цикли докато стигне '\0'.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/