Accéder au contenu principal

TP2

RAPPORT DE TP D’ARCHITECTURE DES CALCULATEURS
ecole superieur multinationale de telecommunication


Rapport de TP d’architecture des calculateurs
TP2



GROUPE:
DELMA NATHAN K
YAKANON JEAN
CLASSE :
INGC1
ENSEIGNANT :
B NIANG
ANNEE :
2009-2010

Dans ce TP, nous réaliserons un programme qui allume une LED branchée sur PA4 pendant une seconde quand on ferme l’interrupteur branché sur PB0.




1.  THEME


2.  BUT

Dans ce TP, il s’agit de réaliser un programme qui lit l’état d’un interrupteurs sur PB0. S’il on l’appuie, on  allume alors la LED sur PB4 pendant une seconde.
Nous réaliserons D’abords l’algorithme de temporisation de 50ms, ensuite le programme principal sans anti rebond et enfin avec anti rebond.

3.  CAHIER DE CHARGES

·       lire PB0 (bit 0 du port B) ;
·       s’il est ferme, on allume la LED PA4 (bit 4 du port A) pendant une seconde puis on l’éteint ;
·       la LED ne s’allume plus jusqu'à ce que l’interrupteurs soit relâchée puis fermée a nouveau ;
·       la durée de fermeture de l’interrupteur n’a pas d’incidence sur la durée d’allumage du LED ;
·       gérer les rebonds.

4.  SCHEMAS DE PRINCIPE DU DISPOSITIF

Le dispositif physique se constitue du microcontrôleur 68HC11, d’un interrupteurs sur PB0; et une LED sur PA4.
VCC
                                  PB0
68HC11

                                   PA4
0V

5.  ORGANIGRAMMES

 


Figure 1 - Algorithme de temporisation et programe principale

·       Le premier (tempo_50ms) réalise une temporisation de 50 ms ;
50ms correspond a 50.10^-3 / 10^-6 = 50000 cycles.
Les instructions LDX, DEX, CMPX, BNE, RTS durent respectivement 3, 3, 4, 3, 5 cycles d’horloges. Nous pouvons calculer alors la durée de la temporisation D.
D== 3+(3+4+3)*(X+1) =50000
=> 50000 =3+10*X+10
=> X=(50000-13)/10 =~4998 = 1386H
X=1386H donne une temporisation effective de 49997 soit 49,99ms

·       le deuxième réalise une temporisation d’une seconde;
1 seconde correspond a 1 / 10^-6 = 1000000 cycles.
Les instructions LDA, DECA, CMPA, JSR, BNE, RTS durent respectivement 2, 2, 2, 5, 3, 5 cycles d’horloges. Nous pouvons calculer alors la durée de la temporisation  D.
La durée de la temporisation D = 2+(2+2+(5+49997)+3)*(B+1)+5 =1000000
=> 50009*B+50016=1000000
=> B=(1000000-50016)/50009=18,996 =~19 = 13H
B= 13H donne une temporisation effective de 1000187 cycles soit 1,000 secondes

·       le troisième est le programme principal sans anti rebond ;

·       le quatrième est le programme principal avec anti rebond.
L’anti rebond est réalisé en appelant la temporisation de 50ms pour attendre la stabilisation de l’entrée.

6.  CODE

; TD EXO2
              PORTC EQU $1006 ; registre de donnee du port C
              PORTA EQU $1000 ; registre de donnee du port A
              DDRA EQU $1001              ; registre de direction du portA
              DDRC EQU $1007              ; registre de direction du portC

ORG $FE00                        ; adresse d’origine du programme

              LDAA #$FF
              STAA DDRA         ; initialisation du PORTA en sortie
              LDAA #$00
              STAA DDRC        ; initialisation du PORTC en entrée
_ENTREE:
              LDAA PORTC       ; lecture de l’entrée
              BSR _TEMPO_50MS   ; ANTIREBOND
              ANDA #$01        ; masquage pour avoir PB0
              BEQ _ENTREE      ; boucler tant quinterrupteur a 0
              LDAA #$10
              STAA PORTA      ; allumer PA4 si interrupteur a 1
              BSR _TEMPO_1S     ; attendre 1 seconde
              LDAA #$00
              STAA PORTA       ; éteindre la LED sur PA4
