Étape 6: programmation
À ce stade, nous travaillerons exclusivement avec le X de MPLAB IDE. Pour commencer, notez le panneau intitulé projets sur le côté gauche de la fenêtre de MPLAB IDE. À partir de ce panneau, créez un code :
Faites un clic droit sur le dossier « Fichiers Source » ci-dessous votre projet > Nouveau > fichier principal C
Se sentir libre de le nommer comme vous souhait (« Main » est très bien) vous verrez maintenant que MPLAB X a créé un fichier principal, visible dans le panneau central.
Code : Aux fins de ce tutoriel, je vais vous donner le code nécessaire, que vous pouvez copier et coller dans la fenêtre Centre (après la suppression de tous les autres textes dans le fichier) pour vous donner une idée de ce que fait le code, j’ai inclus un bref aperçu ci-dessous ainsi que les commentaires dans le code lui-même (collé ci-dessous)
Vue d’ensemble : Il y a deux ou trois parties distinctes du code pour la programmation d’un microcontrôleur PIC, qui sont décrits ci-dessous.
Définir des instructions : Définir des instructions permettent aux programmeurs d’utiliser des mots qui peuvent signifier quelque chose d’autre à l’ordinateur. Par exemple, nous pourrions définir le mot OFF pour signifier un « 0 » binaire. Ainsi tandis que nous voyons le mot off, rendre le code plus facile à comprendre, l’ordinateur lit un « 0 » binaire.
Instructions include : Inclure des déclarations indiquer au compilateur d’inclure plusieurs fichiers d’en-tête. Ces fichiers externes peuvent être des fichiers qui définissent les fonctions d’entrée/sortie (stdlib.h à) ou une variété de fonctions standard C (stdio.h), etc..
Pragmas : Pragmas sont utilisés pour définir les bits de configuration sur le microcontrôleur qui contrôlent les aspects tels que la sélection de l’oscillateur, protection du code, etc.. N’hésitez pas à consulter les bits de configuration sélectionnez Fenêtre > PIC mémoire vues > Bits de Configuration
Fonctions : Les fonctions sont des sections du programme qui effectuent des tâches spécifiques. La fonction principale est où le programme commence à s’exécuter.
Programme :
/********************************************************************
Comment programmer un PIC et lire un programme encodeur
Dernière mise à jour : 03/01/14
Auteurs : Carson Miller
Écrit pour : PIC18F4525 (Version actuelle)
*********************************************************************/
#define entrée 1
#define sortie 0
#define _XTAL_FREQ 4000000 //Used par la macro de delay_ms(x) XC8
Paramètres de Configuration du Bit PIC18F25K22
#include < xc.h > //Includes mappage de matériel photo
#include « GenericTypeDefs.h » //Includes types de variables standards
#pragma config instructions doivent précéder le projet fichier inclut.
Utiliser des énumérations de projet au lieu de #define pour ON et OFF.
CONFIG1H
#pragma config OSC = INTIO7 / / sélection d’oscillateur mèches (bloc oscillateur interne, fonction CLKOUT sur RA6, fonction du port sur RA7)
#pragma config FCMEN = OFF / / Fail-Safe horloge écran activer bits (Fail-Safe horloge écran désactivé)
#pragma config SIERE = OFF / / interne/externe oscillateur passage au bit (oscillateur passage au mode désactivé)
CONFIG2L
#pragma config PWRT = OFF / / Power-up Timer Enable bit (PWRT désactivé)
#pragma config BOREN = SBORDIS / / Brown-out Reset Enable bits (Brown-out Reset activée dans le matériel uniquement (SBOREN est désactivé))
#pragma config BORV = 3 / / Brown hors tension réinitialiser mèches (réglage Minimum)
CONFIG2H
#pragma config WDT = OFF / / Watchdog Timer activer bits (WDT activé)
#pragma config WDTPS = 32768 / / Watchdog Timer Postscale Select bits (1:32768)
CONFIG3H
#pragma config CCP2MX = PORTC / / MUX CCP2 bits (CCP2 entrée/sortie est multiplexé avec RC1)
#pragma config PBADEN = ON / / port a/d activer bits (broches PORTB < 4:0 > sont configurés comme entrées analogiques sur Reset)
#pragma config LPT1OSC = OFF / / Low-Power Timer1 oscillateur activer bits (Timer1 configuré pour la motorisation supérieure)
#pragma config MCLRE = ON / / permettre à broche MCLR bit (broche MCLR activé ; RE3 entrée pin désactivé)
CONFIG4L
#pragma config STVREN = ON / / pile pleine/Underflow réinitialiser activer bits (pile pleine/underflow causera Reset)
#pragma config LVP = OFF / / alimentation simple ICSP activer bits (CIPS alimentation simple activé)
#pragma config XINST = OFF / / Extended Instruction Set permettent de bits (Instruction set extension et indexé mode d’adressage désactivé (mode traditionnel))
CONFIG5L
#pragma config CP0 = OFF / / bit (bloc 0 (000800-003FFFh) non protégés par le code) de la Protection de Code
#pragma config CP1 = OFF / / Code Protection bit (bloc 1 (004000-007FFFh) non protégés par le code)
#pragma config CP2 = OFF / / Code Protection bit (bloc 2 (008000-00BFFFh) non protégés par le code)
CONFIG5H
#pragma config CPB = OFF / / Boot Block Code Protection bit (bloc de démarrage (000000-0007FFh) non protégés par le code)
#pragma config DPC = OFF / / Code de Protection de données EEPROM bits (données EEPROM non protégés par le code)
CONFIG6L
#pragma config WRT0 = OFF / / écriture bit de Protection (bloc 0 (000800-003FFFh) pas protégée en écriture)
#pragma config WRT1 = OFF / / écriture bit de Protection (bloc 1 (004000-007FFFh) pas protégée en écriture)
#pragma config WRT2 = OFF / / écriture bit de Protection (bloc 2 (008000-00BFFFh) pas protégée en écriture)
CONFIG6H
#pragma config WRTC = OFF / / Configuration Register écriture bit de Protection (registres de Configuration (300000-3000FFh) pas protégée en écriture)
#pragma config WRTB = OFF / / bloc de démarrage écriture bit de Protection (bloc de démarrage (000000-0007FFh) pas protégée en écriture)
#pragma config WRTD = OFF / / Protection de données EEPROM écrire bits (données EEPROM pas protégée en écriture)
CONFIG7L
#pragma config EBTR0 = OFF / / Table lire le bit de Protection (bloc 0 (000800-003FFFh) ne pas protégé contre les lectures de table exécutées dans les autres blocs)
#pragma config EBTR1 = OFF / / Table lire le bit de Protection (bloc 1 (004000-007FFFh) ne pas protégés contre les lectures de table exécutées dans les autres blocs)
#pragma config EBTR2 = OFF / / Table lire le bit de Protection (bloc 2 (008000-00BFFFh) ne pas protégés contre les lectures de table exécutées dans les autres blocs)
CONFIG7H
#pragma config EBTRB = OFF / / Boot Block Table lire le bit de Protection (bloc de démarrage (000000-0007FFh) ne pas protégés contre les lectures de table exécutées dans les autres blocs)
Programme d’installation variable factice
Distance UINT = 0 ;
Direction de CHAR = 0 ;
Erreur CHAR = 0 ;
Sub configure(void)
{
Configuration de l’ADC
ADCON1bits.PCFG = 1111 ; Désactive toutes les entrées analogiques (voir fiche p. 224)
Configuration de l’oscillateur
OSCCONbits.IRCF = 110 ; Oscillateur ensembles à 4MHz
Interrompre le programme d’installation
INTCONbits.GIE = 1 ; Permet tous démasquée ou haute priorité interrompt (Selon IPEN)
INTCONbits.PEIE = 1 ; Permet toutes les interruptions périphériques démasquées ou interruptions de faible priorité (Selon IPEN)
INTCONbits.INT0IF = 0 ; Efface interrupt flag 0 bit (doit avoir lieu avant d’activer l’interruption)
INTCONbits.INT0IE = 1 ; Permet l’interruption externe INT0
INTCON2bits.INTEDG0 = 1 ; Jeux extérieurs interrompre 0 interrompre sur front montant
RCONbits.IPEN = 0 ; Désactive les niveaux de priorité sur les interruptions
TRISBbits.TRISB0 = entrée ; Définit INT0 comme entrée
TRISBbits.TRISB1 = entrée ; INT1 ensembles comme entrée
}
Sub main()
{
Configure() ;
while(1)
{
Boucle de programme
}
}
Routine du service principal d’interruption (ISR)
void interrupt ISR()
{
Vérifier pour voir si c’est interruption 0
Si (INTCONbits.INT0IF == 1)
{
distance ++ ;
INTCONbits.INT0IF = 0 ; Efface interrupt flag
}
d’autre
erreur = 1 ;
}