Vous êtes sur la page 1sur 32

Page 1

PROJET DE FIN DETUDES


DEPARTEMENT DE PHYSI QUE
PARCOURS : ELECTRONIQUE ET
INFORMATIQUE INDUSTRIELE


Prsent par : Encadr par :
*Ben dlala Aly *M. ELHAKIKI Mohamed
*Mohamed ouzouiz
*Ait malouk lahcen
*Darija soufian

Conception et ralisation dune serrure
code sur quatre chiffres
Page 2

REMERCI EMENT

Il nous est agrable de nous acquitter dune dette de reconnaissance auprs de
toutes les personnes, dont lintervention au cours de ce projet, a favoris son
aboutissement.

Nous tenons, avant tout, dexprimer nos vifs et profonds remerciements M.
MOHMED HAKIKI, notre encadrant pour Ses irremplaables conseils qui nous ont
permis de conduire le travail bien.
Merci infiniment nos enseignants du dpartement de physique, ainsi quaux
membres du jury pour avoir accept de juger notre travail.
Enfin, nous remercions tous ceux qui sont particip de prs ou de loin llaboration de ce
modeste travail dont nous navons pas cit les noms.
















Page 3



INTRODUCTION
Dans notre projet on va concevoir et raliser une serrure code sur 4 chiffres
base dun microcontrleur 16F84A.
En premier lieu, ce modle possdant une mmoire EEPROM effaable
lectriquement simpose comme la solution idale pour ceux qui veulent
apprendre utiliser un microcontrleur PIC, du fait quil est reprogrammable
jusqu' plus de 100 fois (selon les spcifications du fabricant),
Le microcontrleur 16F84A reprsente loutil dapprentissage par
excellence car ltudiant peut tester tous les programmes avec le mme
microcontrleur et revenir sur les serrures, les corriger et rapidement r-tester
lapplication.
De plus la capacit mmoire de ce modle (ni trop petit ni trop gronde) le
prdestine comme le compromis idal non seulement pour lauto-apprentissage,
mais aussi pour les premiers applications personnels que chacun aura envie
dinventer.
Cest pourquoi ce modest travail sadresse tout particulirement qui veut
vraiment savoir lun des applications de microcontrleur 16F84A.


CHAPITRE I : INTRODUCTION AUX MICROCONTROLEURS

Page 4

1 .Introduction
Le Microcontrleur est un Circuit programmable capable dexcuter un programme et
qui possde des circuits dinterface intgrs avec le monde extrieur.
Les microcontrleurs sont apparus :
Quand on a sut les fabriquer, cest dire quand les technologies dintgrations ont
suffisamment progresses
Quand dans les applications domestiques ou industrielles ont avait besoin de
systmes intelligents ou tout au moins programmables.
Les microcontrleurs sont frquemment utiliss dans les systmes embarqus, comme les
contrleurs des moteurs automobiles, les tlcommandes, les appareils de bureau,
l'lectromnager, la tlphonie mobile, etc.
Quand utiliser un microcontrleur ?
Toutes les solutions base de composants programmables ont pour but de rduire le
nombre de composants sur le circuit lectronique et donc fiabiliser le circuit.
Le microcontrleur est en concurrence avec dautres technologies Suivants les
applications :
Logique cble : trs rapide, fonctions ralises par une voie matrielle non
programmable, peu conomique quand lapplication est complexe peu de
souplesse dure dtudes prohibitives et circuit difficilement modifiable.
Logique programmables : rapide, adapt au traitement de signaux complexes,
prix lev et langage de programmation non standard.
Les microprocesseurs : fonctions sont ralises par voie logicielle puissance
de calcul, langage volu nombre important de composant runir.
Les avantages du microcontrleur :
Diminution de lencombrement du matriel et du circuit imprim
Simplification du trac du circuit imprim
Intgration en technologie MOS, CMOS, ou HCMOS
moins cher que les composants quil remplace
Diminution des cots de main duvre (conception et montage)
Augmentation de la fiabilit du systme

Page 5

