Base Des Microcontrôleur2021 [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Base des Microcontrôleur L'objective de ce cours est de : •Comprendre l'architecture de Microcontrôleur (pic 16F877) •Développer de programme en assembleur

plan • Généralité sur le Microcontrôleur • pic 16F877 • langage assembleur • les ports d'entrée/sortie du PIC

• les interruptions • les mémoires permanentes

Généralité sur le Microcontrôleur 1.Définition: le microcontrôleur est un circuit intégré, généralement utilisé pour effectue une ou des tâches précises au sein d'un appareil électronique.

2. différents familles de µc: • la famille Atmel (AT91) • la famille intel (80C51) • la famille motorola (Série 68HC11) • la famille microchip (pic 16F877)

Généralité sur le microcontroleur 3. domaine d'application: • • • •

informatique (modem, souris ...) l'électroménager (lave-vaisselle, micro-onde) automobile (GPS,AIRBAG....) contrôle des processus industriels (régulation, pilotage)

Généralité sur le microcontroleur

4. Les composants d'un µc: un µc est constitué par :  des mémoires un µp des bus une interface d'entrée/sortie unités périphériques

Généralité sur le microcontroleur

4.1Les mémoires Une mémoire permet d’enregistrer, de conserver et de restituer des informations

Généralité sur le Microcontrôleur 4.1 Les mémoires On distingue 2 types de mémoires : mémoire de programme: ce sont des mémoires à lecture seule. Elle conservent leurs informations même en l'absence de l'alimentation.

mémoire de données: ce sont des mémoires à écriture et lecture. on distingue 2 types: La RAM de donnée (volatile) et EEPROM de données(non volatile)

Généralité sur le Microcontrôleur 4.2 le microprocesseur : le µp fonctionne selon les étapes suivantes:  chercher l'instruction suivante en mémoire  la décoder pour déterminer l'action qu'il doit effectuer  l'exécuter  revenir à l'étape 1

Généralité sur le Microcontrôleur 4.2 le microprocesseur : la structure interne d'un microprocesseur

UAL: cette unité est utilisée pour les opérations arithmétiques et logiques. CCR: registre d'état, il permet de garder des informations sur l'état du µp Accumulateur: utilisé pour recevoir les données entrantes et sortantes de L'UAL PC: il effectue l'adressage et pointe sur la prochaine adresse mémoire à exécuter

Généralité sur le Microcontrôleur 4.3 Les bus permet de relier entre les composant de µc on distingue 3 type: •bus d'adresses: permet au µp de sélectionner la case mémoire où le périphérique auquel il veut accéder pour lire ou écrire une information

•bus de données : permet le transfert des informations entre les différents éléments. •bus de contrôle : est composé des fils suivants CS ou CE: permet de signaler que le composant est sélectionné OE: permet de demander au composant de valider ses sorties RD/w: permet au µp d'informer un composant de la nature de l'échange : lecture ou écriture

Généralité sur le Microcontrôleur 4.4 Interface d'entrée sortie: Elle capable de conserver des informations, qu'un µp lui fournit, pour les envoyer aux périphériques de sorties; et capable de conserver les informations en provenance des périphériques d'entrée, pour les envoyer au µp

Généralité sur le Microcontrôleur 5 La capacité mémoire d'un composant c'est le nombre de cases mémoires de 1 bits contenu dans un composant mémoire. soit a le nombre de fils d'adresses et d le nombre de fils de données.

• le nombre d'adresse est ..... • chaque adresse correspond d bits de données.

donc la capacité mémoire est :

Généralité sur le Microcontrôleur 6. Structure des µcs: 6.1 Structure de Von Neuman : utilise un seul bus pour transmettre les instructions et les données. par exemple: Motorola

mémoire

µp

Bus de données

de programme et de données

Généralité sur le Microcontrôleur décodage d'adresses:

Il permet au µp de sélectionner un seul composant( RAM,ROM,....), ce décodage se fait à l'aide des fonctions logiques sous forme de circuit électroniques.

Généralité sur le Microcontrôleur Plan mémoire C’est une représentation graphique, un plan mémoire de ce que le microprocesseur est susceptible de trouver à telle ou telle adresse. Le plan mémoire est la traduction graphique du décodage d’adresses. exemple

Exercice: Soit un microprocesseur a un bus d’adresse de 20 bits et un bus de données de 8bits

1) Quel est la capacité mémoire maximale que ce microprocesseur peut adresser ?

