Structure d`un programme en assembleur

publicité
Structure d’un programme en
assembleur
programmation des microcontrôleurs PIC ENSET d'Oran / IUFM Aix Marseille
- mai 09 -
1
Les fichiers d’en-tête
;*************************************************************************
; Ce programme génère une horloge en RB0
; de fréquence 24 fois plus faible que celle du quartz.
*
; il utilise la carte PicDem2Plus équipée d'un PIC16F877A *
;*************************************************************************
LIST P=16F877A
; directive qui définit le processeur utilisé
#include <P16F877A.INC> ; fichier de définition des constantes
;----- Register Files----------------------
;----- STATUS Bits ----------------------
INDF
TMR0
PCL
STATUS
FSR
PORTA
PORTB
PORTC
PORTD
………………
IRP
RP1
RP0
NOT_TO
NOT_PD
Z
DC
C
EQU
H'0000'
EQU H'0001'
EQU H'0002'
EQU H'0003'
EQU H'0004'
EQU H'0005'
EQU H'0006'
EQU H'0007'
EQU H'0008'
EQU
EQU
EQU
H'0007'
H'0006'
H'0005'
EQU H'0004'
EQU H'0003'
EQU H'0002'
EQU H'0001'
EQU H'0000'
programmation des microcontrôleurs PIC ENSET d'Oran / IUFM Aix Marseille
- mai 09 -
2
Le registre de configuration
;************************************************************************
;
BITS DE CONFIGURATION
;*************************************************************************
__CONFIG _HS_OSC & _WDT_OFF & _CP_OFF & _CPD_OFF & _LVP_OFF
; _XS_OSC l'oscillateur est configuré en oscillateur à quartz haute fréquence
; _WDT_OFF le watchdog est désactivé
; _CP_OFF le code de protection de la mémoire programme est désactivé
; _CPD_OFF le code de protection de la mémoire EEPROM est désactivé
; _LVP_OFF la programmation basse tension est désactivée
; ces opérations sont nécessaires pour fonctionner en mode "debug"
programmation des microcontrôleurs PIC ENSET d'Oran / IUFM Aix Marseille
- mai 09 -
3
Les directives « org » et « end »
org
0x00
goto
debut
org
0x10
debut
…
end
; adresse pointée après un reset ;
; l’instruction qui va suivre se trouvera à cette adresse
; saut à l’étiquette marquant le début du programme
; cette adresse doit être supérieure à 0x04
; étiquette marquant le début du programme
; directive signalant la fin du programme
programmation des microcontrôleurs PIC ENSET d'Oran / IUFM Aix Marseille
- mai 09 -
4
La déclaration des variables
CBLOCK
0x20
Variable1 : 1
Variable2 : 1
tableau : 8
ENDC
; début de la zone variable
; Variable1 a une taille de 1 octet
; Variable2 a une taille de 1 octet
; tableau est une variable de 8 octets
programmation des microcontrôleurs PIC ENSET d'Oran / IUFM Aix Marseille
- mai 09 -
5
L’écriture de variables
0x1A ou
H’1A’ ou
B’10101111’
D’12’ ou
.12
A’C’ ou ‘C’
1Ah
: notation hexadécimale ;
: notation binaire ;
: notation décimale.
: code ASCII
programmation des microcontrôleurs PIC ENSET d'Oran / IUFM Aix Marseille
- mai 09 -
6
Les facilités d’écriture

assignations
MASQUE EQU 0X45

définitions
#DEFINE SORTIE PORTB,0
bsf

SORTIE
macro instructions
Macro1 macro
Suite d’instructions…..
edm
; fin de la macro
programmation des microcontrôleurs PIC ENSET d'Oran / IUFM Aix Marseille
- mai 09 -
7
Programme complet
;*************************************************************************
; Ce programme génère une horloge en RB0
; de fréquence 24 fois plus faible que celle du quartz.
*
; il utilise la carte PicDem2Plus équipée d'un PIC16F877A *
;*************************************************************************
LIST P=16F877A
; directive qui définit le processeur utilisé
#include <P16F877A.INC> ; fichier de définition des constantes
;************************************************************************
;
BITS DE CONFIGURATION
;*************************************************************************
__CONFIG _HS_OSC & _WDT_OFF & _CP_OFF & _CPD_OFF & _LVP_OFF
; _XS_OSC l'oscillateur est configuré en oscillateur à quartz haute fréquence
; _WDT_OFF le watchdog est désactivé
; _CP_OFF le code de protection de la mémoire programme est désactivé
; _CPD_OFF le code de protection de la mémoire EEPROM est désactivé
; _LVP_OFF la programmation basse tension est désactivée
; ces opérations sont nécessaires pour fonctionner en mode "debug"
;************************************************************************
;
DEMARRAGE SUR RESET
*
;************************************************************************
org
0x0
; Adresse de départ après reset
goto debut
org
0x10
; adresse de début du programme
debut
programmation des microcontrôleurs PIC ENSET d'Oran / IUFM Aix Marseille
- mai 09 -
8
Programme complet
;****************************************************************
;
INITIALISATION
*
;****************************************************************
; initialisation du PORTB en sortie (voir datasheet)
bcf
STATUS, RP0
bcf
STATUS, RP1
clrf
PORTB
bsf
STATUS, RP0
movlw b'00000000'
movwf TRISB
bcf
STATUS, RP0
; passage en banque 0
; RAZ des bascules D
; passage en banque 1
; PORTB en sortie
; retour en banque 0
;****************************************************************
;
PROGRAMME PRINCIPAL
*
;****************************************************************
boucle
bsf
PORTB,0
; mise à 1 de la sortie
nop
; 2 temps morts pour compenser le saut
nop
bcf
PORTB,0
; mise à 0 de la sortie
goto boucle
; rebouclage
END
; directive signalant la fin du programme
;********************************************************************
programmation des microcontrôleurs PIC ENSET d'Oran / IUFM Aix Marseille
- mai 09 -
9
programmation des microcontrôleurs PIC ENSET d'Oran / IUFM Aix Marseille
- mai 09 -
10
Téléchargement