2 .Architecture
Le microcontrleur est un driv du microprocesseur. Sa structure est celle des
systmes base de microprocesseurs. Il est donc compos d'une unit centrale de traitement et
de commande, de mmoires et de ports d'entres/sorties.
En plus de cette configuration minimale, les microcontrleurs sont dots d'un ou
plusieurs systmes de comptage (TIMER). Quelques uns sont dots d'un convertisseur
analogique/numrique (CAN) intgr. Ces atouts supplmentaires permettent de nombreuses
applications telles que :
- acquisition et traitement de donnes analogiques (CAN)
- comptage d'vnements (TIMER)
- mesure de frquence ou de priode (TIMER)
- Generation dimpulsions (TIMER)

Un systme minimal programmable pour fonctionner besoin :
dune unit centrale
de mmoires mortes pour le programme (PROM, EPROM,.)
de mmoire vive, pour les calculs, pour stocker les donnes.
de circuits interfaces, pour connecter les priphriques qui vont permettre la
communication avec lextrieur do lapparition des microcontrleurs.
Dans un seul circuit on va trouver :
Une Horloge (oscillateur)
processeur (Unit centrale)
Des interfaces qui vont dpendre du type de microcontrleurs choisi
Page 6

o Compteurs/Trimer
o Convertisseurs Analogiques/numriques (C.A.N.)
o Chine de garde ( Watch Dog )
o Gestion dun port parallle (dentre/sortie)
o Gestion des interruptions
o Gestion dcran LCD
o Etc
Il suffit de choisir le microcontrleur le mieux adapt lapplication que lon doit raliser. !

Les diffrents types de mmoires dans les microcontrleurs
Le prix du microcontrleur dpend fortement du type du mmoire quil contient.
Outre diffrents priphriques possible, les diffrents types de mmoire constituent les
diffrentes gammes de microcontrleurs de mme architecture :
La mmoire RAM (Radom Acces Memory).
C'est une mmoire vive dont le contenu peut varier volont. Le processeur peut y lire ou
y crire des informations. En cas de coupure d'alimentation, son contenu est perdu.
La mmoire ROM (Read Only Memory).
C'est une mmoire morte que l'on peut seulement lire. Elle est programme de faon
dfinitive par le fabricant du systme.
PROM. (Programmable Read Only memory)
La programmation de ce type de mmoires consiste faire claquer des fusibles (qui
sont en fait des jonctions semi-conductrices)
EPROM (Erasable Programmable Read Only Memory) ou UVPROM
Ce sont des mmoires programmables lectriquement et effaable par UV donc
rutilisables. Ncessite une petite fentre en quartz pour laisser passer les UV.
EEPROM (Electrical Erasable Programmable Read Only Memory)
Ce sont des mmoires programmables et effaables lectriquement.
FLASH. Procd beaucoup plus rapide que lors dune exposition UV.

Les entres sorties
Permettent de dialoguer avec l'extrieur du microcontrleur, par exemple pour prendre en
compte l'tat d'un interrupteur (entre logique) ou encore pour commander un relais
Le bus de systme
Lunit centrale doit pouvoir communiquer avec les mmoires et les priphriques.
Page 7

On distingue 3 types de bus :
le bus dadresses
le bus de donnes
le bus de contrle
3 . Les Familles
Actuellement les modles Microchip, sont classs en 3 grandes familles, comportant
chacune plusieurs rfrences. Ces familles sont :
Base-line : les instructions sont codes sur 12 bits.
Mid-line : les instructions sont codes sur 14 bits.
High-End : les instructions sont codes sur 16 bits.
Les microcontrleurs sont aujourd'hui implants dans la plupart des applications grand public
ou professionnelles, il en existe plusieurs familles :
la famille Atmel AVR
le C167 de Siemens/Infineon
la famille Hitachi H8
la famille Intel 8051
la famille des PIC de Microchip
etc
La socit Amricaine Microchip Technologie a mis au point dans les annes 90 un
microcontrleur CMOS (Complmentary Mtal Oxyde Semi-conducteur) : le PIC
(Peripheral Interface Controller). Ce composant encore trs utilis l' heure actuelle, est un
compromis entre simplicit d' emploi, rapidit et prix de revient.

Identification des PIC
s

Un PIC est identifi par un numro de la forme suivant : xxXXyy zz
- xx : Famille du composant (12, 14, 16, 17, 18)
- XX : Type de mmoire de programme
C - EPROM ou EEPROM
CR - PROM
F - FLASH
- yy : Identification
Page 8

- zz : Vitesse maximum du quartz

Exemple :

