WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Etude et application de microcontroleur 16f84

( Télécharger le fichier original )
par Mustapha BOUZIANE
Université de Mascara, Algérie - Génie électrique et électronique 2007
  

précédent sommaire

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Annexe

1) les instructions

Mnémonique

Instruction sur les registres (octets)

Bits modifiés

ADDWF f,d

d:=w+f ; ajoute w au contenu de f

C,DC,Z

ANDWF f,d

d:=w AND f ; ET entre w et f

Z

CLRF f

F:=0 ; met à 0 f

Z

CLRW

w:=0 ; met à 0 w

Z

COMF f,d

D:=NOT(f) ; complémente f

Z

DECF f,d

d:=f - 1 ; décrémente f

Z

DECFSZ f,d

d:=f - 1 ; décrémente f et saut si le résultat =0

-

INCF f,d

d:=f +1 ; incrémente f

Z

INCFSZ f,d

d:=f +1 ; incrémente f et saut si le résultat =d

-

IORWF f,d

d:=w OR f ; OU entre w et f résultat dans d

Z

MOVF f,d

d:=f ; change le contenu de f dans d

Z

MOVWF f

f:=w ; sauve w dans f (direct)

-

NOP

n'effectue aucune opération

-

RLF f,d

d=f SHL 1; rotation à gauche avec la retenue

C

RRF f,d

d=f SHL 1; rotation à droite avec la retenue

C

SUBWF f,d

d:= f - w ; soustrait W de f (direct)

C,DC,Z

SWAPF f,d

d:=f[4..7]< - - >f[0..3]; inverse les quartets

-

XORWF f,d

d:=wXORf ; OU exclusif entre w et f .

Z

 

Instruction sur les registres (bit par bit)

 

BCF f,d

f[b]:=0 ; met à 0 le bit b de f

-

BSF f,d

f[b]:=1 ; met à 1 le bit b de f

-

BTFSC f,d

teste le bit b de f ; saut si le bit est à 0

-

BTFSS f,d

teste le bit b de f ; saut si le bit est à 1

-

 

Instruction de contrôle et branchement

 

ADDLW k

W:=w+k;ajoute k à w

C,DC,Z

ANDLw k

W:=w AND k ; ET entre w et k

Z

CALL k

Appel un sous programme

-

CLRwDT

Remet à 0 le compteur du chien de garde

TO,PD

GOTO k

Se branche à l'adresse k

-

IORLw k

w:=w OR k ; OU entre w et k

Z

MOVLw k

w:=k ; charge k dans w

-

RETFIE

Retour d'interruption

-

RETLw k

w:=k, puis effectue un retour de sous programme

-

RETURN

effectue un retour de sous programme

-

SLEEP

Place le circuit en mode sommeil et stoppe 'oscillateur

TO,PD

SUBw k

w:= k - w ; soustrait w de k

C,DC,Z

XORLw k

w:=w XOR k ; OU exclusif entre w et k

Z

F: adresse 7 bits k: valeur immediate 8 bits ( 0 à 127) TO: Time Out

PD: Power Down C: Carry (retenue) DC: Demi carry d = 0, destination w,f

2) Le programme :

; Application avec un PIC : SOYEZ LES BIENVENUS

; 2X16 caractères
;Titre :Soyez les bienvenus

;Date : 06 mai 2007

; Auteur : B.B

; PIC utilisé : PIC 16F84A

; Ce montage d'initiation à base de PIC 16F84 permet de gérer ;un afficheur de deux fois 16 caractères à accès parallèle .

;dans ce montage on affichera un message dès que l'interrupteur ;marche - arrêt sera actionné .

; configuration :

;les broches rb0 à rb7 sont configurées en sortie elles pilotent ;les broches DB0 à DB7 de l'afficheur .

;les broches RA0 à RA3 sont en sortie la broche RA2 pilote ;la broche RS de l'afficheur

;la broche RA4 est en entrée elle est connectée à l'interrupteur ;marche - arrêt .

; Directive d'assemblage pour MPLAB

list p = 16f84A

#include p16f84A.inc

_configH3FF9

; Définition des constants

#define F 0x01 ;variable F=1

#define inter 0x04 ;inter = 4 (broche RA4 )

#define rs 0x03 ;la broche rs est sur RA3

#define e 0x02 ;la broche e est sur RA2

; Définition des registres temporaires

retard1 EQU 0x0C ;le registre temporaire retard1

;pour la temporisation

retard2 EQU 0x0D ;le registre temporaire retard2

;pour la temporisation ; Numéro de version

org h'2100'

de "Soyez les bienvenus ver 1.0 06/05/07"

; Programme principal

ORG 0

; Programme d'init

