Projekt 3 - Použití knihovny funkcí
28.02.2011 00:21Pokud se nějaká funkce často opakuje ve více projektech, je dobré si ji vložit do knihovny a ve zdrojovém souboru se nani pak jen odkázat. Tímto ušetříte nejen místo a čas nad vkládáním kódu funkce, ale pokud byste chtěli tuto funkci vylepšit či poupravit, tak stačí přepsat jednu knihovnu. Dobrým příkladem tohoto je třeba čekání nebo potvrzovací funkce, kdy: "Při potvrzení zabliká třikrát LED2 (zelená) a pak se rozsvítí." Tuto funkci pak můžeme změnit najednou u všech příkladů změnou této knihovny.
Zde je odkaz na soubor se zdrojovým kódem
Obsah knihovny moje_lib.h
// Musíme do knihovny naimportovat soubor pro práci s mikroprocesorem
#include "msp430.h"
// Vložíme do knihovny funkci používanou již dříve pro zpoždění
void delaytime(unsigned int timex)
{
while (timex != 0)
{
timex--;
}
}
// Vytvoříme funkci, která nám bude dělat potvrzovací signál
void submitfce(unsigned int outputbit) // Pojmenování funkce a předání proměnných
{
unsigned int fcex; // Vytvoření další proměnné
// Nyní vynulujeme bit portu 1, který byl předán funkci do 'outputbit'
P1OUT &= ~(outputbit);
/*
Následuje cyklus FOR, který se stará o spínání a vypínání výstupu na portu P1, bit je předáván proměnnou 'outputbit'
*/
for (fcex = 6; fcex > 0; fcex--)
{
P1OUT ^= outputbit;
delaytime(30000);
}
/*
Jaknile je cyklus dokončen, následuje sepnutí výstpu 'outputbit' na dobu 'delaytime(60000) a následné vypnutí'
*/
P1OUT |= outputbit;
delaytime(60000);
P1OUT &= ~outputbit;
}
Tuto knihovnu si stáhneme a vložíme do adresáře ".\Texas Instruments\ccsv4\msp430\include\" kde 'Texas Instruments' je instalační složka.
Obsah zdrojového kódu 03_main.c
// Tímto naimportujeme do projektu knihovnu moje_lib.h kde jsou uloženy naše funkce
#include "moje_lib.h"
#include "msp430g2231.h"
#define LED1 BIT0
#define LED2 BIT6
#define S2 BIT3
#define DEL1 5000
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= (LED1 + LED2);
P1OUT &= ~(LED1 + LED2);
for(;;)
{
// Zkontrolujeme zda bylo zmáčknuto tlačítko
while ((P1IN & S2) != S2)
{
// Zhasneme červenou diodu LED1
P1OUT &= ~(LED1);
/*
Zavoláme funkci na čekání 'delaytime' která je uložena v knihovně moje_lib.h
a zároveň jí předáme hodnotu, jak dlouho má čekat.
*/
delaytime(DEL1);
/*
Zavoláme potvrzovací funkci 'submitfce' která je uložena v knihovně moje_lib.h
a zároveň jí předáme hodnotu, který bit má na portu 1 použít LED2 (BIT6)
*/
submitfce(LED2);
}
P1OUT ^= LED1;
delaytime(DEL1);
}
}
———
Zpět