2) Quel est la capacité mémoire de la ROM ? 3) Quel est la capacité mémoire de l’EEPROM donnée utilisée ?

Exercice: Le schéma suivant décrit un exemple d’un système à base de microprocesseur qui est constitué d’un microprocesseur RAM, ROM, et des entrées sorties :

Exercice 1) quel est la capacité mémoire maximale que ce microprocesseur peut adresser ? 2) Quel est la capacité mémoire de la RAM utilisée ? 3) Quel est la capacité mémoire de la ROM utilisée ? 4) déterminer la plage d’adresse pour chaque composant en binaire et en hexa. 5) faire un plan d’adressage mémoire.

Généralité sur le Microcontrôleur 6. Structure des µcs: 6.2 Structure Harvard: utilise deux bus séparés: un pour l'instruction et un autre bus pour les données par exemple: PIC

mémoire de programme

µp

mémoire de données

PIC 16F877 I. Introduction les PICs sont des µcs à jeu d'instruction réduit, ils utilisent une architecture Harvard.

• Les différents familles des PICs: la famille de PICs est subdivisée en 3 grandes familles:  Base-line : utilise des mots d'instructions de 12 bits  Mid-Range: utilise des mots d'instructions de 14 bits  High-End : utilise des mots d'instructions de 16 bits

Identification d'une PIC: Une référence de µc Microchip est toujours de la forme

NN(L) MM xxxx-yy avec: • NN: désigne la famille à laquelle appartient le circuit (12,14,16,18) par exemple: 16(L) MM xxxx-yy => 16 indique un ¨PIC Mid-Range • L: indique que le PIC peut fonctionner avec une tension minimum 2V, l'absence de la lettre L indique que le PIC fonctionne uniquement dans la plage de tension qui s'etend de 4volts à 5V • MM: indique le type de mémoire de programme on trouve C: EPROM CR: ROM F: Flash • xxxx: la réference du circuit dans la famille • yy: représente la fréquence d'horloge maximale que le PIC peut recevoir

II.Architecture interne du PIC 16F877

Les registres: STATUS : c'est le registre d'état d’un µc

IRP: permet de sélectionner des page en adressage indirect RP1 et RP0 :permettent la sélection des pages en adressage direct TO et PD: bit en lecture seulement (les indicateurs de reset) Z: zéro DC: retenue sur le 4 eme bit des poids faible C: retenue FSR: contient l'adresse d'un autre registre INDF: utilise le contenu FSR pour l'accés indirect à la mémoire

PIC16F877 III. organisation mémoire: la structure Harvard des PICs fournit un accés séparé à chacune. il faut considérer deux plans mémoire l'un pour les instructions et l'autre pour les

données ainsi que les registres internes.

III.1 Plan mémoire pour les instructions (code programme)

III.1 Plan mémoire pour les instructions (code programme)  le plan mémoire est linéaire les adresses vont de 0000H à1FFFH (8Kmots de 14bits)  l'adresse 0000H : contient le vecteur du reset

 la pile contient 8 niveaux: ce sont utilisées lors d'appels de sous programmes

III.2 Plan mémoire pour les données et les registres internes

III.2 Plan mémoire pour les données et les registres internes l'espace mémoire adressable est de 512 positions de 1 octet chacune:  96 position sont réservées au SFR qui sont les registres de configuration du PIC  368 position restante constituent la RAM utilisateur

