Wydział Informatyki Katedra Systemów Czasu Rzeczywistego Laboratorium Architektury Komputerów |
Data 21.10.2009 |
Ćwiczenie nr 1 Temat: Zapalanie diody. Zespół nr 2 1. Robert Jarocki Grupa 6 2. Jarosław Jastrzębski |
Prowadzący …...................... Ocena …...................... |
ZADANIE 1
Zdefiniuj funkcje służące do cyklicznego zapalania i gaszenia diody 1.6 z
określonym interwałem czasowym. Opóźnienie dobierz doświadczalnie poprzez
odpowiednią liczbę iteracji pustej pętli for.
Rozwiązanie :
Rozwiązaliśmy problem programując w odpowiedni sposób płytkę EasyWeb2 w środowisku IAR w języku C.
Kod:
#include "io430.h"
void dioda(int akcja)
{
if(akcja == 1)
P1OUT = P1OUT | BIT5;
if(akcja == 0)
P1OUT = P1OUT &~ BIT5;
}
void delay()
{
int j;
for(j = 0; j < 32000; ++j)
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= BIT5;
while(1) {
dioda(1);
delay();
dioda(0);
delay();
}
}
Opis działania :
W funkcji void dioda ( ) przyjmujemy parametr o nazwie „akcja” który jest liczbą całkowitą - zerem lub jedynką. Kod „if(akcja == 1) P1OUT = P1OUT | BIT5;” powoduje, że dioda 1.5 zostaje zapalona. Kod „if|(akcja == 0) P1OUT = P1OUT &~ BIT5;” - 1.5 gaśnie.
Pętla FOR zawarta w funkcji void delay ( ) jest odpowiedzialna za czekanie na kolejną akcje. Zwiększenie argumentu do którego dąży pętla powoduje zwolnienie tempa przełączania diody. Zmniejszenie tego argumentu działa przeciwnie.
W funkcji void main ( ) ustawiamy rejestr P1.5 na 1 czyli tryb wyjściowy za pomocą instrukcji „P1DIR |= BIT5”. W nieskończonej pętli while zapalamy diode - „dioda(1)”, następnie czekamy - „delay( )”, potem gasimy diodę - „dioda(0)” oraz ponownie czekamy - „delay( )”.
W programie korzystaliśmy z bibliotece „io430.h”.