| Автор |
Съобщение |
|
v.n.angelov
Ранг: Минаващ
Регистриран на: Чет Юни 14, 2012 12:48 pm Мнения: 29
|
 P18F252 програмиране
Здравейте! Правя система за управление по скорост и по позиция на стъпков двигател със матрична клавиатура и LCD за визуализация. Използвам MikroC PRO for PIC 4.15. Въпроса ми е следния: Как микроконтролера да чете ASCII кода за да му задам позиция. В момента програмата тръгва, но го позиционирам от 0 до 9, а трябва да го позиционирам до 480, т.е. до 10 оборота с точност 7,5 градуса. Ще съм много благодарен ако някой може да ми помогне в това мое начинание. 
|
| Вто Юни 26, 2012 11:33 am |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
 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 );
Последна промяна Gogo на Вто Юни 26, 2012 1:31 pm, променена общо 1 път
|
| Вто Юни 26, 2012 11:53 am |
|
 |
|
v.n.angelov
Ранг: Минаващ
Регистриран на: Чет Юни 14, 2012 12:48 pm Мнения: 29
|
 Re: P18F252 програмиране
Примерен код може ли да ми дадеш ?
|
| Вто Юни 26, 2012 12:57 pm |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
 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. Горе бях сгрешл, но го оправих!
|
| Вто Юни 26, 2012 1:45 pm |
|
 |
|
v.n.angelov
Ранг: Минаващ
Регистриран на: Чет Юни 14, 2012 12:48 pm Мнения: 29
|
 Re: P18F252 програмиране
Много ти Благодаря!!!
|
| Вто Юни 26, 2012 1:51 pm |
|
 |
|
v.n.angelov
Ранг: Минаващ
Регистриран на: Чет Юни 14, 2012 12:48 pm Мнения: 29
|
 Re: P18F252 програмиране
Възможно ли е следното нещо: във масива съм въвел 3 стойности например : asc_buf{0x31,0x34,0x34}; и функцията atоi да преобразува числото в случая 144 ?
|
| Чет Юни 28, 2012 12:27 pm |
|
 |
|
michev
Ранг: Форумен бог
Регистриран на: Сря Юли 11, 2007 10:16 am Мнения: 1730
|
 Re: P18F252 програмиране
Да. Само добави в масива още една последна стойност - '\0' , че atoi няма как да знае че е изчела всички числа които си въвел и ще цикли докато стигне '\0'.
|
| Чет Юни 28, 2012 12:36 pm |
|
|