IV. Accès à la RAM: 1) adressage direct : avec ce mode d'adressage , on prècise dans l'instruction la valeur de l'adresse à laquelle on veut accéder . exemple: movwf 70h

; permet de copie l'accumulateur w dans ; la case mémoire d'adresse 70h

NB: RP0 et RP1 doivent être positionnés correctement avant toute instruction qui accède à la RAM par l'adressage direct

RP1

RP0

0

0

Bank0

0

1

Bank1

1

0

Bank2

1

1

Bank3

Exercice: donner les étapes qui copie 34 dans la position 110h 12 dans la position 20h

'a' dans la position A0h 70 dans la position 190h

2) adressage indirect : dans l'adressage indirect on passe toujours par un registre virtuel (INDF) dont l'adresse est contenue dans le registre FSR et le bit IRP du registre STATUS. NB: le bit IRP doit être positionné correctement avant toute instruction qui accèder à la RAM par l'adressage indirect

IRP 0

Bank 0/1

1

Bank 2/3

Exemple: copier la valeur 3 dans l'adresse 100h BSF STATUS,IRP Movlw 100h Movwf FSR Movlw 3 Movwf INDF

Exercice : Donner les étapes qui copie l'alphabet dans la RAM à partir de la position 190h.

V.les instructions 1)les types des instructions: les instructions sont codées sur 14 bits a) les instructions ''orientées octet'':sont des instruction qui manipulent un octet se trouvant dans la RAM . elles sont codées de la manière suivante: 13

op

8 7 6 opcode

d

0 F

avec: d : le paramétre de destination si d=0 ou w =>le résultat de l'opération sera placé dans l'accumulateur w si d=1 ou F =>le résultat de l'opération sera placé dans le registre précisé par F

b) les instructions ''orientées bits'': sont des instructions destinées à manipuler des bits d'un registre (SFR ou GPR). elles sont codées de la manière suivante: 13

10 9

7 6

0

bb

opcode

F

avec : b :position du bit F: adresse du registre GPR ou le nom du registre NB: on a le registre F 7

6

5

4

3

2

1

F:

On compte à partir de zéro en commençant à droite

0

c) Les instructions opérant sur une constante: sont les instructions entre l'accumulateur w et une constante 13

87

0

opcode

k

avec k: constante d) les instructions de saut et appel de procédure: sont des instructions qui permettent de sauter à une autre position dans le programme et de continue l'exécution du programme à partir de cette position 13

10 opcode

avec L: étiquette de l'adresse (11bits)

0

L

2) le jeu d'instructions: a) les instructions de déplacement:

• movwf: permet de copier l'accumulateur w dans un registre syntaxe: movwf F • movf: permet de copier le contenu d'un registre dans l'accumulateur w le paramètre d doit être égale 0 syntaxe: movf F,d => modifier le bit d'état Z • movlw : permet de charger une constante dans l'accumulateur w syntaxe: movlw valeur

b) Instructions arithmétiques • L'addition; modifié les trois bits d'état [C,DC,Z] syntaxe: addlw val ; val+[w] -> w addwf f,d

; [f] +[w] -> w si d=0 ; [f] +[w] -> f si d=1 la notation [x] signifie le contenu de x

• Soustraction: modifié les trois bits d'état [C,DC,Z] syntaxe: sublw val ; val - [w] -> w subwf f,0 ; [f] -[w] -> w subwf f,1 ; [f] -[w] -> f c) instruction sur les bits • bsf: permet de forcer un bit d'un emplacement mémoire à 1 Syntaxe: bsf f,b • bcf: permet de forcer un bit d'un emplacement mémoire à 0 Syntaxe: bcf f,b

