Některé základní otázky C kódování.

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?
 
"Daleko" klíčové slovo obvykle označuje použití velkého paměťového modelu v porovnání se "u" klíčové slovo obvykle označuje použití malého modelu paměti. Typicky klíčové slovo "pokud" a "u" označují omezení na umístění v rámci jedné dat (RAM) nebo program (ROM) skladování v závislosti na objektu klíčové slovo se používá ve spojení. , Na které kompilátor se mluvíte? Jakmile přesné kompilátor, který máte na mysli je známo, měl bych být schopen dát specifika. BigDog
 
Z toho, co vidím z kódování, to vše z rutiny v kódování všichni používají "daleko" klíčové slovo. Jaké omezení mluvíš? Jaký je rozdíl, pokud to není "daleko" klíčová slova?
 
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
 
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
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;"?
 
Odpověď na poslední otázku, "chTmp" Nemusí to být jeden byte, pokud používáte memset. Spíše než dělat jen jednu adresu rovný nule, bude memset vyplnit všechny byty, které tvoří velikost proměnné, ať je to jeden byte, slovo, float nebo dokonce pole. Brian.
 
Vzala s poděkováním. Níže je příklad kódu se setkám:
Code:
 # 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ěží?
 
Opravte! 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.
 
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.
Jak naznačují, že je ISR? Je to tím, že deklaruje "# pragma přerušení" na běžné?
 

Welcome to EDABoard.com

Sponsor

Back
Top