| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Малко помощ за С препроцесор? http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=18475 |
Страница 1 от 1 |
| Автор: | Н'бабане Гт'муан'га [ Чет Юли 28, 2022 12:07 pm ] |
| Заглавие: | Малко помощ за С препроцесор? |
Значи, това е нещо което би трябвало да имам някъде по старите кодове обаче не успявам да го намеря, а пък това дето сега го написах не минава компилацията... Трябва ми някакво макро за референция към регистрите на пиковете. Примерно, имам LED на A4 и да речем че макрото се казва REG Ако му дам REG("TRIS", LED) препроцесорът ще генерира TRISAbits.TRISA4 Ако му дам REG("LAT", LED) ще генерира LATAbits.LATA4 ... и т.н. Някой има ли нещо готово да сподели? Мерси |
|
| Автор: | TheWizard [ Чет Юли 28, 2022 12:46 pm ] |
| Заглавие: | Re: Малко помощ за С препроцесор? |
#define REG(x, y) x ## Abits.x ## y #define LED REG(LAT, A4) #define LED_T REG(TRIS, A4) LED_T = 0; LED = 1 //0; |
|
| Автор: | Н'бабане Гт'муан'га [ Чет Юли 28, 2022 1:00 pm ] |
| Заглавие: | Re: Малко помощ за С препроцесор? |
Мерси, близо е ама не е съвсем това... #define LED A4 #define REG(R, n) R ## Abits.R ## n REG(TRIS, LED) = 0; води до грешка: no member named 'TRISLED' in 'TRISAbits_t' T.e. LED не се е заменило с A4 Също така, това важи само за порт A. Ако имам LED на D7 няма да работи заради "Abits" константата, която в такъв случай би трябвало да се формира като "Dbits" |
|
| Автор: | TheWizard [ Чет Юли 28, 2022 1:04 pm ] |
| Заглавие: | Re: Малко помощ за С препроцесор? |
директно не експандава define стойности с горното може да дефинираш регистър за "периферия" LED, BTN, PINx |
|
| Автор: | Н'бабане Гт'муан'га [ Чет Юли 28, 2022 1:45 pm ] |
| Заглавие: | Re: Малко помощ за С препроцесор? |
Абе имаше някакъв начин да се постигне това дето ми трябва... В момента с тоя сорс имам много портове на които трябва да пипам много регистри, така че да дефинирам всеки един поотделно с всичките му регистри не е ефективно |
|
| Автор: | Н'бабане Гт'муан'га [ Чет Юли 28, 2022 2:28 pm ] |
| Заглавие: | Re: Малко помощ за С препроцесор? |
А, намерих го... // register naming macros #define REG__(R, n) R ## n // this one is internal - do not use! #define REG(R, n) REG__(R, n) // usage example: REG(TRIS, LED) where LED is defined as B5 --> will compile as TRISB5 |
|
| Автор: | slav4o.com [ Чет Юли 28, 2022 3:53 pm ] | |||||||||
| Заглавие: | Re: Малко помощ за С препроцесор? | |||||||||
Аз пиша примерно:
|
||||||||||
| Автор: | Н'бабане Гт'муан'га [ Чет Юли 28, 2022 5:15 pm ] | |||||||||
| Заглавие: | Re: Малко помощ за С препроцесор? | |||||||||
То това е ясно, обаче когато имаш голямо количество портове и на всеки трябва да пипнеш я TRIS, я LAT, я WPU, я нещо друго, и хедъра ти става като роман |
||||||||||
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|