#include bsf STATUS,RP1 bcf STATUS,RP0 MOVLW D'35' MOVWF 0X110 bcf STATUS,RP1 bcf STATUS,RP0 MOVLW D'10' MOVWF 0X20 bcf STATUS,RP1 bsf STATUS,RP0 MOVLW 'a' MOVWF 0Xa0 bsf STATUS,RP1 bsf STATUS,RP0 MOVLW D'70' MOVWF 0X190 end

• btfsc et btfss: permettent de tester un bit et de sauter ou non une ligne de programme en fonction de la valeur du bit syntaxe: btfsc reg,b ; tester le bit b du registre reg et saute l'instruction suivante si le bit testé est nul btfss reg,b ;tester le bit b du registre reg et saute l'instruction suivante si le bit testé est égal à 1 exemple: btfsc STATUS,Z d) Les instructions Incfsz et decfsz: ces instructions permettre d'incrémenter ou de décrémenter un registre et de sauter si le résultat est nul. syntaxe: incfsz reg,f ; [reg]+1 et sauter une ligne si le résultat égal 0 sinon éxécuter l'instruction suivante decfsz reg,f ; [reg]-1 et sauter une ligne si le résultat égal 0 sinon éxécuter l'instruction suivante exemple: decfsz 70h,f movwf 71h movwf 72h

e) l'instruction goto: permet de transférer l'éxécution à une autre position du programme repérée par une étiquette par exemple: movf STATUS,w goto ici1 ici2 movwf 70h ici1 goto ici2 f) incémentation / décrémentation: [z] incf reg,d

; [reg]+1 -> reg si d=1 ou f ; [reg]+1 -> w si d=0 ou w

decf reg,d

; [reg]-1

Exercice 1: Donner le programme qui : •

Fait l’addition suivante :[20h]+[110h] avec le résultat dans A0h



Comparer les contenus des cases mémoire 6Fh et A0h, s’il son égaux mettre à zéro tous les bits

de la case 16Fh sinon mettre à 1 tous les bits de la case 1EFh. •

Soustrait le contenu de la case mémoire 110h de l’accumulateur w avec le résultat dans 6Fh

Exercice 2: Donner le programme qui copie l'alphabet dans la RAM à partir de la position 190h.

f) les instructions de rotation et de permutation: • Rotation : les rotation à droite ou à gauche se font à travers le carry C syntaxe:

RRF reg,d

;rotation à droite de [reg]

RLF reg ,d

; rotation à gauche de [reg]

exemple 1: bsf STATUS,c movlw B'10010111' movwf 0X6F RLF 0X6F,f

; rotation à gauche de [6F] c

b7

b6

b5

b4

b3

b2

b1

b0

6F

1

1

0

0

1

0

1

1

1

RLF

1

0

0

1

0

1

1

1

1

NB: l'opération de rotation vers la gauche effectue l'opération suivante: le bit de carry est mémorisé. Ensuite chaque bit de l'octet est déplacé vers la gauche. l'ancien bit sort de l'octet par la gauche, et devient le nouveau carry le nouveau bit 0 devient l'ancien carry

exemple 2: bsf STATUS,c movlw B'00010110' movwf 20h RRF 20h,0 c

b7

b6

b5

b4

b3

b2

b1

b0

20

1

0

0

0

1

0

1

1

0

RLF

0

1

0

0

0

1

0

1

1

• Permutation : opération inverse le demi-octet de poids faible avec celui de poids fort. Syntaxe: swapf f,d exemple: movlw 0xc5 ;charger 0xc5 dans w movwf 0x5F ; placer [w] dans l'adresse 5F swapf 0x5F,f ; [5F]= 5c

Ecrire le programme qui : • Remplit les 80 premières positions de la RAM utilisateur par les nombres allant de 1 à 80 • Recopier le contenu de la zone mémoire [20h,2Fh] dans la zone [160h,16Fh]

• permet de multiplier par 2 le contenu des cases mémoire (RAM) comprises entre 160h et 16F (indication : un décalage logique à gauche équivalent à une multiplication par 2).