bsf STATUS,5 ;on met à 1 le 5eme bit du registre status

;pour accéder à la 2eme page mémoire

; ( pour trisa et trisb )

MOVLW B'00000000' ; rb0 - rb7 en sortie

MOVWF TRISB ;on met 00 dans le port b il est programmé

; en sortie

;en sortie ra4 en entrée

bcf STATUS,5 ;on remet à 0 le 5eme bit du registre

;status pour accéder à la 1ere page mémoire

clrf PORTA

clrf PORTB

call top_h ;impulsion d'horloge

; Configuration de l'afficheur
;mode de fonctionnement 8 bits de données

init

bsf PORTA,e ;le bit e est mis à 1

bcf PORTA,rs ;la broche rs de l'afficheur à 0

;mode commande

MOVLW B'00111000' ;on met 38 dans le registre W

MOVWF PORTB ;accès 8 bites , 2 lignes pour l'afficheur

Call top_h

MOVLW B'00000001' ;on met 01 dans le registre W

MOVWF PORTB ;reset l'afficheur (clear display )
Call top_h

MOVLW B'00001110' ;on met 0E dans le register W

MOVWF PORTB ;display 'on' et cursor 'on'

Call top_h ;impulsion d'horloge

MOVLW B'00000110' ;on met 06 dans le register W

MOVWF PORTB ;incrémentation du curseur vers la droite

Call top_h ;impulsion d'horloge

MOVLW B'10000101' ;on met la dd ram à l'adresse 05

MOVWF PORTB ;le curseur clignote à la lere rangée digit 6

Call top_h ;impulsion d'horloge

bsf PORTA,rs ;on repasse la broche rs de l'afficheur à 1

;pour le fonctionnement normal en data ; Attente de l'appui sur l'inter
debut

btfsc PORTA,inter ;interrupteur marche - arrêt appuyé ?

;si oui on va à l'étiquette affiche 1

goto affiche

GOTO debut

; top d'horloge

top_h

call tempo ;on appel le sous-programme de

;temporisation

bcf PORTA,e ;le bit e est mis à 0

call tempo

bsf PORTA,e ;le bit e est mis à 1

return

; Temporisation courte T1

tempo

MOVLW 0x75 ;on met 75 dans le registre W

MOVWF retard1 ;on met W dans le registre retard1

MOVWF retard2 ;on met W dans le registre retard2

attente

DECFSZ retard],F ;on décrémente retard] et on saute

;la prochaine instruction si

GOTO attente ;le registre retard] = 0 sinon retour à

;l'étiquette 'attente'

movlw 0x90 ;on recharge retard] avec 90

movwf retard]

DECFSZ retard2,F ;on décrémente retard2 et on saute

;la prochaine instruction si

GOTO attente ;le registre retard2 = 0 sinon retour à

;l'étiquette 'attente'

RETURN ; retour au programme principal après

;l'instruction CALL

affiche

; Envoie du message sur l'afficheur

;le message est envoyé caractère par caractère

; 'SOYEZ LES BIENVENUS'

bsf PORTA,0 ;on allume la led connectée sur RA0

MOVLW 'S' ;on met le caractère 'S' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h ;impulsion d'horloge

MOVLW 'O' ;on met le caractère 'O' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW 'y' ;on met le caractère 'y' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW 'E' ;on met le caractère 'E' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW 'Z' ;on met le caractère 'Z' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW ' ` ;on met le caractère ' ' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

;saut sur la 2eme rangée

bcf PORTA,rs ;on repasse la broche rs de l'afficheur à 0

;pour envoyer une commande

MOVLW B'0]00000]' ;on met la dd ram à l'adresse 4]

MOVWF PORTB ;le curseur se trouve donc sur la 2eme

;rangée digit 2

call top_h

bsf PORTA,rs ;on repasse la broche rs de l'afficheur à 1

;pour le fonctionnement normal en data

MOVLW 'L' ;on met le caractère 'L' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW 'E' ;on met le caractère 'E' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW 'S' ;on met le caractère 'S' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW ' ' ;on met le caractère ' ' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW 'B' ;on met le caractère 'B' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW 'I' ;on met le caractère 'I' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW 'E' ;on met le caractère 'E' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW 'N' ;on met le caractère 'N' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW 'V' ;on met le caractère 'v' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW 'E' ;on met le caractère 'E ' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW 'N' ;on met le caractère 'N ' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW 'U' ;on met le caractère 'U' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

MOVLW 'S' ;on met le caractère 'S ' dans le registre W

MOVWF PORTB ;on transfert le contenu du registre W sur

