Programació en C del PIC 16F690 amb PICkit 2

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

Programant en C

El C és un llenguatge de nivell força alt, per tant quan programem no ens preocupem de l'estructura de la memòria ni de si el processador té més o menys instruccions. En el programa diem què volem que el microcontrolador faci i sera el compilador qui s'encarregui de traduir el programa a les instruccions del microcontrolador.

En aquest web tenim un resum breu de les opcions disponibles. Per a informació completa, podeu consultar qualsevol manual de llenguatge C; per exemple aquest.

Normalment també donem noms a les variables i el compilador decideix les adreces més adequades on guardar-les. Addicionalment, podem afegir comentaris per deixar clar què fa cada instrucció o tros de programa.

Els valors els introduïm en el format que ens vagi millor (binari, decimal, etc.). El compilador s'encarregarà de traduir mnemònics, adreces, variables i valors al codi màquina corresponent.

A continuació tenim un tros de programa en el que es comenten els principals elements:

Tros de programa

Els comentaris es poden definir de dues maneres. Els comentaris s'una línia es poden posar després de dues barres //; s'entén que el comentari ha acabat quan saltem a la línia següent. En canvi, els comentaris que ocupen diverses línies comencen amb /* i acaben amb */. Cal vigilar amb això ja que si hi ha instruccions dins, aquestes no es faran.

A les variables del programa els podem donar el nom que vulguem mentre no sigui un dels noms reservats. Per exemple TRISC és un registre del microcontrolador i, per tant, no podem emprar aquest nom com a variable.

Per fer que el programa prengui decisions, fem servir les sentències; n'hi ha de repetició, condicionals, etc.

Les operacions s'indiquen amb un signe igual. Després de l'operació, la variable o el registre que hi ha a l'esquerra del signe igual passarà a contenir el resultat de l'operació que hi ha a la dreta del signe igual.

També podem emprar funcions, que són trossos de programa que estan definits a un altre lloc. Les funcions les podem definir nosaltres o agafar altres funcions que ja estan definides, com és el cas de la funció _delay().

El programa principal és el que es comença a executar quan posem en marxa el microcontrolador. El programa principal sempre s'anomena main, no dóna cap resultat en forma de variable (void) i no admet que li passem cap variable directament; per això té un void dins del parèntesi.

Hi ha alguns altres elements que també han d'estar en un programa complet. Anem a veure-ho a partir del programa 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
unsigned char Valor;  				// Variable de 8 bits sense signe (0 a 255)
void main (void)
{
	TRISC = 0b00000000; 			// Posa el port C com a sortida
    Valor = 8;           			// Inicialment posem 1 (activem LED 0)
    while (1)					// Bucle infinit
    {
        PORTC = Valor;				// Copiem el valor al port (als LED)
        Valor = (Valor << 7) | (Valor >> 1);	// Desplacem els bits
        if (Valor == 128)			// Ja hem sortit fora,
            Valor = 8;    			// tornem al LED 4
        _delay(200000);	    			// Retard per permetre la visualització
    }
}

A la primera part (fons groc) fem la configuració general. La primera línia li diuen la configuració general del processador; són uns registres que només poden ser modificats en el moment de programar i que especifíquen la configuració que volem. En aquest cas hem posat la configuració bàsica, amb totes les funcions especials desactivades.

La darrera línia li diu al compilador que inclogui el fitxer de característiques del PIC 16F690. En aquest fitxer hi ha, per exemple, les adreces dels registres específics del processador; així quan nosaltres indiquem TRISC, el compilador sap quina adreça li correspon.

El segon bloc (fons blau) és la definició de les variables globals. En aquest cas només hi ha una variable (anomenada Valor) que és un nombre enter sense signe. Les variables globals (les que definim en aquesta posició) es guarden en la memòria de dades i són accessibles des de qualsevol posició del programa.

Al darrer bloc (fons vermell) hi ha el programa pròpiament dit. A la primera línia hi ha l'inici del programa principal. Com aquest té diverses línies cal delimitar-lo entre els signes { i }. A les línies següents assignem valors a un registre (en aquest cas un valor binari) i a una variable (en aquest cas un valor decimal).

Després hi ha una sentència de bucle que inclou diverses línies. Fixem-nos que les línies de dins el bucle estan una mica més a la dreta. Això no és necessari però ens ajuda a seguir el programa.

 

 

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