Sunteți pe pagina 1din 5

ENP d’ORAN Dimanche 31/01/2016

Dpt G.E
2ème Année Automatique Nom :………………………
Examen Final :SN3 Prénom :………………………

Exercice 1(44pts)
Soit le programme 8085 suivant écrit dans la mémoire RAM à partir de
l’adresse 8000:
Programme Programme corrigé ADRESSE
ORG 3000 ORG 8000 8000
MOV C,10 MVI C,10 8000
LXI DE, E000 LXI D, E000 8002
LXI HL, 9000 LXI H, 9000 8005
A1 MVI A,M A1 MOV A,M 8008
CPI A,60 CPI 60 8009
JZ FIN JZ FIN 800A
MVI C,A MOV C,A 800D
ADD A,A ADD A 800E
INC C INR C 8010
OUT F OUT 0F 8011
STAX DE STAX D 8013
INX HL INX H 8014
DEC E DCR E 8015
DCX C DCR C 8016
JNZ A1 JNZ A1 8017
FIN : HALT FIN : HLT 801A
ORG 8000 ORG 9000 801B
DB, 0A,FF,1C,04 DB, 0A,FF,1C,04 9000
DB 05,10,60,90 DB 05,10,60,90 9004

1-Remplir le tableau ci-dessus


2-Combien de fois s’exécute l’instruction ‘INR C’ 06 fois
3-Si la fréquence est égale à 10 Mhz, combien dure ce programme
Nombre d’états=500, t=50µs
4-A la fin du programme quel serait le contenu des Registres:
A=60, C=10, D=E0, E=FA, H=90, L=06, RE=44
5-Quelles sont les adresses des cases mémoires modifiées par ce programme
et quel est leur contenu.

adresses contenu
E000 20
E0FF FE
E0FE 38
E0FD 08
E0FC 0A
E0FB 20
EXERCICE 2 :(
Soit le programme suivant

START: CLRF VAL


CALL SOMME
MOVF VAL,0
A1: DECFSZ VAL,1
GOTO A1
NOP
END
Le sous programme SOMME calcule la somme de trois variables N1, N2 et N3
dont les valeurs sont 0x42, 0x65 et 0x31, et de stocker le résultat dans
VAL.

1-Proposer 4 adresses de mémoire RAM utilisables pour les variables


N1, N2, N3 et VAL.0X20 0X21 0X22 023
2- Ecrire le sous-programme en assembleur.
SOMME : MOVLW 0X42
MOVWF N1
MOVLW 0X65
MOVWF N2
MOVLW 0X31
MOVWF N3
ADDLW N1,0
ADDLW N2,0
MOVWF VAL
RETURN

3- Quel est le résultat final placé dans val? D8


4-Combien de cycles-instructions dure l’exécution de ce sous programme 11
CYCLES
5- Ecrire le programme complet.
N1 EQU 0X20
N2 EQU 0X21
N3 EQU 0X22
VAL EQU 0X23
START: CLRF VAL
CALL SOMME
MOVF VAL,0
A1: DECFSZ VAL,1
GOTO A1
NOP
END
SOMME : MOVLW 0X42
MOVWF N1
MOVLW 0X65
MOVWF N2
MOVLW 0X31
MOVWF N3
ADDLW N1,0
ADDLW N2,0
MOVWF VAL
RETURN
5- Combien de fois sera exécutée la boucle A1 ?.D7
6- Combien de cycles-instructions dure l’exécution de ce programme ?.702
Cycles
4- Avec une fréquence de fonctionnement de 10 MHz, quel est alors le
temps d’exécution de ce programme?702x4/107 =280.8µs

EXERCICE 3 :
En utilisant les interruptions, écrire un programme en mikroc qui réalise
le fonctionnement suivant :

char i;
void interrupt ()
{
if(intcon.intf==1){ for(i=0;i<8;i++) {PORTD=(0x01<< i | 0x80>> i) ;
Delay_ms(500); }}
if(intcon.rbif==1)
{ if(portb.B5==0){ for(i=0;i<5;i++) { PORTD=(0x08<< i | 0x10>> i);
Delay_ms(500); }}}
intcon.intf=0;
intcon.rbif=0;
}
void main()
{
option_reg=0x00;
intcon=0x98;
TRISB=0xff;
TRISD=0x00;

for(;;)
{
PORTD=0x00; Delay_ms(500);
PORTD=0xff; Delay_ms(500);
}}

INSTRUCTIONS OPERANT SUR REGISTRE (direct) indicateurs Cycles


ADDWF F,d W+F {W,F? d} C,DC,Z 1
ANDWF F,d W and F{W,F? d} Z 1
CLRF F Clear F Z 1
CLRW Clear W Z 1
CLRWDT Clear Watchdog timer TO,PD 1
COMF F,d Complémente F {W,F? d} Z 1
DECF F,d Décrémente F {W,F? d} Z 1
DECFSZ F,d Décrémente F {W,F? d} skip if 0 1(2)
INCF F,d Incrémente F {W,F? d} Z 1
INCFSZ F,d Incrémente F {W,F? d} skip if 0 1(2)
IORWF F,d WorF{W,F?d} Z 1
MOVF F,d F{W,F?d} Z 1
MOVWF F F 1
RLF F,d Rotation à gauche de F a travers C {W,F? d} C 1
RRF F,d Rotation à droite de F a travers C {W,F? d} 1
SUBWF F,d F–W {W,F? d} C,DC,Z 1
SWAPF F,d Permute les 2 quartets de F {W,F? d} 1
XORWF F,d W xor F {W,F? d} Z 1

INSTRUCTIONS OPERANT SUR BIT


BCF F,b RAZ du bit b du registre F 1
BSF F,b RAU du bit b du registre F 1
BTFSC F,b Teste le bit b de F, si 0 saute une instruction 1(2)
BTFSS F,b Teste le bit b de F, si 1 saute une instruction 1(2)

INSTRUCTIONS OPERANT SUR DONNEE (Immediat)


ADDLW K W+K d a n s W C,DC,Z 1
ANDLW K W and K Z 1
IORLW K W or K Z 1
MOVLW K K dans W 1
SUBLW K K– W dans W C,DC,Z 1
XORLW K W xor K dans W Z 1

INSTRUCTIONS GENERALES
CALL L Branchement à un sous programme de label L 2
GOTO L Branchement à la ligne de label L 2
NOP No opération 1
RETURN Retour d'un sous programme 2
RETFIE Retour d'interruption 2
RETLW K Retour d'un sous programme avec K dans W 2
SLEEP Se met en mode standby TO, PD 1

INSTRUCTION NOMBRE D’ETATS


MVI 7
LXI 10
CPI 7
JZ 10 ou 7
MOV 4
ADD 4
INR 4
OUT 4
STAX 7
INX 6
DCX 6
DCR 4
hlt 5
U1
13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
35
RB2
2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
1
RC4/SDI/SDA
24
D8 D7 D1 D2 D3 D4 D5 D6
MCLR/Vpp/THV RC5/SDO
25
RC6/TX/CK
26
RC7/RX/DT
LED-GREEN LED-GREEN LED-GREEN LED-GREEN LED-GREEN LED-GREEN LED-GREEN LED-GREEN
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A

S-ar putea să vă placă și