;le port B ( vers l'afficheur )

call top_h

boucle

btfsc PORTA,inter ;interrupteur marche - arrêt appuyé ?

;si oui on va à l'étiquette boucle

goto boucle

bcf PORTA,0 ;on éteint la led

GOTO init ;on retourne à l'init de l'afficheur

END

3) Pour débuter avec MPLAB

- MPLAB est un outil fournit gratuitement par la société Microchip, Dans un premier temps si vous ne possédez pas le logiciel connecter vous sur www.microchip.com afin de le télécharger.

- Dans cette page vous trouverez les vues d'écran vous permettant de créer une application

- Attention selon les versions de MPLAB certains écrans risquent de changer

1 - Creation d 'une application

· Vous avez téléchargez MPLAB, Lancer MPLAB.exe vous visualisez alors cet écran :

· Dans le menu project cliquez sur new project et donnez un nom à votre future application ( dans l ' exemple essai.pjt ) puis cliquez sur "OK"


· Une fois le nom donné cet écran apparaît, vous devez sélectionner 'éditeur' et le pic sur lequel vous travaillez dans l ' exemple "Editor Only" et "PIC 16F84A" , pour changer de micro contrôleur cliquez sur le bouton Change... et choisissez votre option.

· Cliquez ensuite sur le nom dans la fenêtre du bas ( dans l 'exemple essai.hex ) puis cliquez sur "Node Properties"

· Cet écran apparaît sélectionnez les options indiquées ci-dessous et cliquez sur le bouton "OK"


· En validant , vous revenez alors à l ' écran précédent, cliquez alors sur le bouton "Add Node..." et indiquez le nom du fichier assembleur que vous allez créez ( dans l ' exemple 'essai.asm' ) puis validez avec "OK".

· Vous devez alors avoir cet écran :

· Cliquez sur le bouton "OK vous revenez alors au premier écran. Cliquez sur "file" puis new, une fenêtre vous permet alors de commencer à tapez votre source en assembleur :


· Une fois votre source tapez cliquez sur 'file' et 'save as' et entrez le nom de votre fichier source dans notre exemple se sera 'essai.asm'

· Il vous reste maintenant à compiler votre source afin de créer un fichier 'hex' que vous pourrez télécharger dans la mémoire du pic. Pour se faire cliquez dans le menu "Project' puis "Make project" vous obtenez alors l ' écran suivant :

· Si tout est ok c 'est à dire qu 'il y a aucune erreur de syntaxe vous obtenez l ' écran suivant :


· La compilation est terminée , le fichier "essai.hex" dans notre exemple est disponible dans le répertoire de MPLAB. Si vous possédez un logiciel de programmation tel que ICPROG.EXE par exemple cliquez sur "ouvrir" puis sélectionnez votre fichier "essai.hex" afin de le transférer vers la mémoire du PIC à programmer.


· Dans le cas ou il y a des erreurs le logiciel MPLAB vous indique la ligne à laquelle se trouve l'erreur de syntaxe.

4) Le logiciel ICPROG :

- Un logiciel qui assure le transfert des données, entre l'ordinateur et le microcontrôleur.

Lancer le logiciel ICPROG vous visualisez alors cet écran :

Dans le menu settings cliquez sur" hardware "et choser votre com , votre PIC et votre oscillateur . Pour efface la mémoire du PIC cliquez sur "Erase All " , et pour programmer le PIC cliquez sur "Program All ".

[1] : La programmation des PICs . BIGONOFF Révision 6 ; Edition : [2001].

[2] : Apprendre la programmation des PICs . PASCAL MAYEUX DUNOD ; Edition : [2002].

[3] : Les microcontrôleurs PIC . BERNARD BÉGHYN HERMES-SCIENCE ; Edition : [2003].

Les sites :

- membres . lycos . fr / Pmonphe / Chapitre / PIC 16F84. - www . microchip .com

- www.pay.may.chez-alice.fr

tous les composants électroniques utilisés disponibles chez:

ADC Electronique rue mostaganem ORAN tél : 041291515 / 041292626

TELECT2000 07 bouleverd emir abdelkader SIDI BEL ABBES

Tél : 048549016

:ÉÈáØáÇ ????

Éã?Ç åÐ

??? ???? æ

ÚÇäáÇ ãáÚáÇ ???

???? ?? íáÅ

ÉÇÏã ÉÑßÐãáÇ åÐ

??? ÁÇÚÏáÇ ???? ìäãÊäæ ??????? ??? ????? ?? ÁÇØÎ ??? íæÊÍÊ ÏÞæ

précédent sommaire






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"La première panacée d'une nation mal gouvernée est l'inflation monétaire, la seconde, c'est la guerre. Tous deux apportent une prospérité temporaire, tous deux apportent une ruine permanente. Mais tous deux sont le refuge des opportunistes politiques et économiques"   Hemingway