Il existe de nombreuses versions de PIC possdant chacune des caractristiques diffrentes,
des tableaux comparatifs permettent de choisir le PIC le plus adquat par rapport
l'application envisage( voir le tableau dans lannexe )
4 . Environnement du Programmation
l'origine, les microcontrleurs se programmaient en assembleur, il pose toujours
d'normes problmes pour la maintenance et l'volution des logiciels embarqus. Dsormais,
on utilise de plus en plus des langages de haut niveau, notamment le langage C, capable de
faciliter la programmation de microcontrleurs toujours plus puissants. Ces compilateurs C
prsentent gnralement certaines restrictions lies aux spcificits des microcontrleurs
(mmoire limite, par exemple). Le compilateur GCC peut produire du code pour certains
microcontrleurs. Avec laugmentation de la puissance et de la quantit de mmoire de
stockage (FLASH) disponible dans les microcontrleurs, les programmes de ces derniers
peuvent dsormais tre crits en C++.
Des simulateurs sont disponibles pour certains microcontrleurs, comme l'environnement
MPLAB de Microchip.
Une fois le programme compil, le fichier binaire doit tre envoy au microcontrleur. On
utilise donc un programmateur, pour microcontrleurs et souvent galement dEEPROM.
On parle alors de programmateur universel.


Page 9




CHAPITRE II : CONCEPTION ET SIMULATION DE LA SERRURE CODEE

1 .Introduction
Une serrure lectronique code permet de bloquer laccs une porte, un coffre,
une portire de voiture, aux personnes nayant pas leur connaissance le code
secret permettant louverture. Si les quatre chiffres du code secret sont entrs dans
lordre, le systme technique commande un relais pendant un temps prdfini et une alarme
est active un(dans ce cas 2 seconde). Dans le cas contraire une lampe va claire.
Lusager dispose dun clavier lectronique compos des touches 0 9 et des alphabets de A
D et des touches * et #. Cest partir de ce clavier quil entre le code daccs.
Domaine dapplication
Les serrures lectroniques sont utilises dans plusieurs domaines :
Dans la vie courante :
- Verrouillages des portes et des coffres de voiture
- Verrouillages des portes ordinaires
- Verrouillages de coffre fort
- Ouverture et fermeture de barrire code
- Chambre forte
- Etc.
Dans le domaine professionnel
- Contrle daccs dans les entreprises
- Verrouillages de coffre fort bancaire
- Etc.
Dans le domaine industriel
- Commande de processus code (dmarrer un processus laide dun code)
- Etc.
Dans le domaine aronautique
- Verrouillages des portes des avions
- Escalier roulant code
Page 10

- etc.
2. Principe de fonctionnement
La serrure lectronique ne sert pas seulement bloquer laccs elle peut aussi servir
commander plusieurs dispositif lectroniques. Un code de 4 chiffres est saisi sur le clavier si
le code saisi correspond au code daccs stock en mmoire, la LED verte allum et relais
ouvre laccs pendant un temps de 2 seconde. Dans le cas contraire une LED rouge reste
allume comme indique le schma suivant :

3 .schma synoptique
La structure principale dune serrure lectronique code est compose principalement
dun microcontrleur qui assure la programmation des codes dactivations et de
dsactivations. Il sagit dont de mettre sur pied un systme de commande laide du
microcontrleur. Ce systme aura pour but dactiver des relais pour la commande des
dispositifs lectroniques ou mcanique (porte, coffre-fort...).
Ce systme de commande reprsente le cerveau mme de la serrure lectronique .il est
constitu des parties bien visibles par lutilisateur et dautre qui ne sont pas visible.
Sur le schma suivant nous talons la structure interne dune serrure lectronique classique
avec ses diffrents composants lectronique :
Page 11


4. Unit de traitement (pic16f84)
Ce modle de PIC est un circuit de petite taille, fabriqu par la Socit amricaine Arizona
MICROCHIP Technologies.

Architecture interne
Larchitecture du pic 16F84, commune la majorit des microcontrleurs pic. Le pic
16F84 est un microcontrleur de 8bits darchitecture de type RISC.
RISC de langlais (Reduced Instruction Set Computer), signifie calculateur jeux
dinstruction rduit .





Page 12


Structure externe




Page 13

