| Автор |
Съобщение |
|
bkulev
Ранг: Популярен
Регистриран на: Сря Яну 25, 2006 12:47 pm Мнения: 305 Местоположение: Varna
|
 MCC18 въпрос
Има ли булев тип променливи? Никъде в документацията на компилатора не го видях.
В примерите видях дефинирани флагове в структури, но това не решава напълно въпроса. Какво трябва да се направи, ако искаш да дефинираш функция която връща TRUE/FALSE ?!?
Така ли е и с компилаторите на CCS и Hi-Tech ?
И един страничен въпрос - Някой знае ли програма по подобие на терминалните, но да работи с USB-тата? Най - добре би било, ако работи не само с ASCII, но и с HEX или само с HEX.
|
| Сря Фев 15, 2006 12:43 pm |
|
 |
|
Dimiter
Ранг: Популярен
Регистриран на: Пет Фев 04, 2005 3:18 pm Мнения: 309 Местоположение: Sofia
|
При MCC18 не знам как е но при CCS е така:
int1 Function();
май и така ставаше
boolean Funcction();
|
| Сря Фев 15, 2006 1:09 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
MCC18 за boolean връща byte...
|
| Сря Фев 15, 2006 1:11 pm |
|
 |
|
Syrius-B
Ранг: Форумен бог
Регистриран на: Пон Яну 30, 2006 2:48 am Мнения: 1248 Местоположение: София
|
 Re: MCC18 въпрос
Аз пък отдавна търся терминална програма за PocketPC
|
| Сря Фев 15, 2006 1:13 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
bkulev за терминал по usb.
Ако не намериш нещо свястно В "логически анализатор" има FTDI terminal.
Писал съм я за мои цели и определено не е нещо сериозно. Работи с чиповете FT232 i FT2232.
|
| Сря Фев 15, 2006 1:19 pm |
|
 |
|
Bezmozachen
Ранг: Популярен
Регистриран на: Сря Апр 27, 2005 2:47 pm Мнения: 349 Местоположение: Varna
|
Realterm не работи ли с USB-тата?
|
| Сря Фев 15, 2006 1:23 pm |
|
 |
|
bkulev
Ранг: Популярен
Регистриран на: Сря Яну 25, 2006 12:47 pm Мнения: 305 Местоположение: Varna
|
MCC18 не разпознава думите boolean, true и false. Значи да си дефинирам функцията като int или char и да и давам return 0/1 - ОК, това става, обаче защо да не мога да си дефинирам променлива от тип boolean и компилатора да ми задели 1 бит за нея  , ами трябва да си дефинирам структура и там да си заделя съответния флаг. Много учудващо, поне за мен.
А за терминала: Необходима ми е защото искам да използвам USB комуникациите на 4550. за RS си имам моя, но сега не ми се чете за да я доработя и за USB. Намерих една eval на http://www.hhdsoftware.com/ - USB monitor. За съжаление обаче, тя само прихваща комуникациите по USB-тата и не мога да изпращам от нея.
|
| Сря Фев 15, 2006 2:09 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
При мен нещо не работи нормално,но системата ми е малко странна и може и от нея да е било.
Ако някой е решил проблема с няккава програма и на мен ми е интересно.
#define TRUE 1
#define FALSE 0
и ще ги разпознава
А за bool функцията. Компилаторите дето поддържат bool обикновенно заделят един баит за нея. Проблема е че няма как да адресираш един бит.
така че bool[8] e 8 баита а не 1
struct
{
char MyVar1:1;
char MyVar2:1;
char MyVar3:1;
char MyVar4:1;
char MyVar5:1;
char MyVar6:1;
char MyVar7:1;
char MyVar8:1;
};
Такава неименована структура ти позволява да дефинираш променливите MyVar1 до MyVar8 да са наистина 1 бит.
Но няма начин функцията ти да връща 1 бит.
Ако искаш функцията ти да връща само един бит направи я void и в един фаил global.h които е преинклуднат в проекта и си дефинираш такава безименна структура като един от членовете и кръщаваш return_bool и всяка функция която искаш да ти е bool връща резултат в него. И след извикването на функцията го проверяваш.
|
| Сря Фев 15, 2006 2:45 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
Трудно ще намериш USB "Терминал", защото проблема идва от многото различия във драйверите
|
| Сря Фев 15, 2006 3:00 pm |
|
 |
|
bkulev
Ранг: Популярен
Регистриран на: Сря Яну 25, 2006 12:47 pm Мнения: 305 Местоположение: Varna
|
Да Никола, това е ясно. Аз обаче очаквах тези TRUE и FALSE да са си дефинирани стандартно. Но сега, като се замисля, това вероятно е така, защото PIC-те нямат битово адресируема памет напр. като контролерите с ядра на 8051. От тук и липсата на стандартен тип boolean.
На старницата на realterm пише, че работи и с USB, обаче аз не видях такова нещо. Може би имат пред вид виртуални COM портове, когато се използва преобразуватели USB<>RS232.
|
| Сря Фев 15, 2006 3:38 pm |
|
 |
|
evc
Ранг: Напреднал
Регистриран на: Пет Окт 21, 2005 8:45 am Мнения: 499
|
@bkulev, напротив цялото адресно пространство на пиковете е побитово достъпно/адресируемо! За разлика от 8051, където са само 32 байта. Но ANSI C не предполага работа с битове (стандартно). А типа boolean не е битова, а логическа променлива! Ако толкова държиш да работиш с int1 променливи - HITECH PICC ги поддържа (bit type).
_________________ Простотията е Божи дар, но човек не бива да парадира с подаръците си!
|
| Сря Фев 15, 2006 4:13 pm |
|
 |
|
bkulev
Ранг: Популярен
Регистриран на: Сря Яну 25, 2006 12:47 pm Мнения: 305 Местоположение: Varna
|
OK, момчета ви благодаря за съдействието.
@evc, мисля, че физическото изражение на логическата променлива е бит-а  ,
а за това че на пиковете цялото адресно пространство е побитово достъпно си прав,
аз не го съобразих.
|
| Сря Фев 15, 2006 5:43 pm |
|
|