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

Какво означава това?
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=4666
Страница 1 от 1

Автор:  kirchi [ Вто Авг 21, 2007 10:07 am ]
Заглавие:  Какво означава това?

DelayUs(x) { unsigned char _dcnt; \
_dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; \
while(--_dcnt != 0) \
continue; }

Кокво означава "|1" на втория рад?

Автор:  Реконструктор [ Вто Авг 21, 2007 10:08 am ]
Заглавие: 

Дигаш най-младшия бит. :)

Автор:  kirchi [ Вто Авг 21, 2007 10:13 am ]
Заглавие: 

Реконструктор написа:
Дигаш най-младшия бит. :)


Ок, мерси.

Автор:  zaphod [ Вто Авг 21, 2007 1:16 pm ]
Заглавие: 

ако беше _dcnt-- а не --_dcnt , щеше да може и без него, че и по-добре щеше да е. а това MHZ как минава през компилера ми е някаква мистерия...

Автор:  ps66 [ Вто Авг 21, 2007 1:41 pm ]
Заглавие: 

zaphod написа:
ако беше _dcnt-- а не --_dcnt , щеше да може и без него, че и по-добре щеше да е. а това MHZ как минава през компилера ми е някаква мистерия...


ако сложиш отгоре:
#define MHZ *1000000

мистерията изчезва :)

Автор:  kirchi [ Вто Авг 21, 2007 5:11 pm ]
Заглавие: 

ps66 написа:
zaphod написа:
ако беше _dcnt-- а не --_dcnt , щеше да може и без него, че и по-добре щеше да е. а това MHZ как минава през компилера ми е някаква мистерия...


ако сложиш отгоре:
#define MHZ *1000000

мистерията изчезва :)

Автор:  kirchi [ Вто Авг 21, 2007 5:15 pm ]
Заглавие: 

Ето всичко.

Прикачени файлове:
delay.h [1.26 KiB]
149 пъти

Автор:  Реконструктор [ Вто Авг 21, 2007 5:39 pm ]
Заглавие: 

ps66 написа:
zaphod написа:
ако беше _dcnt-- а не --_dcnt , щеше да може и без него, че и по-добре щеше да е. а това MHZ как минава през компилера ми е някаква мистерия...


ако сложиш отгоре:
#define MHZ *1000000

мистерията изчезва :)


C-то е велик език. :D

Автор:  zaphod [ Вто Авг 21, 2007 5:51 pm ]
Заглавие: 

аве вие чувете ли се? че и аз се вързах като последен ламер и писах пост където обяснявах че не бива да се прави така, защото 10MHz/5MHz нямало да даде 2. всъщност няма да мине компилация, така както и твърдях в началото, който иска да пробва.

Автор:  ps66 [ Вто Авг 21, 2007 8:32 pm ]
Заглавие: 

zaphod написа:
аве вие чувете ли се? че и аз се вързах като последен ламер и писах пост където обяснявах че не бива да се прави така, защото 10MHz/5MHz нямало да даде 2. всъщност няма да мине компилация, така както и твърдях в началото, който иска да пробва.


що не вземеш да го пробваш ... вместо да пишеш глупости !

аз преди да си напиша поста го компилирах - защото не бях сигурен дали препроцесора ще се оправи с 12MHZ (без пауза)

Автор:  zaphod [ Вто Авг 21, 2007 10:37 pm ]
Заглавие: 

ps66 написа:
zaphod написа:
аве вие чувете ли се? че и аз се вързах като последен ламер и писах пост където обяснявах че не бива да се прави така, защото 10MHz/5MHz нямало да даде 2. всъщност няма да мине компилация, така както и твърдях в началото, който иска да пробва.


що не вземеш да го пробваш ... вместо да пишеш глупости !

аз преди да си напиша поста го компилирах - защото не бях сигурен дали препроцесора ще се оправи с 12MHZ (без пауза)

на визуалното студио не минава. бях написал поста, когато се освятках че препроцесора подменя само логически отделни стрингове, не прави просто подмяна на низ, както текстовите редактори да речем. ако даден препроцесор подменя подниз, значи е некадърен. пробвах и като видях че не минава и си коригирах поста
на компилатора на микрочип дава main.c:57:15: invalid suffix "MHz" on integer constant
на микрософтския дава
error C2059: syntax error : 'bad suffix on number'
това нещо може да мине само на препроцесор-самоделка
разбира се, ако има пауза минава, но говорим за случая БЕЗ пауза.

Автор:  ps66 [ Сря Авг 22, 2007 5:46 am ]
Заглавие: 

zaphod написа:
ps66 написа:
zaphod написа:
аве вие чувете ли се? че и аз се вързах като последен ламер и писах пост където обяснявах че не бива да се прави така, защото 10MHz/5MHz нямало да даде 2. всъщност няма да мине компилация, така както и твърдях в началото, който иска да пробва.


що не вземеш да го пробваш ... вместо да пишеш глупости !

аз преди да си напиша поста го компилирах - защото не бях сигурен дали препроцесора ще се оправи с 12MHZ (без пауза)

на визуалното студио не минава. бях написал поста, когато се освятках че препроцесора подменя само логически отделни стрингове, не прави просто подмяна на низ, както текстовите редактори да речем. ако даден препроцесор подменя подниз, значи е некадърен. пробвах и като видях че не минава и си коригирах поста
на компилатора на микрочип дава main.c:57:15: invalid suffix "MHz" on integer constant
на микрософтския дава
error C2059: syntax error : 'bad suffix on number'
това нещо може да мине само на препроцесор-самоделка
разбира се, ако има пауза минава, но говорим за случая БЕЗ пауза.


пробвах го на BCB10 - който не ми прилича на самоделка :)
освен това питането на младежа беше "какво е това?" а не защо не ще да се компилира :)

препроцесора не прави проста подмяна на стринг - никоя ключова дума или име не започва с цифри - така че MHZ не е част от стринг
(TESTMHZ и 12MHZ са различни за препроцесора)

според мен е въпрос на реализация на компилатора, .... но никога не бих написал макроса без пауза !

P.S.
Цитат:
на компилатора на микрочип дава main.c:57:15: invalid suffix "MHz" on integer constant


това "MHZ" не е май "MHz" !?

мързи ме да го пробвам с VS но съм сигурен че и там ще мине !

Автор:  zaphod [ Сря Авг 22, 2007 9:18 am ]
Заглавие: 

е аз не правих пробите със примера който тука момчето е дало, просто пишех
#define MHz *1000000
.....
int i=5MHz

Автор:  kirchi [ Сря Авг 22, 2007 11:34 am ]
Заглавие: 

Това е пример от Hi-tech std 9.60.
Реших нето да използвам, вместо да се мъча да пиша.

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