Ses principales caractristiques sont :
13 lignes dentres/sorties, rparties en un port de 5 lignes (Port A) et un port de 8
lignes (Port B)
Alimentation sous 5 Volts(V
DD
et V
SS
).
architecture interne rvolutionnaire lui confrant une extraordinaire rapidit
une mmoire de programme pouvant contenir 1024 instructions de 14 bits chacune
(allant de ladresse 005 ladresse 3FF)
une mmoire RAM utilisateur de 68 emplacements 8 bits (de ladresse 0C l4F)
une mmoire RAM de 2x12 emplacements rserve aux registres spciaux
une mmoire EEPROM de 64 emplacements
une horloge interne, avec prdiviseur et chien de garde
possibilit dtre programm in-circuit, cest dire sans quil soit ncessaire de le
retirer du support de lapplication
Un vecteur de Reset situ ladresse 000
un vecteur dinterruption, situ ladresse 004
bus dadresses de 13 lignes
prsence dun code de protection permettant den empcher la duplication
facilit de programmation
simplicit.
faible prix.
La mmoire RAM de 68 octet est utilise pour stocker des donnes temporaires.
Baptis registre usage gnral par Microchip, chacune de ces mmoires est
adressable directement. A ce bloc de 68 registre usage gnral, est associ 11
registres internes et lorganisation des adresses est donne par le tableau suivant :
Page 14




5 .Le clavier

Le clavier est un ensemble de boutons, organis en matrice xy. Il ressemble ceci :
Colonne 0 Colonne 1 Colonne 2 Colonne
Ligne 0 1 2 3 A
Ligne 1 4 5 6 B
Ligne 2 7 8 9 C
Ligne 3 * 0 # D

Page 15





Fonctionnement du clavier matriciel xy :
Ce clavier est une matrice de 4 x 4 touches. Les 8 broches (lignes et colonnes) utilises
par le clavier sont tous indpendantes les unes des autres. Il se cre un court circuit entre
deux broches seulement lorsquune touche est enfonce.
Exemple:
- lorsque la touche 5 est enfonce, il y a contact entre la ligne 1 et la colonne 1
- lorsque la touche 1 est enfonce, il y a contact entre la ligne 0 et la colonne 0
- etc
7. Rgulateur
Dans le cas o nous ne possdons pas d'alimentation stabilise, il est possible d'alimenter
le montage avec une pile 9 v suivie par un rgulateur 5 v du type 7805

Page 16

Il permet de fournir un 5V stable partir du 9V de la pile. La patte de gauche est l'entre
9V, la patte du milieu la masse commune et la droite la sortie 5V.
- Ce modle tient 500mA.
- Facilit d'emploi (peu de composants externes).
- Protection contre les surcharges thermiques.
- diode : 1N4001, en srie avec la pile 9 v, protge le montage contre les inversions de
polarit.
- Les condensateurs : permet de filtrer l'alimentation de 5 v.

Maquette de rgulateur
Apres la ralisation du montage sur la maquette on mesure la tension de sortie de rgulateur a
laide de voltmtre et on a trouv la valeur suivante : 4.56v

8.Relais
Un relais est un organe lectrique permettant la commutation de liaisons lectriques. Il est
charg de transmettre un ordre de la partie commande la partie puissance d'un appareil
lectrique et permet, entre autres, un isolement galvanique entre les deux parties. Le relais est
donc utile pour effectuer une commande de puissance de type tout ou rien.
Page 17


la fiche technique du relais est disponible lannexe.

8 . Horloge du systme
Le fonctionnement de l'horloge peut tre ralise avec un quartz : 4MHz, la frquence
maximale d'utilisation va dpendre du microcontrleur utilis . En utilise ici un rsonateur
quartz ou cramique 4MHz pour ralise un oscillateur (le cur du microcontrleur), c'est lui
qui cadence le droulement du programme . Il fournir un signal carr priodique au
microcontrleur.
Pour gnrer le signal d'horloge, plusieurs type doscillateurs peuvent tre ralise
soit avec un quartz ( figure 1 ) soit avec une horloge extrieure ( figure 2 ) ou bien soit
avec un circuit RC ( figure 3 ) , dans ce dernier cas, la stabilit du montage est limit.


9.Chronogramme fonctionnel



Page 18

Algorigramme de serrure code





Sous programme

oui
non

oui non










Dbut
Configuration des ports A et B
initialisations des E/S,
initialisation des
variables internes
Lecture du clavier
Touche appui
Validation de
code complet
Comparisation de
code

