Vous êtes sur la page 1sur 3

ANNEXES

SFR du PIC 16F84 :

Registre d'état
STATUS IRP RP1 RP0 /TO /PD Z DC C
1 → Entrée et 0 → Sortie.
TRISB b7 b6 b5 b4 b3 b2 b1 b0
Registres de travail
PORTB b7 b6 b5 b4 b3 b2 b1 b0
OPTION_REG /RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
/RBPU : Résistances de tirage (Pull-Up) à Vdd des entrées du port B (0 active le Pull-Up interne).
INTEDG : Définit le front actif (1 pour montant) qui provoquera une interruption sur la borne RB0 (si interruption activée).
T0CS : Définit la source utilisée par le Timer (0 pour horloge interne, 1 pour externe sur RA4).
T0SE : Définit le front actif sur RA4 qui fait avancer le compteur (0 pour front montant).
PSA : 0 ==> Pré-diviseur assigné au Timer0 (TMR0) et 1 ==> Pré-diviseur assigné au chien de garde (WDT).
PS2 ... PS0 : Valeur du Diviseur de fréquence pour les TMR0 et le WDT.
Valeur des Bits Diviseur (TMR0) Diviseur (WDT)
000 1:2 1:1
001 1:4 1:2
010 1:8 1:4
011 1 : 16 1:8
100 1 : 32 1 : 16
101 1 : 64 1 : 32
110 1 : 128 1 : 64
111 1 : 256 1 : 128

INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF


GIE : Si =1 ==> Autorise toutes les interruptions non masquées par leur bit individuel.
EEIE : Si =1 ==> Autorise les interruptions de fin d'écriture dans l'EEprom.
T0IE : Si =1 ==> Autorise les interruptions dues au débordement du TMR0.
INTE : Si =1 ==> Autorise les interruptions sur RB0/INT. (Front montant si bit INTEDG de OPTION_REG est à 1).
RBIE : Si =1 ==> Autorise les interruptions sur RB4 à RB7.
T0IF : Flag mis à 1 s'il y'a débordement du TMR0.
INTF : Flag mis à 1 si une interruption externe est générée sur RB0/INT.
RBIF : Flag mis à 1 s'il y'a un changement d'état sur lignes RB4 à RB7.

Effet de certaines opérations sur le registre d'état :


Opération Description Notation Bits de STATUS affectées
+ Addition c=a+b; C, DC, Z
- Soustraction c=a-b; C, DC, Z
& ET logique entre bits c=a&b; Z
| OU logique entre bits c=a|b; Z
^ OU Exclusif entre bits c=a^b; Z
~ Complémentarité a = ~a ; Z
++ Incrémentation k++ ; Z
-- Décrémentation k-- ; Z
<< Décalage gauche : c = a << b ; C
>> Décalage droite : c = a >> b ; C
1
Programmation du module CCP1 en MikroC :
ADC
Lecture du résultat de conversion A/N sur l'entrée x : ………………. ADC_Read(x)
Initialisation du module CCP1 à la fréquence x en Hz : PWM1_Init(x)
Démarrage du module CCP1 : PWM1_Start()
Arrêt du module CCP1 : PWM1_Stop()
Générer le signal PWM d'un rapport cyclique par le module CCP1 : PWM1_Set_Duty(x)
LCD
Initialisation du module LCD : ……………………………………… LCD_Init()
Envoi de la commande x (Exp. _LCD_CLEAR) au module LCD : … LCD_Cmd(x)
Affiche chaine xy à ligne l et colonne c de l'écran LCD : …………… LCD_Out(l, c, "xy")
Affiche chaine uv à la position actuelle du curseur du LCD : ……….. LCD_Out_Cp("uv")
Affiche le caractère y à ligne l et colonne c de l'écran LCD : ……….. LCD_Chr(l, c, 'y')
Affiche le caractère m à la position actuelle du curseur du LCD : …… LCD_Chr_Cp('m')
Trames du Bus CAN :

➢ Technique de construction de message avec CRC :


Avec un message M = 1101011011 et la fonction génératrice G(x) = x4 + x + 1, nous procédons à la construction
du message M'' = 1101011011 0000 (4 zéro en poids faible sont ajouté car G est de degré 4).
Ensuite nous calculons le reste de M''/G(x) cela peut se faire simplement par des OUX (ou exclusifs).
Le calcul du CRC produit le message M' = 1101011011 1110 qui sera envoyé.
A la réception, le message reçu Mr = M' = 1101011011 1110, le récepteur recalcule le reste, s'il n'y a pas d'erreur
Mr/G(x) = 0000 ==> Message correcte (On montre que cela est vrai avec une probabilité de 98,5%).
Démarche utilisant XOR pas à pas : G(x) = x4 + x + 1 10011 Message M : 1101011011
1101011011 0000 1101011011 1110
10011 10011
010011 010011
10011 10011
000001011 0 000001011 1
10011 10011
00101 00 00100 11
100 11 100 11
001 11 0 CRC 000 00 0 OK correcte

Donc le message résultant à envoyer sera M' = 1101011011 1110

➢ Principe d'émission d'un caractère sur 8 bits avec parité selon le protocole RS232

Parité Paire = 0 si le nombre de bits à 1 de la donnée est paire, sinon =1.


Parité Impaire = 0 si le nombre de bits à 1 de la donnée est impaire, sinon =1.

2
➢ Trames I2C :
Lecture d'une donnée :

Écriture d'une donnée :

➢ Code Ascii

Vous aimerez peut-être aussi