g) l'instruction Call: permet d'appeler une fonction. une fonction est un sous programme écrit à la suite du programme principal. programme principal instruction1 instruction2 instruction3 CALL tempo instruction5 instruction6 Fonction tempo instruction instruction instruction instruction return ou retlw k

NB : • return: retour de sous programme • retlw k: retour de sous programme avec k dans w

 Pointer un tableau en mémoire programme: •

les registres utilisés : w et PCL (poids faible du compteur programme)



les étapes qui permet de pointer un tableau :

étape 1: placer le numéro de la ligne du tableau dans le programme principale (Movf ind,w) étape 2: appel du sous programme call tableau

étape 3: on ajoute au compteur programme le contenu de w addwf PCL,f, ce qui permet de sauter à la ligne qui nous intéressons. étape 4: ecrire le tableau sous forme de retlw exemple: movf index,w call tableau

tableau retlw 'A' ; premier élèment =0 retlw 'z' ; : retlw 225 Exercice :

ecrire un programme qui permet de pointer un tableau 7segment dans la mémoire programme et copier son contenu à partir de l'adresse 20h



les instructions des opérations logiques:(modifié le bit z)

 et logique :

andwf reg,d andlw val 

complèment : comf reg,d

 ou logique : iorwf reg,d

iorlw val  ou exclusif : xorwf reg,d xorlw val exemple : movlw FFh

movwf 70h comf 70h, f andwf 70h,f iorwf 70h,f xorwf 70h,w •

les autres instructions

 clrf f : [f] = 00h  clrw : [w]= 00h  nop : no opération

Remarque:

Toutes les instructions sont excutées en un cycle d'instruction (càd le temps nécessaires à l'éxècution d'une instruction) , à part les instructions de saut ( par exemple: call, goto) qui sont exécutées en 2 cycles d'instructions.

l ' hor log e d ' instruction  avec

f osc

f osc 4

la fréquence d'horloge

Exemple : soit la fréquence d'horloge est de 4MHz • calculer l'horloge d'instruction • calculer la durée d'exècution d'une instruction standard

VI.les ports d'entrée/sortie du PIC 16F877 Le µc dispose de 5 ports d'e/s parallèles (A,B,C,D,E) tous les ports sont pilotées par deux registres:

• PORTx: recopiant les états logiques de chaque broche de port (par exemple PORTA) • TRISX : détermine si le PORTx ou certaines lignes de port sont en entrée ou en sorties (par exemple: TRISB)

si bit i de trisx=0 -> bit i de portx configuré en sortie si bit i de trisx=1 -> bit i de portx configuré en entrée NB: au reset toutes les lignes de ports sont configurées en entrées

1) PORTA: est un port de 6 bits •

Fonctionnement des broches RA0,RA1,RA2,RA3,RA5

 E/S numérique  Entrées analogiques NB: au reset, ces e/s sont configurées en entrées analogique, pour les utiliser en e/s numérique,il faut écrire 6h dans le registre ADCON1 •

Fonctionnement de la broche RA4:

 E/S numérique  Entrée horloge pour le TIMR0 NB: RA4 est une E/S à drain ouvert pour l'utiliser comme sortie logique, il faut mettre une résistance externe vers VDD VDD

PIC

R RA4

Led

K

Le principe d'une sortie drain ouvert • si RA4=0 => k est fermé => la sortie est reliée à la masse • si RA4=1 => k est ouvert => la sortie sera déconnectée , s'il n'y a pas la résistance de tirage qui place la sortie au niveau haut

2) PORTB: est un port de 8bits •

Fonctionnement:

 E/S numériques  toutes les entrées du portB peuvent d‘être pourvues de résistances de tirage validées par le bit RBPU =0 du registre OPTION_Reg 3) PORTC: est un port de 8bits •

Fonctionnement:

 E/S numériques  broches d'accès à différents modules (Timer1,CCP1/2,Timer2,I2C,Portsérie)