_WAIT_0:
              LDAA PORTC       ; lire l’entrée
              BRS _TEMPO_50MS  ; ANTIREBOND
              ANDA #$01        ; masquage => l’état de l’interrupteurs
              BNE WAIT_0      ; attendre tant que pas relâchée
              BRA _ENTREE     ; si relâche, alors on va au début
              SWI             ; fin du programme principal

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Temporisation d'une seconde ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
_TEMPO_1S:
              LDAB #$14     ; initialiser B
_LOOP_1S:
              DECB         ; décompter B
              BSR _TEMPO_50MS  ; appel la sous routine de tempo de 50ms
              CMPB #$00
              BNE _LOOP_1S   ; décompter tant que B n’est pas nul
              RTS         ; sortir de la sous routine

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Temporisation de 50 milliseconde ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
_TEMPO_50MS:
              LDX #$1386  ; initialiser X
_LOOP_50MS:
              DEX        ; décompter X
              CPX #$0000
              BNE _LOOP_50MS  ; décompter X tant que X n’est pas nul
              RTS   ; sortir de la sous routine
             
END



7.  CONCLUSION

Dans ce TP, nous avons eu recours aux sous-programmes qui optimisent la taille du programme et améliore sa lisibilité, Aussi nous avons utilisé la temporisation (durée d’activité de la LED) et les antis rebond pour une gestion correcte des changements d’état de l’interrupteur qui en réalité passe par des états transitifs (ou il prend des valeurs aléatoires).
Page 2 sur 6
TP 2


Commentaires

Posts les plus consultés de ce blog

Gérer les requêtes USSD sur un MoDem avec les commandes AT

Introduction L'USSD (Universal Structured Service D) est un service des réseaux télécoms defini dans 3GPP TS 02.90 et dans 3GPP TS 23.090. Il permet à un terminal mobile d'effectuer des requetes ou une suite de requete à l'operateur. Il est courament utiliser pour consulter le solde. Dans ce tutoriel nous apprendrons à effectuer des requetes USSD depuis une connection serie avec une modem. Pré requis Pour utiliserons pour ce faire: un modem GSM (Huawei E1552) bien sur avec une carte SIM (AIRTEL Burkina) un ordinateur auquel sera connecte le modem un terminal (minicom) pour dialoger avec le modem depuis l'ordinateur perl, pour encoder et decoder les PDU Demarche Nous allons consulter le solde du compte de l'utilisateur. Pour l'opérateur courant il faut composer le code USSD *160#. connecter le modem Connectez le modem au port USB de l'ordinateur et retrouvez ses port series logiciels. Notre modem créé trois ports series (/dev/t

IANA TCP UDP Ports

Port TCP UDP Description Status 0 UDP Reserved Official 0 TCP Programming technique for specifying system-allocated (dynamic) ports[2] Unofficial 1 TCP UDP TCP Port Service Multiplexer (TCPMUX) Official 2 TCP UDP CompressNET[3] Management Utility[4] Official 3 TCP UDP CompressNET[3] Compression Process[5] Official 4 TCP UDP Unassigned Official 5 TCP UDP Remote Job Entry Official 7 TCP UDP Echo Protocol Official 8 TCP UDP Unassigned Official 9 UDP Wake-on-LAN Unofficial 9 TCP UDP Discard Protocol Official 10 TCP UDP Unassigned Official 11 TCP UDP Active Users (systat service)[6][7] Official 12 TCP UDP Unassigned Official 13 TCP UDP Daytime Protocol (RFC 867) Official 14 TCP UDP Unassigned Official 15 TCP UDP Previously netstat service[6] Unofficial 16 TCP UDP Unassigned Official 17 TCP UDP Quote of the Day Official 18 TCP UDP Message Send Protocol Official 19 TCP UDP Character Generator Protocol (CHARGEN) Official 20 TCP UDP FTP data transfer Official 21 TCP FTP 

INTERUPTEUR CREPUSCULAIRE

BUT : contrôler l’allumage et l’institution d’une lampe électrique en fonction de l’intensité de la lumière ambiante. FONCTIONNEMENT : le potentiomètre RV2 règle la sensibilité à la lumière. S’il fait assez noir, la lampe s’allume. Si par contre,s' il y’a assez de lumière alors la lampe s’éteint. La résistance variable RV1 permet de régler le décalage entre le seuil d’allumage et le seuil d’instinction. INTERET : sécurité, automatisation et économie d’énergie. SCHEMAS :