Bon code
LED verte allume
(Ouverture de
porte)
LED rouge reste allume
(dclenchement dalarme)
Remise zro le code entr
Page 19


Sous-programme Clavier sous-programme. Scrut_Clavier




Page 20

10.Programme base de lassembleur
Programmer un microcontrleur consiste crire une suite de 0 et de1 en mmoire
programme. Cette suite sera dcrite dans un fichier .hex gnr par MPLAB partir
de lassociation de mnmoniques et de directive dassemblage.
Dans un programme en assembleur, on peut distinguer une partie prliminaire qui est
systmatique c..d. qui ne change pas d'un programme l'autre.
La premire partie concerne l'en-tte qui dfinit, le plus clairement possible, la fonction
du programme ainsi que divers informations permettant de grer l'historique du code (auteur,
date d'critures et de modifications, numro de version, etc.)









La dclaration du microcontrleur permet au compilateur de gnrer un code machine qui
soit comprhensible pour le microcontrleur que vous souhaitez programmer.



Une directive au prprocesseur demande l'inclusion d'un fichier de dfinition spcifique
au microcontrleur qui dfinit certaines configurations matrielles par dfaut et permet de
simplifier l'criture des programmes.





(pour le programme complet de serrure code voir lannexe )
11. Logiciel Porteus ISIS
Porteus est une suite logicielle destine l'lectronique. Dvelopp par la socit
Labcenter Electronics, les logiciels incluent dans Proteus permettent la CAO (conception
assiste par ordinateur) dans le domaine lectronique. Deux logiciels principaux composent
cette suite logicielle: ISIS et ARES.
; Titre : Serrure code
; Date :
; Auteur :
; PIC utilis : PIC 16 F 84
; On ralise un dcodage de clavier sur les broches RB0 RB5 d' un PIC 16 F 84.
; Si la squence des 4 touches appuyes correspond aux codes de l ' EPROM alors
; on valide la sortie pendant 2 secondes.
; on utilise la mmoire EPROM pour stocker le code qui valide la sortie relais


list p=18F84A ; Dfinition du microcontrleur utilis
#include <p18f84A.inc> ; Dfinitions des emplacements mmoires des registres
; et configurations matrielles par dfaut
__CONFIG H3FF9 ;prcise les paramtres encods dans le processeur au
;moment de la programmation du processeur.
Page 21

Cette suite logicielle est trs connue dans le domaine de l'lectronique. De nombreuses
entreprises et organismes de formation (incluant lyce et universit) utilisent cette suite
logicielle. Outre la popularit de l'outil, Proteus possde d'autres avantages
Pack contenant des logiciels facile et rapide comprendre et utiliser
Le support technique est performant
L'outil de cration de prototype virtuel permet de rduire les cots matriel et logiciel lors
de la conception d'un projet
ISIS
Le logiciel ISIS de Proteus est principalement connu pour diter des schmas lectriques. Par
ailleurs, le logiciel permet galement de simuler ces schmas ce qui permet de dceler
certaines erreurs ds l'tape de conception. Indirectement, les circuits lectriques conus grce
ce logiciel peuvent tre utilis dans des documentations car le logiciel permet de contrler la
majorit de l'aspect graphique des circuits.






12. simulation de serrure code

Page 22








Chapitre : III REALISATION DE LA SERRURE CODE

1. Le programmateur
- Une fois le programme compil, il faut le transfrer dans la mmoire du microcontrleur.
Pour cela il vous faut, Une petite interface matrielle
- Est l'lment qui permet de charger le programme dans la mmoire du PIC. Il est
reli l'ordinateur par une liaison srie ou parallle, le programmateur n'a pas les
supports pour tous lePICs
Page 23




Lecture du rsultat dans le programmateur
1.schma de cblage
Avant le tapage de code
Page 24



Apres tapage de code (led verte allume)
Page 25


Schma avec relais et un buzzer.

Page 26





CONCLUSION

Ce genre de projet a pour objectif de faire dcouvrir llectronique sous un
nouvel angle, donc de concrtiser la pratique aborde en classe.

travers de ce travail, nous avons eu loccasion dutiliser plusieurs outils
informatiques qui sont ncessaire pour la ralisation de ce projet.
Nous avons appris raliser des schmas lectroniques qui taient nouveaux
pour nous.

En autres ce projet, nous a donn la possibilit de travailler en groupe, surtout
de sorganiser le mieux possible et dynamiser le travail pour arriver au but fix.








