Je vous mis en ligne le premier tutoriel sur la programmation du pic16F727.
Le sujet de ce tutoriel :
Configuration des registres
Configuration de l'horloge
Gestion des IO
Commander une Led
Faire clignoter une led
Code :
// etape 1 configuration des registres :
// PIC16F727 Configuration Bit Settings
// 'C' source line config statements
// CONFIG1
#pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = ON // RE3/MCLR pin function select bit (RE3/MCLR pin function is MCLR)
#pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled)
#pragma config BOREN = ON // Brown-out Reset Selection bits (BOR enabled)
#pragma config BORV = 19 // Brown-out Reset Voltage selection bit (Brown-out Reset Voltage (VBOR) set to 1.9 V nominal)
#pragma config PLLEN = ON // INTOSC PLLEN Enable Bit (INTOSC Frequency is 16MHz (32x))
// CONFIG2
#pragma config VCAPEN = DIS // Voltage Regulator Capacitor Enable bits (All VCAP pin functions are disabled)
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
#include <xc.h>
#define sortie 0
#define entree 1
#define ON 0
#define OFF 1
#define LED_D16 PORTCbits.RC0
#define _XTAL_FREQ 16000000
void main (void)
{
// la valeur de la féquence de l'osc
// fosc = 16 Mhz T = 1/f T = 1/16000000 = 62.5 ns
OSCCONbits.IRCF1 = 1 ;
OSCCONbits.IRCF0 = 1 ;
// allumer la led D16 --> rc0
TRISCbits.TRISC0 = sortie ;
// Mettre la sortie RC à 0
// PORTCbits.RC0 = 0 ;
while (1)
{
// le programme en boucle
LED_D16 = ~LED_D16;
__delay_ms(250);
}
}