LaunchPad Texas Instruments

Projekt 3 - Použití knihovny funkcí

28.02.2011 00:21

Pokud 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 knihovnu

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

Vyhledávání

© 2011 Všechna práva vyhrazena.