Programació en C del PIC 16F690 amb PICkit 2

Referència Trucs Perifèrics   Recursos CITCEA
Tutorial Exemples Projectes   Inici

Exemple RB - Rotació de LED bidireccional

En aquest exemple farem que cada cop que es premi el polsador els LED comencin a girar en sentit contrari al que ho feien fins al moment. Farem servir la variable Premut per recordar l'estat previ del polsador i la variable Adreta per recordar el sentit de gir actual. El programa serà el següent:

#pragma config FOSC = INTRCIO, WDTE = OFF, PWRTE = OFF, MCLRE = OFF, CP = OFF, CPD = OFF, BOREN = OFF, IESO = OFF, FCMEN = OFF
#include "pic16f690.h"				// Carrega el fitxer d'adreces i paràmetres del PIC 16F690
#include <xc.h>					// Carrega el fitxer de funcions
#define Polsador   PORTAbits.RA3		// Li assigna un nom a l'adreça del polsador
unsigned char Valor;  				// Variable de 8 bits sense signe (0 a 255)
bit NoPremut;					// Estat del polsador
bit Adreta;					// Sentit de gir
void main (void)
{
						// Inicialització de variables
	Adreta = 0;				// Iniciem girant a l'esquerra
	NoPremut = 1;				// Suposem el polsador no premut
	Valor = 1;          			// Inicialment posem 1 (activem LED 0)
						// Configuració d'entrades i sortides
	TRISC = 0b00000000; 			// Posa el port C com a sortida
	TRISA = 0b00001000; 			// Posa RA3 com a entrada
	while (1)				// Inici del bucle de programa
	{
		PORTC = Valor;			// Copiem el valor al port (als LED)
		if (Adreta == 0) {
			Valor = (Valor << 1)|(Valor >> 7);	// Desplacem els bits a l'esquerra
			if (Valor == 16)			// Si ja estem al LED 5,
				Valor = 1;    			// tornem al LED 0
		}
		if (Adreta == 1) {
			Valor = (Valor >> 1)|(Valor << 7);	// Desplacem els bits a la dreta
			if (Valor == 128)			// Ja hem sortit fora,
				Valor = 8;    			// tornem al LED 4
		}
		if (Polsador == 0 && Polsador != NoPremut)	// Si el polsador ha canviat d'estat i està premut
			Adreta = ~Adreta;	// Invertim el sentit de gir
		NoPremut = Polsador;		// Guardem el nou valor
        _delay(200000);	    			// Retard per permetre la visualització
	}
}

Ara no cal eliminar els rebots del polsador ja que mirarem el polsador en moments molt separats en el temps.

 

 

Licencia de Creative Commons
Esta obra de Oriol Boix está licenciada bajo una licencia no importada Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0.