4) PORTD: est un port de 8bits  E/S numériques  mode parallel slave port (PSP) Le fonctionnement de ce port dépend de la valeur qui est placée dans le bit 4 de TRISE si TRISE,4= 0 =>PORTD en mode normal si TRISE,4= 1 =>PORTD en mode PSP, c’est-à-dire le microcontrôleur peut être interfacé avec un

autre microprocesseur. Dans ce cas le PORTD représente le bus de données et le PORTE les signaux de contrôle(RE, WE et CS) 5) PORTE : est un port de 3 bits Au reset: les 3 bits de PORTE sont configurées en entrées analogiques Fonctionnement: • E/S numérique (6h->ADCON1) • Entrés analogiques du CAN • si TRISE,4=1 => les trois broches deviennent les entrées de control.

Exercice Ecrire un programme qui permet d'allumer LED branchée sur RB2 lorsque nous perssons le bouton poussoir sur la broche RB1, et l'éteint lorsque nous le relâchons (NB: RB1 passe à 0 quand on appuie)

Remarque: pour réaliser la temporisation, il faut initialiser une variable à une valeur donnée puis décrémenter en boucle jusqu'à ce qu'elle atteint zéro. • Temporisation avec une boucle Exemple: movlw N1 ; initialiser compteur movwf compt1 ; prend 1cycle ici decfsz compt1,f ; prend 1cycle si elle ne saute pas et 2 cycles quand elle saute goto ici ; prend 2 cycle Nombre de cycle= 1+1+(N1-1)(1+2)+2 = 3N1+1 cycles la valeur max que l'on peut donner à N1=256 ce qui donne une temporisation max de 769 cycles Exemple : soit la fréquence de l'oscillation est de 4MHz 1cycle ---> 1µs ce qui donne une temporisation max de 769 µs NB1: pour faciliter l'utilisation de cette temporisation on va l'utiliser comme une fonction que l'appellera tempo1. Il faut ajouter 2 cycles pour l'instruction call tempo1 et 2 cycles pour l'instruction return T=773µs (fosc=4MHz)

• Temporisation avec 2 boucles imbriquées La boucle intérieur (N1) se fait toujours 256 fois la boucle extérieur se fait N2 fois tempo2 movlw N1 ;1cycle movwf compt1 ;1cycle movlw N2 ;1cycle movwf compt2 ;1cycle t2 decfsz compt1,f goto t2 ; N2((1+2)(N1-1)+2) decfsz compt2,f goto t2 ;(1+2)(N2-1)+2 return ; 2cycles

Nombre de cycle= 5+770N2 avec N1=256 le maximum est obtenu pour N2=256 Nombre de cycle= 197125 cycles pour Fosc=4MHz T =197125µs=0,19s

• Temporisation avec 3 boucles imbriquées: les boucles intérieurs (N1 et N2) se font toujours 256 fois, la boucle extérieur se fait N3 fois tempo3 movlw N1 movwf compt1 movlw N2 movwf compt2 movlw N3 movwf compt3 t3 decfsz compt1,f goto t3 ;(((2+1)(N1-1)+2)N2) N3 decfsz compt2,f goto t3 ;((2+1)(N2-1)+2)N3 decfsz compt3,f goto t3 ;(2+1)(N3-1)+2 return Le nombre de cycle: Ncycle=7+197122N3 avec N1=N2=256 le maximum est obtenu pour N3=256 T=50463236µs=50,46s

Exercice: Soit la fréquence de l'oscillation est de 4MHz, écrire un programme qui permet de clignoter une LED branchée sur RA1, avec une temporisation voisin de 0,5s Exercice Soit la fréquence de l'oscillation est de 20MHz,écrire un programme qui permet de réaliser le jeu de lumière suivant, avec les leds connectées sur le port B, avec une temporisation voisine de 0,5s entre deux séquences successives :