Page 27


Bibliographie
La programmation des PICs, Premire partie PIC16F84, Rev 5, Bigonff
http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/pic_accueil.htm

http://fr.wikibooks.org/wiki/Comment_d%C3%A9marrer_avec_un_PIC16F84

http://www.pc-electronique.com/articles/15/serrure-codee

http://l3-geii-uppa.pro-forum.fr/t2-tp-informatique-industrielle

http://www.scribd.com/doc/25263325/Notes-de-Cours-Sur-Le-Microcontroleur-PIC16F84

http://www.webrankchecker.com/371711-pic16f84-clavier-serrure.html

http://www.elektronique.fr/logiciels/proteus.php

http://ictupdate.cta.int/fr/Dossiers/Logiciel-CDS-ISIS-pour-bibliotheques

http://www.regionmag.com/la-serrure-code-avec-pic-16f84-pdf.html#a12

http://www.lycee-elorn-landerneau.ac-rennes.fr/SIElorn/cours.htm

http://gdaquino.chez.com/MC/pic/16f84/pgm/sommaire.htm

http://www.multimania.com/pmorphe/bienvenuechez_atm.htm




Page 28


Annexe


La mmoire de programme , PIC 16F84

Tableau : Caractristiques des PICs
Page 29

Programme assembleur avec lextension .asm
;------ Exemple d'application avec un PIC : Une serrure code -------
; Titre : Serrure code
; Date :
; Auteur :
; PIC utilis : PIC 16 F 84
; On ralise un dcodage de clavier sur les broches RB0 RB5 d' un PIC 16 F 84.
; Si la squence des 4 touches appuyes correspond aux codes de l ' EPROM alors
; on valide la sortie pendant 2 secondes.
; on utilise la mmoire EPROM pour stocker le code qui valide la sortie relais
;------------ Directive d' assemblage pour PLAB ---------------
list p=16f84A
#include p16f84A.inc
__config H'3FF9'
;------------ Dfinition des constantes ---------------

W EQU 0x00 ; variable W = 0
F EQU 0x01 ; variable F = 1
;------------ Dfinition des registres temporaires ---------------
retard1 EQU 0x0C ; le registre temporaire retard1 se trouve l' adresse 0C
retard2 EQU 0x0F ; le registre temporaire retard2 se trouve l' adresse 0F
retard3 EQU 0x14
tampon EQU 0x10 ; le registre tampon est l'adresse 10
rang EQU 0x11
key EQU 0x12
;------------ Mise en EPROM des valeurs ---------------

org H'2100' ; Donnes EEPROM
DE 0x44,0x84,0x06,0x05, 0 ; les 4 codes qui valident la sortie relais
;------------ Init des ports A et B ---------------
ORG 0
bsf STATUS,5 ; on met 1 le 5eme bit du registre status pour accder
; la 2eme page mmoire ( pour trisa et trisb )
MOVLW B'11000011' ; on met C3 dans le registre W
MOVWF TRISB ; on met C3 dans le port B il est programm partiellement en E/S
MOVLW 0x00 ; on met 00 dans le registre W
MOVWF TRISA ; on met 00 dans le port A il est programm en sortie
bcf STATUS,5 ; on remet 0 le 5eme bit du registre status pour accder
; la 1eme page mmoire
;------------ Init ---------------
MOVLW 00 ; on met 0 dans le registre W
MOVWF PORTB ; on met W sur le port B
MOVWF tampon ; on met 00 dans le registre tampon
init
Page 30

