td microcontrôleur, famille pic

49
TD Microcontrôleur, famille PIC Lecture écriture d’une mémoire RAM I - Etude de la mémoire (figure 2)

Upload: tranquynh

Post on 05-Jan-2017

231 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: TD Microcontrôleur, famille PIC

� ���� ������

TD Microcontrôleur, famille PIC �������������

Lecture écriture d’une mémoire RAM �

�� ��������������� ���������� ��������������� ���� ���� ������������� ����������������������

���� ������� ���� �� �� � �� �������� !"� #���� �������� �� ��� $� �� �������� �� ����� ���

�� ��%��� ��� � ��������������&�� ����'��� ��� ������������ ���� ���� ����� #�������� � � (�����

������ ��&)�

*���������� !"�'��� ���������� �������+�� ������,��'��-�.��/0���������������#� �/0�����

1������2��������&)�3���� ����������������������� ������������������������/0������(��� ���

� $� ������� �������� ����������� �,��������4 ������"5*�6758�#1�������$�4�����&)�

*��"5*�6758������� ��9�

0 � ��������������������.���4 ������#!��!���:��!�;&�

0 � ���������� �������<���4 �����#�������:���&�

0 � ����4 ���� ���������������������������#�2�������������2��������&�

0 ������4 ���������� ����� ��

0 �1� �������� ��������4 ������ (������ �������������$������������ �# ���� �� �$��� ��

�������4�����&��

= � ������� ����� ��� ������� ��� �������� !"� � � ����� (�+��������� -� ������� ��� �� �� �����

������ � ��#1����$�4����>&�9�

0 *�������(������������9�� ������� ��������� �������������(����� ��(��4������������� �

�(�$$���(�+����������������� ))��?��!��7��@�����3��A��� ���������������� ���4������

����� �@)�

0 *������(������������� ���� ����������9�83*�

0 *�� ����(�� 6B@�9� ������ ����(�� ������� ��� ����� ���� ��� ���������� ����������� ���

������ ���� ��C���������� ����������������������� �����������������)�

0 *������(��3@ �9�����������������������-����������� ����������������� �����������+�

��� ������������ �����������1����#�������������������4������@&�������������� ����� ����

������������������ �������� �����-�$�������������������������4�� ���������4�����)�

���+� ���������$�� ���$$��(�4�� $� ���� � �� � � ����� � ���� 1�������� �� ��� �� �����

������������������������������� �� ������������������������)�

I - Etude de la mémoire (figure 2) *��$�4�������� �������(������� ��������������������������������������������� ��4�������

��<���������<�������(��� � #����������� �D���.<�����"�������&�������������������������4��

���������)�

@(�'������������ ��4������������.���� ������1�������� �9� �� �� ��� �� ��� �� >�� �� ��� ����

;�� )�*���������������������� ������'������������� ��-������������� ��� ��-�)�

E��������� �� ����F� ������������ #���4��������������9��������������������������������$� &�

�������� ��������������+����������������>�����������������������������$�4������G�

"C���'������ �������������������������# � �������� �����������$�4�����&)�

Page 2: TD Microcontrôleur, famille PIC

���"������ ��%����� � 6B8!��3�

����

II - Encodage d’un clavier = ���������� ��1����� ����������$� � ���� ���.� ����(��� #�����:?��!��7��:A&� ������ $���)�

@H���0-0�����'��������������� ��� ����(��������$��� ��� ���1����������� ������$���)�*������(�������

1������������� ������������9�

���

���

����

���

��

� �

= �����������'������������� ������ ������(��$������ �� �����������������)�

0�3 �� ��D�� ������� � ����1���$����'�������������������������������������4������������������

����D���������'���)�

III - Réalisation du registre tampon C (figure 3) = ������������ �� � �������������������4����������� �@)�@����4��������������������(��4���

��� ���� ����������� #�.� ����&� ��� ��� ���� ��� �� ���� #<� ����)&� -� ������� ���� 1������� ������� ���� ���

���1���)�

*����4������@�����$������������������D����)�@����4��������I����� � ��1���������������1����

� �@��@���@���@>���� ������� ��������'���� ����� ����� ���� � ��� �� ������ #��� ����� ������ � �

@����@�>��@����@�;����������&)�

0�E��������������������#� �����&������4������@�G�@����� ��������������� �� �����������G�

0������ ���� ������� �� �����4������@)�"������� ��1��� �������(��� ����1������ ������ ����

������1������������������������������� ���'���������4 ��+������ ��%��)�

IV - Réalisation du sélecteur d’adresses (figure 3) @����� �����������'�������� ����������� �� ������������������������)� 6�� ��� ����������1��� ���

����� ���83*������I������������ ���6B@)�

0������ ���� ������� ��������������� �� ���� ��������4 ��+������ ��%��)�

V - Réalisation du contrôleur de bus de données (figure 3) @����������������'��������������������� ������������)� ���1� ���������� ���3@ �����������

����������� � ������ ����������� ����� �(��4�� ��� ���� ��� �� ���� �1��� ���� 1������� ���� ����� ���

������ $���������� ��4������@)� 6�� � ����� ���� ������ ��������������������������� ������������ �

���������������)�

0������ ������������� ������������)�E������������������'��������������������0�������������G�

Page 3: TD Microcontrôleur, famille PIC

���"������ ��%����� � � � 6B8!��3�

>���

Page 4: TD Microcontrôleur, famille PIC

���"������ ��%����� � � � 6B8!��3�

�����

Page 5: TD Microcontrôleur, famille PIC
Page 6: TD Microcontrôleur, famille PIC
Page 7: TD Microcontrôleur, famille PIC
Page 8: TD Microcontrôleur, famille PIC
Page 9: TD Microcontrôleur, famille PIC
Page 10: TD Microcontrôleur, famille PIC
Page 11: TD Microcontrôleur, famille PIC
Page 12: TD Microcontrôleur, famille PIC
Page 13: TD Microcontrôleur, famille PIC

� � �����������

� ��� �������

TD Microcontrôleur, famille PIC ���������

Démultiplexage d’adresses �

����������������������������������������� !�����"���������#��!���#����������$���%�����

��&����������'��!�������(���������)�����������*����!+$����������#����������,�������-����������

�������-��.����������*���� !+$����������������������(���������������)��������������%�/$����������

!�����������*���!�����(�

�*��� ������������� !�� ���0��� ��� *�!�� �$���������� ��� )�!���'�� ���� "� ��������� ��� )��)����

�+���!��������1��$��!��)!�1������23456�,�*(���'����.(��

7��*���!��$���������1���������������$�!�����!���80!�'�����!��!�'�#���������������������� !����

����&)��9�4����!�������$��������23456����!����'����(�

�� ��������������� ��������� �������������������� ������������������������������ �����

I – Solution sans circuits 74HC259 :������!����$��!��)!�1������23456�����0�������*�!������������$�������������)�!���'������

"���������;�

�:�4�������!�����������!!�����<������������0!��;�

Page 14: TD Microcontrôleur, famille PIC

=���>��������� !����� � ��������

� ���

II – Solution retenue : utilisation de circuits 74HC259 ���!&����!����0!������$���$�������������23456�,�*(���'����������'�����.(�

�:������������!�������������0���������������)�������?����)�!��$���;�4��0�������0����,���*�!�.�

������$�������������)�!���'����������������;�

�:�@��!�������!���2����������*����������������������������;�

:� =+�)�A�� !�� ������� ���� ����'���� #��!�� ����� !��� ������ ��� *�������������� ��� �23456�

���!���%��������&��A������#��!!�,�.�*�������,�.�!����������������$���;�

�:� 9���� !��� ������ B������� �C� ��� B��� �������� ������C�� )�$����/� #����� !�� ��!���� ��� !��

����$���������))!�#�$������������������(�

