Programování uC Microchip v C

Pole struktur - Array of structures

Kdyby se to někomu hodilo informace na internetu jsou tak trochu různě po střípkách, hlavně o tom jak h udělat externí pro více zdrojových souborů. Kompilátor XC8 verze 2.10, standard C99

KDyž chci vytvořit strukturu pro text na LCD a přistupovat k němu z více míst v projektu, kde mám vložen h soubor.

lcd.h

typedef struct lcdstruct      //Nějaké jméno, už pak nikde nefiguruje
{
     uint16_t x;       //x pozice
     uint16_t y;       //y pozice
     char text[30];  //Text zobrazený na LCD
}lcdInfo;               //Jméno typu

Struktura je zadefinovaná pěkně v h a teď se z ní udělá pole přímo v C souboru.

lcd.c

#include  <stdint.h>     //Definice standartních typů

lcdInfo lcdLine[10]; /* lcdInfo je typ - již vytvořená struktura, lcdLine je jméno pole se strukturama */

Máme vytvořené pole struktur s 10 řádkama na LCD. TAk je možné napsat 30 znaků na řádek kamkoli na LCD. Použití je ale jen v rámci lcd.c

použití:

lcdLine[1].x = 50;
lcdLine[1].y = 100;
strcpy(lcdLine[1].text,"Prvni radek");

Pokud chci tohle pole struktur sdílet kdekoli jinde v projektu v jiném C souboru, tak je potřeba se vrátit zpět do lcd.h a zadefinovat pole jako externí

extern lcdInfo lcdLine[10];

no a pak už v každém c souboru, kde chci použít pole lcdLine stačí jen přihodit

#include "lcd.h"

pak se už dá z kteréhokoli c, kde je h vložené, přistupovat úplně stejně jednoduše jako kdyby to bylo v lcd.c

Toť vše

Příště zkusím ukázat jak použít pointery a struktury k jednoduchému přístupu k prvkům v poli pomocí jmen.