MOVLW 04 ; on met 4 dans le registre W
MOVWF rang ; on met W rang
MOVLW 0x01 ; on met 01 dans le registre W led rouge
MOVWF PORTA ; on met 01 sur le port A
;-------------------- Programme principal ----------------------
debut
bcf PORTA,2 ; on met 0 le CA2
movf rang,w ; on met rang dans W
MOVWF PORTB ; on met W sur le port B ( N rang= N ligne alimente )
BTFSC PORTB,6 ; on teste le bit RB6 si = 0 on saute la prochaine instruction
call sauve
BTFSC PORTB,7 ; on teste le bit RB7 si = 0 on saute la prochaine instruction
call sauve
BTFSC PORTB,1 ; on teste le bit RB1 si = 0 on saute la prochaine instruction
call sauve
BTFSC PORTB,0 ; on teste le bit RB0 si = 0 on saute la prochaine instruction
call sauve
movf rang,W ; on met rang dans W
SUBLW 0x20 ; W - 32 -> W
BTFSC STATUS,2 ; on teste le bit Z si Z=0 on saute la prochaine instruction
GOTO init
movf rang,W ; on met rang dans W
ADDWF rang, F ; on additionne rang + rang
GOTO debut
;------------ sauvegarde de la touche ---------------
sauve
; bsf PORTA,2 ; on met 1 le CA2
movf PORTB,W ; on met le port B (clavier) dans W
MOVWF key ; on sauve W dans key
MOVF tampon, W ; on met tampon dans W
MOVWF EEADR ; on met W sur EEADR ( adresse EPROM )
bsf STATUS,5 ; on met 1 le 5eme bit du registre status pour accder
; la 2eme page mmoire ( EECON1 )
MOVLW 0x01 ; on met 01 dans le registre W
MOVWF EECON1 ; on met 01 dans le registre EECON1
bcf STATUS,5 ; on remet 0 le 5eme bit du registre status
MOVLW 0x01 ; on met 1 dans le registre W
ADDWF tampon, F ; on additionne tampon + 1
MOVF EEDATA, W ; on met la donne EPROM dans W
SUBWF key,F ; key - W -> f ( la touche correspond l' EPROM ? )
BTFSS STATUS,2 ; on teste le bit Z si Z=1 on saute la prochaine instruction
GOTO raz
MOVLW 0x04 ; on met 5 dans W
SUBWF tampon,W ; tampon - W -> W ( on a eu les 4 touches ? )
BTFSC STATUS,2 ; on teste le bit Z si Z=0 on saute la prochaine instruction
Page 31

goto ouvre
;---------------- test de l'appui maintenu ---------------------
appui
BTFSC PORTB,6 ; on teste le bit RB6 si = 1 on va appui
GOTO appui
BTFSC PORTB,7 ; on teste le bit RB7 si = 1 on va appui
GOTO appui
BTFSC PORTB,1 ; on teste le bit RB1 si = 1 on va appui
GOTO appui
BTFSC PORTB,0 ; on teste le bit RB0 si = 1 on va appui
GOTO appui
CALL tempo_c
goto debut
raz
MOVLW 0x00 ; on met 00 dans le registre W
MOVWF tampon ; on met 01 dans le registre tampon
return
ouvre
MOVLW 0x06 ; on met 06 dans le registre W
MOVWF PORTA ; on met 06 sur le port A ( led verte + relais )
call tempo
goto init
;------------ Programme de temporisation ---------------
tempo
MOVLW 0xFF ; on met ff dans le registre W
MOVWF retard1 ; on met W dans le registre retard1
MOVWF retard2 ; on met W dans le registre retard2
MOVLW 0x10 ; on met 03 dans le registre W
MOVWF retard3 ; on met W dans le registre retard3
attente
DECFSZ retard1,F ; on dcrmente retard1 et on saute la prochaine instruction si
GOTO attente ; le registre retard1 = 0 sinon retour tempo
movlw 0xFF ; on recharge retard1
movwf retard1
DECFSZ retard2,F ; on dcrmente retard2 et on saute la prochaine instruction si
GOTO attente ; le registre retard2 = 0 sinon retour tempo
movlw 0xFF ; on recharge retard2
movwf retard2
DECFSZ retard3,F ; on dcrmente retard3 et on saute la prochaine instruction si
GOTO attente ; le registre retard3 = 0 sinon retour tempo
RETURN ; retour au programme principal aprs l 'instruction CALL
;------------ Programme de temporisation courte ---------------
tempo_c
MOVLW 0x30 ; on met 10 dans le registre W
MOVWF retard1 ; on met W dans le registre retard1
Page 32

MOVWF retard2 ; on met W dans le registre retard2
attend
DECFSZ retard1,F ; on dcrmente retard1 et on saute la prochaine instruction si
GOTO attend ; le registre retard1 = 0 sinon retour tempo
movlw 0xFF ; on recharge retard1
movwf retard1
DECFSZ retard2,F ; on dcrmente retard2 et on saute la prochaine instruction si
GOTO attend ; le registre retard2 = 0 sinon retour tempo
RETURN ; retour au programme principal aprs l 'instruction CALL
END