III – Liaison microcontrôleur ���� système de 16 voyants ������)!������������������$����������� !���(������������������������%����#�����&����,���

������.(����)�!������!+$�����+���������������$!������������������������'�8���%�������������)�������

$�����������������!�$��������!��0����������$��(���*���������!������!������'�������+$�������!��

������(�

�:�4��0���������������������������$�������������)�!���'������"���&�����;�

�:�=���?���)����!������������� ����;�

:� �������� #��� !+��� ����� )������� ������� ������� !��� �������� %� �� *���!������ ��� #�+�!� ����

�$��������������!����� !�������$���)�����**������� !������'�������+$�����+���������������0����

���0����������$��������������� ������������&��A���;�

IV – Réalisation du câblage �:� �� #���� ����:��� ��!���� !��� ����$��� ���� �� ��� �� )���� =� ���� �23456�;� 9�$����� !��

��!����������������$��(�

�:�4�������)�������)�!�����"���������;�D$�!�����!�����$�������80!�'�����0����+������������

)�����0!����!����!����������������$��E�

�:��<������ !�� !�'�#��� )���� )��������� ��������� %� /$��� ��� ������� !��� �������� ,������)������

�+���0��� ���� �)���������������������� !���.(�

Page 15: TD Microcontrôleur, famille PIC

=���>��������� !����� � ��������

� ����

�� ������������� �������������!"#$�%&��

�� ������'��������(� ������!"#$�%&��

Page 16: TD Microcontrôleur, famille PIC

� � �����������

� ��� �������

TD Microcontrôleur, famille PIC ���������

Première application avec un PIC : faire clignoter une LED �

��� ���� ��� ������ ������� ��� �� ���� ��������� ��� ��!��""�� ����"������ ���� ��� #�$%$&'�

��"����������(��������!�������������)������*�"�������� ������������� �� �������������!����)��

�+��,������"����!�������"���������������-����������.������!����������(���"����/ �������

���'���"������������0)�

�� �����������������������������

I – Organigramme du programme ��������� ����!���!��""�� ��� ��� ��������)� #���� ��� ��" ���������� ��� (���� � ���1���� ����

(��������2� �" ��3)�

Page 17: TD Microcontrôleur, famille PIC

��'�4���������5������ � ��������

� ���

II – Fonction Tempo ��� ����� ����"������ ���.���� ���� ������ ������ (�������� ��� ��" ���������)� ���� .���������

Tempo_value_B1� ��� Tempo_value_B2� ����� ����6���� ��� 7�4� ��8� ��������� �8���� ���

�8��)����"���������5�����������������9�'4:;)�

1 Tempo_Wms:

2 BCF STATUS, RP0 ;

3 MOVWF Tempo_value_B1 ;

4 Tempo_B1:

5 MOVLW .249 ;

6 MOVWF Tempo_value_B2 ;

7 Tempo_B2:

8 NOP ;

9 DECFSZ Tempo_value_B2,1;

10 GOTO Tempo_B2 ;

11 DECFSZ Tempo_value_B1,1;

12 GOTO Tempo_B1 ;

13 RETURN ;

�< ����,��;� �����*�,�����!������������(�����������,��������������� ������"���������5�����

/�()�����"��������������������!����=0)�

�< ���������������!���!��""��������(��������Tempo_Wms)�

�< ������� ��� ��"���� ��� �>����� ������ ������� 9� ���8�������� ��� �*�,��� ������������ /�()�

����"��������������������!����=0)�

�< ����������� ��� ��" �����8����������� ��� (��������Tempo_Wms����(����������� ���.������

�������������������!������?�/�()���!����%0)��

�< @����(�����������������������������������NOP���!���&����������.����������������������!���A)�

(< �.��� ��� ����� � ��� 9� ������ (�������-� ,������ ���� ��� ������ ��� ��� ��" ���������� ��� ����

���!���,�������� ���������������B�

III – Programme principal �< ������� ���� ������������� ��"�������������(�!����� �������*��7C�� ���� ������� �������

/�()�����"�������!����-���!����'������!����A0)��

�< ������������������������ ��������"����������������������/�()���!����'������!����A0)�

�< ������� ��� ����"������ ��� ��!��""�� ����� ��)� /#������������ ��� ��!��""����" ���-�

.���� �����;���" ���������������!����.���0)�

Page 18: TD Microcontrôleur, famille PIC

��'�4���������5������ � ��������

� =���

#include <p16F84.inc> ; def. des variables du microprocesseur

__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _RC_OSC; config. du PIC

;***** DEFINITION des VARIABLES

Tempo_value_B1 equ 0x0020

Tempo_value_B2 equ 0x0021

;**************************************************************

ORG 0x0000 ; vecteur reset

GOTO main ; aller au début du programme

Tempo_Wms:

… ; code de la question II

RETURN

main: ; programme principal, à vous…

END ; directive 'fin de programme'

Page 19: TD Microcontrôleur, famille PIC

��'�4���������5������ � ��������

� '���

Annexes :

Extraits de la documentation Microchip PIC16C84 �

*�� D��EE)"�����*� )��"���E������������.�������=�''A�) �(�

�� ������ ������������������� �������� �!��

Page 20: TD Microcontrôleur, famille PIC

��'�4���������5������ � ��������

� A���

�� ��"��#�������� ���������������� �$$$�

Page 21: TD Microcontrôleur, famille PIC

��'�4���������5������ � ��������

� %���

�� ������������������������%&'�

Page 22: TD Microcontrôleur, famille PIC

��'�4���������5������ � ��������

� ����

�� ��(���)*������������������������ ��������� ���� ����������������%&'��

��� �� ����+������� ����������� �������

Page 23: TD Microcontrôleur, famille PIC

INSA GE IF2

1/7 ToG 2007

TD Microcontrôleur, famille PIC Séances 5 et 6

�������������� ��������� ���������� ��������������������� �����

Le but de cette séance de TD est d’écrire en assembleur (famille PIC16XXX) une fonction

permettant de scruter un clavier de 16 touches et de donner la valeur de la touche pressée (on

parlera de décodage). On supposera qu’une seule touche est appuyée à la fois.

Le schéma interne du clavier est décrit sur la Figure 1.

La fonction de scrutation/décodage sera appelée par le programme principal. Cette

fonction devra attendre qu’une touche soit pressée. Elle retournera la valeur décodée (de 0 à

F).

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

RA0

RA1

RA2

RA3

RB0 RB1 RB2 RB3

Figure 1 : Schéma fonctionnel du clavier (sans les résistances, les diodes…)

���������� ���� ������- Réaliser le schéma global de l’application (cf. Figure 2). On veillera particulièrement aux

résistances de rappels et de protections nécessaires à l’utilisation du clavier.

��������������- Décrire le principe de fonctionnement de la scrutation du clavier.

- Donner une méthode permettant de faire le décodage.

- Etablir l’organigramme de la fonction de scrutation/décodage (faire apparaitre ces

fonctions).

��������������������������- Ecrire en assembleur les fonctions de scrutation et de décodage. Le code de la touche (de

0 à F) sera retourné via le registre W.

Page 24: TD Microcontrôleur, famille PIC

TD 5-6 Microcontrôleur INSA GE

2/7

�������� ��� �� ���- Exemples d’utilisation : minuterie programmable, digicode à 4 chiffres, …

- Programmation en utilisant uniquement le port B (pour la lecture RB4 à RB7), le port A

est ainsi libéré.

- Critiquer la solution de programmation mise en place pour la scrutation et proposer une

méthode plus adaptée.

Figure 2: Schéma du PIC 16F84

Page 25: TD Microcontrôleur, famille PIC

TD 5-6 Microcontrôleur INSA GE

3/7

�!��"

#!�������� ������������$����������%&'%()

http://ww1.microchip.com/downloads/en/devicedoc/30445c.pdf

Figure 3: Organisation de la mémoire, PIC 16C84

Page 26: TD Microcontrôleur, famille PIC

TD 5-6 Microcontrôleur INSA GE

4/7

Figure 4: Jeu d’instructions des PIC 16CXXX

Page 27: TD Microcontrôleur, famille PIC

TD 5-6 Microcontrôleur INSA GE

5/7

Figure 5 : Description du fonctionnement du PORT A

Page 28: TD Microcontrôleur, famille PIC

TD 5-6 Microcontrôleur INSA GE

6/7

<

Figure 6 : Description du fonctionnement du PORT B

Page 29: TD Microcontrôleur, famille PIC

TD 5-6 Microcontrôleur INSA GE

7/7

Figure 7 : Détails des registres du PIC16C84.

Page 30: TD Microcontrôleur, famille PIC

� � �����������

� ��� �������

TD Microcontrôleur, famille PIC ���������

Exercices de programmation en assembleur ������������������������������������������������

��������!� �

"���##������$���������%����&���&��##�'�

"����%���'�����%������&�%��%��#����������$��$������$����������&���&��##���

"����$���(�������)��*�%�������������+���� ��#$��������,���-�./��������������%�����&��

����#+��%�'�

"�����(���(���$������$�)��$��#��������������������0%�����������������#�#����'�

"�%��������������#����������+�����������,����%��'�����������%����+�%���/'�

"��������%��������!�%�����������������+����,��#$�������'�$���#1����'�2/����-�.��

I – Table de retour de fonction ���-�����������������������������&��3�(�������#���������&#�����4�,������%��/��

���5����%�������6������������%����$$���(���������� �$�%����������������#$�����������7������7����������%������%��������#�������8%����,�����������%������%����������2/���

II – Adressage indexé �������������$��&��##��$��#��������0������������������%����������������9��������%��������

���#�#�����-�.��%�������������������'�������:%����%������������9�������%�����%������������%����

����;�����-�.��5���%$$����:%�� �����##������(�:%����#$����������� �������%���)�<<��,����

��&%���=/�

���9���=>�����%���$�%���?�7'�7'�=7'�2'���7���� � �/���,�<< � ���������������������� ����=>�

$��#�1���� ������������ �0��@-5.��%�@� ��������� ��� ��������� ����%������ �������%����� ��� '�

�∈A�7B��7C��,������&%���<������&%���>/��

��.��������������������$����������������0�+��������� �$�%���∈A�7BD�7C�,������&%���D/��

III – Arithmétique : addition 16 bits "� ������ ��� ��������������� $��#������� �0������������ ��%�� ����%��� �� ��� �� ��� >� +����� 9��

���%���������0����������������%����>�+����� (�:%�������+���>�+�����������#$����������������!�

���$������+�����,���������$��������+��'�$������#$������$�%���/�������$������(�%���,$���������'���/���

"��������%��$��&��##��%����������������������������9��������+������������������)�������������

�%������%�������������(�����

"���&�����������$����#���������$������,������&%���E/�������%#����%���9�F��%��@5- GH�I��

IV – Arithmétique : Multiplication 8 bits "��������0��&���&��##���0%������������$��#����������#%���$�������%������%���D�+������������

9�����%������%��>�+��������������������������+����D�+�������,���������$��������+��/�������,������

���$���������/��

"��������������������#+��%���������������������

Page 31: TD Microcontrôleur, famille PIC

F���.���������J��%��� � ��������

� ���

Annexes :

Extraits de la documentation Microchip PIC16C84 �

(��$!��KK�#�����(�$���#���K��������������������E�==<��$���

���������������� ����������� ��!�"#$���$%&�

Page 32: TD Microcontrôleur, famille PIC

F���.���������J��%��� � ��������

� E���

����������'������������������"#$��$%&��

Page 33: TD Microcontrôleur, famille PIC

F���.���������J��%��� � ��������

� =���

������(��'����������������)�)*��

Page 34: TD Microcontrôleur, famille PIC

F���.���������J��%��� � ��������

� <���

������&���'���+� ������,���������������

Page 35: TD Microcontrôleur, famille PIC

F���.���������J��%��� � ��������

� >���

������-��'���+� ��������.�/��,00"1�2���3� �

Page 36: TD Microcontrôleur, famille PIC

F���.���������J��%��� � ��������

� ����

����������'���+� ��������.�/��,00"1�2���3� �

� �

Page 37: TD Microcontrôleur, famille PIC

F���.���������J��%��� � ��������

� D���

���������4����,������ �����"#$���$555�

Page 38: TD Microcontrôleur, famille PIC

F���.���������J��%��� � ��������

� ����

���� �

������%���'���+� �������������������� ���*678�����*68��

Page 39: TD Microcontrôleur, famille PIC

� � �����������

� �� � ������

TD Microcontrôleur, famille PIC ���������

Application :

Pilotage d’une sortie parmi 8 �

��� � ������� ��� ���� ���� � ����� ������ �� �� ���� �� ���� !��"���� #� � �!���$� ������� ���� ��

�����%����� �!����& �������'�� ���������(��)�!��*���� �!���������� !�(��������� ����$�+��������

��������� �!����� " *�������"���� �� ����(����� ,�*��� ������ �����! ����� � ����$�

���������������� �)� ��� �������*���� ���������� ������� ��������!��"���&(����� ,�*���-��'$�

��� ��� ����� ���. �!�� ������"������/�

� ��� ���/�*���������� ������ ���0��������! � ���� ������1�2�!� ��!(���3456$�

� ������ ��������/�*����!��������!��"���������*����!����� �!�����������. �!(�������� �����

���"������ ������ �!�����. �!(�� ����0$�+��!��"���� ���7����! ���!�(����1�8�9�/�-��������:�

� �����(!�������! � �����!��"�)�-����3������ ��������!����� �����,����& (��!�� �� ������ �!������

(��������)�(����-��������!����� �!�����������. �!(�'$�

��� ��� ����� ����1�2�#��3$�

���������������� (��������;����� ��������� ��,�� ������ ������&�<����352=>)�!.$���,������

�����,����'$�

+�� !��"���� ���� ��� �����-��� �� #� - �� ��� � ��� ��� !?-�(�� �� ����%��� �� ���������� ���

�!������ ������-���<�,��&��,����'$�

I – Schéma de l’application ����;���*�������@����.�������!� �;� ���! �� ������ ���!�(��� ���������!��� ��&��,����'$����

�����(��������� ����������;��A���������;�"������� ����(������!���8���8�$�

II – Organigramme de l’application ����������� �,���,������,� -��� ���������!��� �$��

���B(�������������� ��,�� ���� ������&!.$� !�������352=>)���,����'$�

III – Programmation �!���������� ,��������������-����$����� �����.�������������;�. �!�� ������ ������

������ ��������&��������((!�����!���. �!�� ��'$�

Page 40: TD Microcontrôleur, famille PIC

�B���4�!� ! ���A������ � ��������

� ��

���������������������������������������

Page 41: TD Microcontrôleur, famille PIC

�B���4�!� ! ���A������ � ��������

� :��

Annexe 1:

Extraits de la documentation Microchip PIC16C84 �

���������������������������������� �!"���#��$�

Page 42: TD Microcontrôleur, famille PIC

�B���4�!� ! ���A������ � ��������

� 3��

�������%���&������������������������!"��#��$'�

Page 43: TD Microcontrôleur, famille PIC

�B���4�!� ! ���A������ � ��������

� =��

�������$��&��������������������(��

Page 44: TD Microcontrôleur, famille PIC

�B���4�!� ! ���A������ � ��������

� #��

�������)���&��������������*����������������!�+���

Page 45: TD Microcontrôleur, famille PIC

�B���4�!� ! ���A������ � ��������

� ���

�������#���&��������������*����������������!�+�,�

�������-�����������!"���#��$�

� �

Page 46: TD Microcontrôleur, famille PIC

�B���4�!� ! ���A������ � ��������

� ���

����������.����/�����������������!"���#�000�

Page 47: TD Microcontrôleur, famille PIC

�B���4�!� ! ���A������ � ��������

� >��

�������1��������������2�����������2����

Page 48: TD Microcontrôleur, famille PIC

�B���4�!� ! ���A������ � ��������

� ���

Annexe 2:

Extraits de la documentation du 74HC259 �

��������3���������*��������������-$4��)1�

�������������5����������������-$4��)1�

Page 49: TD Microcontrôleur, famille PIC

�B���4�!� ! ���A������ � ��������

� ��

Annexe 3:

Schéma du clavier. �

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

������������������*����������������������6�������������������� �����������78