V. les mémoires permanents: la mémoire EEPROM de données: le pic 16F877 dispose de 256 octets de mémoire EEPROM de donnée. son implantation physique commence à la position d'adresse absolue 2100h 1) Les registres utilisées: EEADR : registre d'adresse EEDATA: registre de donnée EECON1: 1ere registre de contrôle EECON2: 2eme registre de contrôle  EECON1: EEPGD

• •

• • •

6 --

--

--

WRERR

WREN

WR

RD

EEPGD: accés à la mémoire EEPROM où à la mémoire programme 0:EEPROM de données 1: Mémoire programme (flash) WRERR: erreur d'écriture (indicateur) 0: pas d'erreur 1: une erreur s'est produit WREN : validation de l'écriture dans L'EEPROM 0:écriture interdite 1: écriture autorisée WR=1 pour démarrer l'écriture , il est remis à zéro automatiquement à la fin de l'écriture RD=1 pour démarrer la lecture, il est remis à zéro automatiquement à la fin de la lecture

2) procédure de lecture dans l'EEPROM:

    

Mettre le bit EEPGD à 0 Placer l'adresse de la position à lire dans EEADR Mettre le bit RD à 1 Traiter la donnée disponible dans EEDATA Recommence au étape 2 si on a d'autre données à lire NB: pour déclarer des donnés qui seront stockée dans l'EEPROM de donnée au moment de l'implantation du programme sur le PIC org 0X2100 DE '' BONJOUR'' , 22, 'z'

Exercice: programme qui utilise la directive DE pour initialiser les premières positions de l'EEPROM de données avec la chaine '' BONJOUR'' , le programme doit ensuite lire ces caractères ( 1 par 1) dans l'EEPROM et les copier dans la RAM à partir de la position 0x150

3) procédure d'écriture dans l'EEPROM • mettre le bit EEPG à 0 • positionner le bit WREN pour valider l'écriture dans l'EEPROM • placer l'adresse dans EEADR • placer la donnée à écrire dans EEDATA • interdire les interruptions càd mettre le bit GIE de registre INTCON • écrire 55h dans EECON2 • écrire AAh dans EECON2 • positionner le bit WR • autoriser les interruptions • attendre la fin d'écriture en surveillant le bit WR ou le drapeau EEIF • recommencer au point 3 si on a d'autre donnée à écrire • remettre à zéro le bit WREN

Exercice: ecrire un programme qui initialise les 26 premières positions de l'EEPROM de données avec les lettres de l'alphabet

Exercice : Ecrire un programme qui permet d’afficher un compteur de 0 à 9 sur un afficheur 7segment,selon le fonctionnement suivant: • On branche un bouton poussoir sur la broche RA4 de sorte que celle-ci passe à 0 quand on appuie • On branche un afficheur 7segment cathode commune sur le port C. • Chaque fois qu’on appuie sur le bouton poussoir, le contenu de l’afficheur doit s’incrémenter. Exercice : Écrire un programme qui utilise  la directive DE pour initialiser les première positions de l’EEPROM de donnée avec la chaîne «Bonne journée »,  le programme doit ensuite lire ces caractères (octet par octet) dans l’EEPROM,  copier dans la RAM à partir de la position 120h,  pour chaque fin d’écriture la LED branché sur RE0 va clignoter 3 fois.

Exercice : Ecrire un programme qui permet la gestion de 2 feux d’un carrefour selon le cahier de charge suivant:  Feu tricolore sur port C  Pour la voie 1 : feu rouge bit 0, orange bit 1 et vert bit 2.  Pour la voie 2 : feu rouge bit 5, orange bit 6 et vert bit7. Fonctionnement :  Allumer le feu rouge 1 et le feu vert 2  Allumer le feu rouge 1 et le feu orange 2  Allumer le feu vert 1 et le feu rouge 2  Allumer le feu orange 1 et le feu rouge 2  Les feux Rouge, vert et orange doivent être allumés respectivement pendant 36s, 32s et 4s.