td microcontrôleur, famille pic

Post on 05-Jan-2017

231 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

� ���� ������

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�����&)�

���"������ ��%����� � 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�

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

>���

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

�����

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

� ��� �������

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!��;�

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

� ���

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��� ���� �)���������������������� !���.(�

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

� ����

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

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

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

� ��� �������

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

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

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

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

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

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

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

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

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

��'�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)�

��'�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'

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

� '���

Annexes :

Extraits de la documentation Microchip PIC16C84 �

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

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

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

� A���

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

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

� %���

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

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

� ����

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

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

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.

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

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

TD 5-6 Microcontrôleur INSA GE

4/7

Figure 4: Jeu d’instructions des PIC 16CXXX

TD 5-6 Microcontrôleur INSA GE

5/7

Figure 5 : Description du fonctionnement du PORT A

TD 5-6 Microcontrôleur INSA GE

6/7

<

Figure 6 : Description du fonctionnement du PORT B

TD 5-6 Microcontrôleur INSA GE

7/7

Figure 7 : Détails des registres du PIC16C84.

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

� ��� �������

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�+�������,���������$��������+��/�������,������

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

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

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

� ���

Annexes :

Extraits de la documentation Microchip PIC16C84 �

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

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

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

� E���

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

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

� =���

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

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

� <���

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

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

� >���

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

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

� ����

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

� �

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

� D���

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

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

� ����

���� �

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

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

� �� � ������

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 �!���������� ,��������������-����$����� �����.�������������;�. �!�� ������ ������

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

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

� ��

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

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

� :��

Annexe 1:

Extraits de la documentation Microchip PIC16C84 �

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

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

� 3��

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

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

� =��

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

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

� #��

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

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

� ���

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

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

� �

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

� ���

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

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

� >��

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

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

� ���

Annexe 2:

Extraits de la documentation du 74HC259 �

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

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

�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�

top related