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

MCC18 въпрос
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=1817
Страница 1 от 1

Автор:  bkulev [ Сря Фев 15, 2006 12:43 pm ]
Заглавие:  MCC18 въпрос

Има ли булев тип променливи? Никъде в документацията на компилатора не го видях.
В примерите видях дефинирани флагове в структури, но това не решава напълно въпроса. Какво трябва да се направи, ако искаш да дефинираш функция която връща TRUE/FALSE ?!?
Така ли е и с компилаторите на CCS и Hi-Tech ?

И един страничен въпрос - Някой знае ли програма по подобие на терминалните, но да работи с USB-тата? Най - добре би било, ако работи не само с ASCII, но и с HEX или само с HEX.

Автор:  Dimiter [ Сря Фев 15, 2006 1:09 pm ]
Заглавие: 

При MCC18 не знам как е но при CCS е така:

int1 Function();

май и така ставаше

boolean Funcction();

Автор:  TheWizard [ Сря Фев 15, 2006 1:11 pm ]
Заглавие: 

MCC18 за boolean връща byte...

Автор:  Syrius-B [ Сря Фев 15, 2006 1:13 pm ]
Заглавие:  Re: MCC18 въпрос

bkulev написа:

И един страничен въпрос - Някой знае ли програма по подобие на терминалните, но да работи с USB-тата? Най - добре би било, ако работи не само с ASCII, но и с HEX или само с HEX.


Аз пък отдавна търся терминална програма за PocketPC

Автор:  Nikola Kirov [ Сря Фев 15, 2006 1:19 pm ]
Заглавие: 

bkulev за терминал по usb.
Ако не намериш нещо свястно В "логически анализатор" има FTDI terminal.
Писал съм я за мои цели и определено не е нещо сериозно. Работи с чиповете FT232 i FT2232.

Автор:  Bezmozachen [ Сря Фев 15, 2006 1:23 pm ]
Заглавие: 

Realterm не работи ли с USB-тата?

Автор:  bkulev [ Сря Фев 15, 2006 2:09 pm ]
Заглавие: 

MCC18 не разпознава думите boolean, true и false. Значи да си дефинирам функцията като int или char и да и давам return 0/1 - ОК, това става, обаче защо да не мога да си дефинирам променлива от тип boolean и компилатора да ми задели 1 бит за нея :?:, ами трябва да си дефинирам структура и там да си заделя съответния флаг. Много учудващо, поне за мен.

А за терминала: Необходима ми е защото искам да използвам USB комуникациите на 4550. за RS си имам моя, но сега не ми се чете за да я доработя и за USB. Намерих една eval на http://www.hhdsoftware.com/ - USB monitor. За съжаление обаче, тя само прихваща комуникациите по USB-тата и не мога да изпращам от нея.

Автор:  Nikola Kirov [ Сря Фев 15, 2006 2:45 pm ]
Заглавие: 

При мен нещо не работи нормално,но системата ми е малко странна и може и от нея да е било.
Ако някой е решил проблема с няккава програма и на мен ми е интересно.


#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 връща резултат в него. И след извикването на функцията го проверяваш.

Автор:  TheWizard [ Сря Фев 15, 2006 3:00 pm ]
Заглавие: 

Трудно ще намериш USB "Терминал", защото проблема идва от многото различия във драйверите

Автор:  bkulev [ Сря Фев 15, 2006 3:38 pm ]
Заглавие: 

Да Никола, това е ясно. Аз обаче очаквах тези TRUE и FALSE да са си дефинирани стандартно. Но сега, като се замисля, това вероятно е така, защото PIC-те нямат битово адресируема памет напр. като контролерите с ядра на 8051. От тук и липсата на стандартен тип boolean.

На старницата на realterm пише, че работи и с USB, обаче аз не видях такова нещо. Може би имат пред вид виртуални COM портове, когато се използва преобразуватели USB<>RS232.

Автор:  evc [ Сря Фев 15, 2006 4:13 pm ]
Заглавие: 

@bkulev, напротив цялото адресно пространство на пиковете е побитово достъпно/адресируемо! За разлика от 8051, където са само 32 байта. Но ANSI C не предполага работа с битове (стандартно). А типа boolean не е битова, а логическа променлива! Ако толкова държиш да работиш с int1 променливи - HITECH PICC ги поддържа (bit type).

Автор:  bkulev [ Сря Фев 15, 2006 5:43 pm ]
Заглавие: 

OK, момчета ви благодаря за съдействието.

@evc, мисля, че физическото изражение на логическата променлива е бит-а :wink:,
а за това че на пиковете цялото адресно пространство е побитово достъпно си прав,
аз не го съобразих.

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