Informatique Industrielle : Correction exercices: Instructions arithmétiques et logiq
Télécharger PDFObtenir le pack complet des cours, TDs, TPs et projets sur Informatique Industrielle : Microprocesseur & Microcontrôleur!
Vous souhaitez maîtriser les microprocesseurs et Microcontrôleurs ? Ne cherchez plus, nous avons le pack parfait pour vous.
Accédez à une collection complète des supports de cours, des travaux dirigés (TD) corrigés, des travaux pratiques (TP) et des projets.
Obtenir le pack maintenant1/4 N. ROUSSAFI Instructions arithmétiques et logiques Instructions arithmétiques et logiques
Exercice 1
Instructions Description états des registres après exécution movlw 0x05 0x05 (w) (w) = 0x05 movwf xdata (w) (xdata) (xdata) = 0x05 movlw 0x01 0x01 (w) (w) = 0x01 movwf ydata (w) (ydata) (ydata) = 0x01 movf xdata,w (xdata) (w) (w) = 0x05 incf ydata,w
(ydata) +1 (w) (w) = 0x01 + 1 = 0x02 addlw 0x01 (w) + 0x01 (w) (w) = 0x02 + 0x01 = 0x03 sublw 0x05 0x05 – (w) (w) (w) = 0x05 - 0x03 = 0x02 decf xdata,f (xdata) -1 (xdata) (xdata) = 0x05 - 0x01 = 0x04 2/4 N. ROUSSAFI Instructions arithmétiques et logiques
Exercice 2
Instructions Description états des registres après exécution movlw 0xD5 0xD5 (w) (w) = 0xD5 movwf X (w) (X) (X) = 0xD5 movlw 0x93 0x93 (w) (w) = 0x93 movwf Y (w) (Y) (Y) = 0x93 movlw 0xF0 0xF0 (w) (w) = 0xF0 andwf X,f (X) . (w) (X) (X) = 0xD5 AND 0xF0 0xD5 = 1101 0101 0xF0 = 1111 0000 (X) = 1101 0000 = 0xD0 0 . 0 = 0 0 . 1 = 0 1 . 0 = 0 1 . 1 = 1 iorwf Y,f (Y) OR (w) (Y) (Y) = 0x93 OR 0xF0 0x93 = 1001 0011 0xF0 = 1111 0000 (Y) = 1111 0011 = 0xF3 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 1
comf Y,f NOT(Y) (Y) (Y) = NOT(0xF3) (Y) = NON (1111 0011) (Y)= 0000 1100 = 0x0C ̅ = 1 ̅ = 0
3/4 N. ROUSSAFI Instructions arithmétiques et logiques
Exercice 3
PCL Instructions Description états des registres après exécution 0x10 movlw 0xFD 0xFD (w) (w) = 0xFD 0x11 xorlw 0xFF 0xFF (w) (w) (w) = 0xFF 0xFD (w) = 1111 1111
1111 1101 (w)=0000 0010 = 0x02 0 0 = 0 0 1 = 1 1 0 = 1 1 1 = 0 0x12 movwf MEM1 (w) (MEM1) (MEM1) = 0x02 0x13 addlw 0x01 0x01 + (w) (w) (w) = 0x01+ 0x02 = 0x03 0x14 movwf MEM2 (w) (MEM2) (MEM2) = 0x03 0x15 andwf MEM1,w
(MEM1) . (w) (w) (w) = 0x02 . 0x03 = 0x02 0x16 movwf MEM3 (w) (MEM3) (MEM3) = 0x02 0x17 decf MEM3,f (MEM3) -1(MEM3) (MEM3) = 0x02 - 0x01 = 0x01 0x18 addwf PCL,f (PCL) + (w) (PCL) (PCL)=0x18 + 0x01 + 0x02 = 0x1B PCL pointe l’adresse de la prochaine instruction : 0x18 + 0x01 0x19 movlw 0xFD instructions non exécutées (instructions sautées) 0x1A iorlw 0xFF 0x1B incf MEM2,f (MEM2)+1(MEM2) (MEM2) = 0x03 + 0x01 = 0x04 0x1C Instruction suivante (PCL) = 0x1C (MEM1) = 0x02, (MEM2) = 0x04, (MEM3) = 0x01 , (w) = 0x02 et (PCL) = 0x1C
4/4 N. ROUSSAFI Instructions arithmétiques et logiques
Exercice 4
Soit le registre STATUS : IRP RP1 RP0 ̅̅̅̅̅̅̅̅ Z DC C 1. Lorsque le microcontrôleur traite une instruction (arithmétique, logique ou remise à zéro : CLR), le bit Z indique si le résultat est nul (Z=1) ou non (Z=0). 2. Lorsque le microcontrôleur traite une instruction arithmétique le bit DC indique si on a une retenue sur les 4 bits de poids faible. 3. Lorsque le microcontrôleur traite une instruction arithmétique le bit C indique si on a une retenue sur 8 bits. L’état du registre STATUS au départ est : b
7 b
6 b
5 b
4 b
3 b
2 b
1 b0 4. On exécute la partie du programme suivante :
w STATUS movlw 0x18 0 0 0 1 1 0 0 0 b
7 b
6 b
5 b
4 b
3 b
2 b
1 b0 movwf STATUS 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 movlw 0xFF 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 addlw 0x01 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 5. Le PIC16F84A est piloté par un quartz de 8 MHz ; donc la fréquence de fonctionnement est : 8 MHz /4 = 2 MHz et la durée d’un cycle est : 1 / 2 MHz = 0,5 μs.
Durée en cycle movlw 0x18 1 movwf STATUS 1 movlw 0xFF 1 addlw 0x01 1 Total 4 La durée de cette partie du programme est : 4 x 0,5 μs = 2 μs
