Un semplice timer scritto in linguaggio C

Timer in C

Un timer in linguaggio C può essere un buon esercizio per un principiante. Scrivere in linguaggio C un modulo che simuli un semplice timer è sicuramente uno dei primi passi per iniziare a programmare. Per realizzarlo abbiamo usato le funzioni che già esistono nella libreria del linguaggio stesso.

delay() – sospende l’esecuzione per un intervallo di tempo [ millisecondi ] ( definito in DOS.H )
kbhit() – verifica se un tasto è stato toccato ( defined in CONIO.H )
printf() - stampa a video un messaggio formattato. (STDIO.H)
clrscr() – pulisce lo schermo ( defined in CONIO.H )

Qui sotto il codice del modulo :

#include <stdio.h>
#include <dos.h>
#include <conio.h>

void timer(float cycle)
{
float count=0.0;
int goLoop=1;

while(goLoop)
{
if(kbhit())
{
// Tasto premuto, esci
goLoop=0;
}else{
delay(100);
count+=0.1;
if(count> cycle)
{
// Intervallo scaduto, esci
goLoop=0;
}
}
clrscr();
printf(“ The timer is %06.1f seconds\n”, cycle);
} // end for
} // end module


Come possiamo vedere c'è un ciclo while dove viene utilizzata la funzione (bloccante ) di libreria delay() (per esempio delay(1000) = 1 secondo ; delay (10) = 0.01 secondi ), nel nostro caso usiamo un ritardo di un decimo di secondo (delay(100)).

Ad ogni loop incrementiamo la variabile count di un decimo e controlliamo se è stato superato l'intervallo di attesa richiesto (if(count> cycle)).
Abbiamo usato la funzione kbhit() per fermare il conteggio quando desideriamo ( basta premere un tasto).

Nel codice, la variabile “cycle” è ovviamente di tipo float per ottenere la risoluzione del decimo di secondo. Inoltre viene stampato a video il valore del timer usando la funzione printf, che usa lo specificatore di formato %06,1f (ad esempio 0014.5).

Come usare il timer scritto in linguaggio C

Per usare questo timer tutte le volte che vogliamo bisogna:
Creare un file header dove il prototipo TIMER deve essere dichiarato.
Inserire questo file header nel programma principale.
Nel programma principale questo modulo deve essere chiamato usando lo stesso tipo di variabile ( float in questo caso ).
Compilare questo modulo e vedere se ci sono errori.

Un possibile file header potrebbe essere :

#ifndef __TIMER_H__
#define __TIMER_H__

void timer(float cycle);

#endif

Nel programma principale bisogna inserire #include “timer.h” tra gli altri files header e il modulo può essere chiamato con una istruzione del tipo timer (x); dove x è stata dichiarata di tipo float.

4 Comments

  1. Emanuele Emanuele 2 ottobre 2015
  2. Giovanni Di Maria Giovanni Di Maria 5 ottobre 2015
  3. mandarino 13 ottobre 2015
  4. Maurizio Maurizio 28 novembre 2015

Leave a Reply

Raspberry Pi 3 GRATIS! (Win10 compatibile)

Fai un abbonamento Platinum (EOS-Book + Firmware), ricevi in OMAGGIO la RASPBERRY 3, inviaci il tuo progetto e OTTIENI IL RIMBORSO