« Utiliser les PIC 16F et 18F/Exercices/Interruption timer0 en langage C » : différence entre les versions
Contenu supprimé Contenu ajouté
m Robot : Changement de type cosmétique |
m Robot : Remplacement de texte automatisé (-(\d{1,})\s?MHz +{{Unité|\1|{{abréviation|Mhz|mégahertz}}}}) |
||
Ligne 2 :
Si vous voulez savoir comment est réalisé pratiquement ce qui est décrit dans cet exercice, visitez le chapitre [[Very High Speed Integrated Circuit Hardware Description Language#Embarquer un PIC 16F84|Embarquer un PIC 16F84]] d'un autre livre.
Un [[w:PIC_16F84_de_Microchip|PIC16F84]] est enfoui dans un [[w:FPGA|FPGA]]. Sa seule particularité est de fonctionner à
<source lang="c">
//#include <pic1684.h>
Ligne 43 :
Les deux questions suivantes sont issues du Devoir Surveillé de juin 2010.
5°) Le programme suivant est donné comme exemple du compilateur MikroC et tourne dans un PIC 16F84 qui a un quartz de {{Unité|4
<source lang="c">
unsigned cnt;
Ligne 107 :
N'oubliez pas la division par 16 qui est réalisée avec le if (!(nb % 16)) dans l'interruption.
<u>Calcul précis</u> : {{Unité|50
3°) "if (!(nb % 16))" est une façon pas très efficace de calculer le reste de la division par 16. J'ignore la technique utilisé par le compilateur, mais ce calcul est forcément long puisqu'il n'y a pas d'instruction de division sur le 16F84.
Ligne 171 :
unsigned char SEGMENT[] = {0x3F,....
</source>
3°) Réaliser le programme main() responsable de l'initialisation de l'interruption qui doit avoir lieu toutes les 10ms (avec un quartz de
4°) Réaliser enfin l'interruption qui affichera tantôt les dizaines, tantôt les unités.
Ligne 211 :
Les compilateurs C compilent cela certainement de manière peu optimisée. Il faut savoir qu'il existe un bit "half carry" dans le registre '''Status''' qui permet certainement d'optimiser, mais nous laissons tomber ce genre de détail.
Pour la période de l'interruption, on part de la fréquence quartz divisée par 4 soit : {{Unité|1
<source lang="c">
//****** Mikro C ********
|