Objectifs du TP : Programmer des interruptions Comparer les niveaux de prio
Objectifs du TP : Programmer des interruptions Comparer les niveaux de priorité des trois interruptions matérielles : IRQ, FIRQ et NMI. Exercice 1 : On se propose de construire un programme qui permet d’allumer les quatre diodes rouges de poids fort, reliées au port B et maintenir éteintes les quatre diodes rouges de poids faible du même port B. une fois mis au point, on le chargera en mémoire à partir de l’adresse $0000, exécutera et vérifiera l’état des diodes. Le tableau suivant présente ce programme : PROG 1 Adresse Code machine Etiq. Code assembleur Mode D’adressage Commentaire Code opération Code opérande Code opération Code opérande Octet 1 Octet 2 Octet 1 Octet 2 $0000 7F - 80 03 - Clr $8003 Etendu Autorisation d’écriture dans DDRB $0003 86 - FF - - Lda #$FF Immédiat (A)=$FF $0005 B7 - 80 02 - Sta $8002 Etendu Port B déclarer en sortie $0008 86 - 04 - - Lda #$04 Immédiat (A)=$04 $000A B7 - 80 03 - Sta $8003 Etendu Autorisation d’écriture dans ORB $000D 86 - 0F - - Lda #$0F Immédiat (A)=$0F $000F B7 - 80 02 - Sta $8002 Etendu Allumage des 4 diodes MSB $0012 3F - - - - Swi - Inhérent Fin programme On a traduit ce programme en langage assembleur puis en langage machine, et on a constaté après exécution du programme, l’allumage des diodes rouges de poids fort du port B, et l’extinction des quatre diodes rouges de poids faible du même port B. Première partie : Programmation du PIA 6821 Exercice 2 : On propose un sous-programme de temporisation DELAI qui consiste à occuper le processeur, pendant un certain temps ∆T, à réaliser une tâche qui consiste à charger le registre d’index X par une valeur quelconque, puis le décrémenter jusqu'à la valeur 0. Le tableau suivant présente ce sous-programme : Sous-programme DELAI Adresse Code machine Etiq. Code assembleur Mode d’ adressage Commentaire Code opération Post octet En mode d adressage indexé Code opérande Code opération Code opérande octet 1 octet 2 octet 1 octet 2 $0500 8E - - FC 30 - Ldx #$FC30 Immédiat (X)=$FC30 $0503 30 - 88 FF - L Leax $FF, x Indexé Décrémenter X $0506 26 - - FB - - Bne L - Relatif branchement si Z=0 $0508 39 - - - - - Rts - Inhérent Fin de sous- programme *Calcul du post octet : On a un déplacement sur 8 bits, donc le post octet est 1RR01000, or pour le registre X on a RR=00 donc : post octet = (10001000)2 = (88) H *Calcul du déplacement : On a : Adresse effective = base + déplacement Donc : déplacement = Adresse effective – base = 0503 - 0508 = -5 Or -5= (FB) H Exercice 3 : On modifie PROG 1 pour avoir un programme PROG 2 qui permet d’allumer alternativement les 4 diodes rouges de poids fort et les 4 diodes rouges de poids faible. PROG 2, comme programme principale, sous-entend donc l’appel périodique du sous-programme de temporisation DELAI. Le tableau suivant présente ce programme : PROG 2 Adresse Code machine Etiq. Code assembleur Mode D’adressage Commentaire Code opération Code opérande Code opération Code opérande Octet 1 Octet 2 Octet 1 Octet 2 $0000 7F - 80 03 - Clr $8003 Etendu Autorisation d’écriture dans DDRB $0003 86 - FF - - Lda #$FF Immédiat (A)=$FF $0005 B7 - 80 02 - Sta $8002 Etendu Port B déclarer en sortie $0008 86 - 04 - - Lda #$04 Immédiat (A)=$04 $000A B7 - 80 03 - Sta $8003 Etendu Autorisation d’écriture dans ORB $000D 86 - 0F - loop Lda #$0F Immédiat (A)=$0F $000F B7 - 80 02 - Sta $8002 Etendu Allumage des 4 diodes MSB $0012 BD - 05 00 - Jsr $0500 Etendu Appelle de sous- programme $0015 43 - - - - Coma - Inhérent Complément à 1 de A $0016 B7 - 80 02 - Sta $8002 Etendu Allumage des 4 diodes LSB $0019 BD - 05 00 - Jsr $0500 Etendu Appelle de sous- programme $001C 20 - EF - - Bra Loop Relatif Se brancher à Loop $001E 3F - - - - Swi - Inhérent Fin de programme *Calcul du déplacement : On a : Adresse effective = base + déplacement Donc : déplacement = Adresse effective – base = 000D - 001E = (EF) Après exécution du programme, on a constaté l’allumage alternatif des 4 diodes rouges de poids fort et les 4 diodes de poids rouges de poids faible du port B. Exercice 4 : On modifie PROG 2 pour avoir un programme PROG 3 qui permet d’allumer puis d’éteindre périodiquement les 8 diodes rouges du port B. Le tableau suivant présente ce programme : PROG 3 Adresse Code machine Etiq. Code assembleur Mode D’adressage Commentaire Code opération Code opérande Code opération Code opérande Octet 1 Octet 2 Octet 1 Octet 2 $0000 7F - 80 03 - Clr $8003 Etendu Autorisation d’écriture dans DDRB $0003 86 - FF - - Lda #$FF Immédiat (A)=$FF $0005 B7 - 80 02 - Sta $8002 Etendu Port B déclarer en sortie $0008 86 - 04 - - Lda #$04 Immédiat (A)=$04 $000A B7 - 80 03 - Sta $8003 Etendu Autorisation d’écriture dans ORB $000D 4F - - - loop Clra Inhérent (A)=$00 $000E B7 - 80 02 - Sta $8002 Etendu 8 diodes du port B allumé $0011 BD - 05 00 - Jsr $0500 Etendu Appelle de sous- programme $0014 43 - - - - Coma - Inhérent Complément à 1 de A $0015 B7 - 80 02 - Sta $8002 Etendu 8 diodes du port B éteinte $0018 BD - 05 00 - Jsr $0500 Etendu Appelle de sous- programme $001B 20 - F0 - - Bra Loop Relatif Se brancher à Loop $001D 3F - - - - Swi - Inhérent Fin de programme *Calcul du déplacement : On a : Adresse effective = base + déplacement Donc : déplacement = Adresse effective – base = 000D – 001D = (F0) Après exécution du programme, on a constaté l’allumage puis l’extinction périodique des 8 diodes rouges du port B. Exercice 5 : On modifie PROG 3 pour avoir un PROG 4 qui permet d’allumer puis d’éteindre périodiquement les 8 diodes vertes du port A. Le tableau suivant présente ce programme : PROG 4 Adresse Code machine Etiq. Code assembleur Mode D’adressage Commentaire Code opération Code opérande Code opération Code opérande Octet 1 Octet 2 Octet 1 Octet 2 $0000 7F - 80 01 - Clr $8001 Etendu Autorisation d’écriture dans DDRA $0003 86 - FF - - Lda #$FF Immédiat (A)=$FF $0005 B7 - 80 00 - Sta $8000 Etendu Port A déclarer en sortie $0008 86 - 04 - - Lda #$04 Immédiat (A)=$04 $000A B7 - 80 01 - Sta $8001 Etendu Autorisation d’écriture dans ORA $000D 4F - - loop Clra Inhérent (A)=$00 $000E B7 - 80 00 - Sta $8000 Etendu 8 diodes du port A allumé $0011 BD - 05 00 - Jsr $0500 Etendu Appelle de sous- programme $0012 43 - - - - Coma - Inhérent Complément à 1 de A $0015 B7 - 80 00 - Sta $8000 Etendu 8 diodes du port A éteinte $0018 BD - 05 00 - Jsr $0500 Etendu Appelle de sous- programme $001B 20 - F0 - - Bra Loop Relatif Se branche à loop $001D 3F - - - - Swi - Inhérent Fin de programme *Calcul du déplacement : On a : Adresse effective = base + déplacement Donc : déplacement = Adresse effective – base = 000D – 001D = (F0) Après exécution du programme, on a constaté l’allumage puis l’extinction périodique des 8 diodes du port A. Exercice 6 : On modifie PROG 3 pour avoir un PROG 5 qui permet de réaliser un chenil lard sur les 8 diodes du port B. Le tableau suivant présente ce programme : PROG 5 Adresse Code machine Etiq. Code assembleur Mode D’adressage Commentaire Code opération Code opérande Code opération Code opérande Octet 1 Octet 2 Octet 1 Octet 2 $0000 7F - 80 03 - Clr $8003 Etendu Autorisation d’écriture dans DDRB $0003 86 - FF - - Lda #$FF Immédiat (A)=$FF $0005 B7 - 80 02 - Sta $8002 Etendu Port B déclarer en sortie $0008 86 - 04 - - Lda #$04 Immédiat (A)=$04 $000A B7 - 80 03 - Sta $8003 Etendu Autorisation d’écriture dans ORB $000D 86 - 7F - L Lda #$7F Immédiat (A)=$7F $000F B7 - 80 02 - Sta $8002 Etendu Allumage de la première diode $0012 43 - - - - Coma - Inhérent Complément à 1 de A $0013 44 - - - - Lsra - Inhérent Décalage à droite de A $0014 43 - - - - Coma - Inhérent Complément à 1 de A $0015 BD - 05 00 - Jsr $0500 Etendu Appelle de sous- programme $0018 81 uploads/S4/ cr-inf.pdf
Documents similaires
-
107
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Oct 16, 2021
- Catégorie Law / Droit
- Langue French
- Taille du fichier 0.0958MB