Volaní podprogramu v C, kompiler HI-TECH 18

Zdravim panove,

potreboval bych doporucit nejaky zdroj, kde bych mohl nastudovat jak spravne nadeklarovat volani podprogramu v C a kompileru HI-TECH 18.

Jde mi o to, ze program co pisu je jiz dost dlouhej a kompiler zacina mit problem s prekladem a i ja se v nem prestavam orientovat.

Zacal jsem proto program delit do jednotlivych podprogramu jenze se mi to nejak nedari spravne nadeklarovat. Nevim jak je to s predavanim promennych mezi podprogramy atd. atd. atd.

Dik

Jan

:arrow_right: administrator: přejmenováno z "Volani podprogramu v C"

Sice ten kompiler neznám, ale co jsem nahlížel zdá se být plně kompatibilní C, takže by měla stačit běžná příručka C + datasheet MCU. Nebyla by spíš ukázka co se nedaří nadeklarovat, konkrétní příklad?

Jediný snad rozdíl v předávání proměnných (podle manuálu k 10/12/16, zdá se že to platí i pro 18 ), že proměnné nepředává přes hw zásobník, ale přes haldu v datové oblasti, ale to by snad neměl být problém pokud se nepřežene množství parametrů.

Tady něco je a slušně vysvětleno, myslím si že pro HI-TECH a všechny kompilery jazyka C by to mělo být stejný, či podobný.

programujte.com/clanek/2006102310-programovani-v-jazyce-c-vytvareni-uzivatelskych-funkci/

Jednoduchý program, když jsem začínal :slight_smile: (furt ještě začínám :smiley:)

[code]#include <htc.h>
#define _XTAL_FREQ 4000000

void blik1(void)
{
PORTC= 0b11110000;
__delay_ms(50);
PORTC= 0b00001111;
__delay_ms(50);
}

void blik2(void)
{
PORTC= 0b00000000;
__delay_ms(50);
PORTC= 0b11111111;
__delay_ms(50);
}

void main(void)
{
TRISC = 0b00000000; //nastavení I/O 0-out 1-in

while(1)
{
	blik1();
	blik2();
}

}[/code]

O něco složitější je když posíláš nějáký hodnoty,ale v tom odkazu je to dobře popsaný.

Diky chlapi,

tohle mi je celkem jasny. Asi jsem se v uvodu spatne vyjadril.
Potreboval bych cast programu (pr. ovladani LCD nebo klavesnice) zapsat uplne mimo hlavni program do dvou souboru (xxx.C a xxx.H) a potom se na tyto soubory odkazovat.

Vse mi fungovalo spravne, az nez jsem zacal program ‘‘zprehlednovat’’ tim, ze jsem jednotlive casti zacal oddelovat od hlavniho programu.

Myslim si, ze je problem s promennyma.

Globální proměnné by měly mít v H souboru deklarace pomocí EXTERN.

Co znamená problémy, kompiler nebo linker hlásí nějakou chybu? Pak je dobrý postup hledat přes google to chybové hlášení. Nebo jestli jde přeložit ale jede špatně, mohl by být problém s linkováním startup kódu z implicitní runtime knihovny (kde je reset vektor, inicializace proměnných a haldy). Hodně se dá vyčíst z listingu.

If you overdo it and devote a excellent offer of time walking again-and-forth on the seaside barefoot hunting for seashells, your ft will be incredibly sore the subsequent day. burberry solde This developing company was launched by Cristobal Balenciaga, who commenced getting fame as a designer close to 1914. burberry en ligne They have a good selection of top quality boots or footwear for hiking and are an previous and respected boot maker.

Cau, neni nad to sem dat aspon chybovy hlasky, kdyz uz ne kod,
skus kouknout sem viewtopic.php?t=911&postdays=0&postorder=asc&start=120