M
maniac84
Guest
Ahoj, mám nějaké základní c jazykové otázky. Já používám Microchip IC a já jsem viděl některé rutinní prohlásit takhle: void daleko funkce (void) Proč je to tam "daleko" před slovo?
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
vzala s poděkováním. Mám další otázku. Kódování také vždy používá níže: memset (chTmp, 0, sizeof (chTmp)), vím, že to znamená, rutina chTmp je rovna 0. Tak proč ne oni stačí napsat "chTmp = 0;"?Je těžké být konkrétní, aniž by znali přesnou kompilátor, který máte na mysli. Nicméně, mnoho mikrokontrolér mají omezení na to, jak různé oblasti skladování, jsou přístupné i RAM a ROM. Microchip C18 kompilátor například v případě funkcí / rutin, vyžaduje jejich umístění, ukazatel funkce a bude umístěn v rámci 16-bit rozsahu adres pro malé paměti modelu "se blíží" klíčové slovo a 24-bit rozsah adres pro velký paměťový model "daleko" klíčové slovo. Výchozí ani klíčové slovo je uvedeno, je malý paměťový model. Odkaz: Microchip C18 C kompilátoru Uživatelská příručka, oddíl: 3.1 Paměť modely, Strana: 37 BigDog
# pragma code = 0x0008 My_HiPrio_Int / / vysoká priorita přerušení # pragma kód # pragma přerušení chk_isr neplatné My_HiPrio_Int (void) {_asm GOTO chk_isr _endasm} void chk_isr (void) / * Sériové přerušení * / {INTCONbits.GIE = 0; if (PIR3bits.RC2IF == 1) / / Příjem RC_ISR () ;/ / viz eusart.c if (PIR1bits.RCIF == 1) RA_ISR (); INTCONbits.GIE = 1;} [ / code] Je to pro sériovou přerušení. Musím běžet "My_HiPrio_Int 'Forever ke kontrole pro příjem dat v pořádku? Je to jen tím, že '# pragma', to je navždy běží?
Jak naznačují, že je ISR? Je to tím, že deklaruje "# pragma přerušení" na běžné?Správně! ISR se nazývá hardwaru signálem některého z EUSARTs pokaždé byte byla přijata. Upozorňuje svůj program, že je čas číst sériová data, než to bude přepsán něco přijít. Kód můžete ukázat, je pro PIC se dvěma EUSARTS, kdy byte je tady, že kontroly, které EUSART jej obdržel, pak volá RC_ISR (), pokud to bylo EUSART 2 nebo RA_ISR jestli je to EUSART 1. To asi není nutné zakázat GIE a znovu povolit to poté bude hardware ISR pravděpodobně to udělá za vás a zároveň zdravotně postižené, mohou ostatní přerušení ignorovat. Brian.