universitat de girona escola politÈcnica superior...

39
Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis INFORMÀTICA INDUSTRIAL UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR CURS 2004-2005

Upload: others

Post on 01-Oct-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

UNIVERSITAT DE GIRONA

ESCOLA POLITÈCNICA SUPERIOR

CURS 2004-2005

Page 2: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

CAPÍTOL 2

INTRODUCCIÓ BÀSICA ALS PROCESSADORS I AL

MICROCONTROLADOR 8051

Page 3: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIALBASES NUMÈRIQUES USADES

EN PROGRAMACIÓ

• Hexadecimal• Octal• Binari• Decimal• BCD

Page 4: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

HEXADECIMAL (BASE 16)• Dígits Hexadecimals:

1 2 3 4 5 6 7 8 9 A B C D E FA=10B=11C=12D=13E=14F=15

Page 5: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

NÚMEROS DECIMALS, BINARIS, BCD, i

HEXADECIMALS

(43)10= (0100 0011)BCD= ( 0010 1011 )2 =

( 2 B )16

Page 6: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

CONCEPTES PREVIS

BIT, BYTE, NIBLE, WORD,...

PORTES LÒGIQUES: AND, OR, NOR, NAND, NOT, XOR

BIESTABLES, MONOESTABLES,...

BUFFERS, LATCH, MULTIPLEXORS, BLOCS FUNCIONALS,...

MEMÒRIES: ROM, RAM, FLASH, E2PROM,...

Page 7: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIALEL BIT I EL BYTE

BIT, MINIMA UNITAT D’INFORMACIÓ, 1 ó 0

BYTE, 8 BITSMSB LSB

128 64 32 16 8 4 2 1

NIBBLE ALT NIBBLE BAIX

CODI PONDERAT

2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0

128 64 32 16 8 4 2 1

Page 8: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

PROCESSADORCERCA EXECUCIÓ CERCA EXECUCIÓ CERCA

REGISTRES

ALU

UNITAT DE

CONTROL

ACUM.

RI

BUS

Page 9: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

REGISTRESSP

A

B

R0

R1

R3

R4

R2

R5

R7

R6

DPH DPL

PC

DPTR

PC

Alguns Registres del 8051 de 16-bits

Alguns registres de 8-bits del 8051

Page 10: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

MAPA DE MEMÒRIA EN EL 8051

• Mapa de memòria ROM interna de la família 8051

0000H

0FFFH

0000H

1FFFH8751

AT89C51 8752AT89C52

4k 8k

Page 11: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

• Espai de memòria RAM el el 80517FH

30H

2FH

20H

1FH

17H10H

0FH

07H

08H

18H

00H

Scratch pad RAM

Adressables bit a bit

Banc de registres 3

Banc de registres 2

Banc de registres 1 (stack)

Banc de registres 0

Page 12: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

Modes d’Adreçament del 8051• Registre• Directe • Registre Indirecte• Immediat• Relatiu• Absolut• Long• Indexat

Page 13: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

ASSEMBLADORLlenguatge simbolic per programar amb microprocesadors, varia segons el processador.

ORG 8000H ; DIRECTIVA DE ASSEMBLADOR; NO GENERA CODI

ETIQUETA:CODI_OPER DESTI, FONT ;COMENTARI

; MES COMENTARIS

Page 14: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

EXEMPLE ASSEMBLADOR

ORG 8000H 8BITSMOV A,#30H 7FFEHMOV R0,#25H 8000H MOV A

. 8001H #30H

. 8002H MOV R08003H #25H

.

Page 15: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

Mode d’Adreçament de Registre

MOV Rn, A ;n=0,..,7ADD A, RnMOV DPL, R6

MOV DPTR, AMOV Rm, Rn

Page 16: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

Mode d’Adreçament Directe

Tots els 128 bytes de RAM es poden accedir en mode directe, sovint s’utilitzen com posicions de RAM les posicions de la 30H fins la 7FH.

MOV R0, 40HMOV 56H, AMOV A, 4 ; ≡ MOV A, R4MOV 6, 2 ; copy R2 to R6

; MOV R6,R2 no és vàlid !

Page 17: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIALMode d’Adreçament Registre

Indirecte• En aquest mode, el registre s’utilitza d’apuntador a les dades

data.

MOV A,@Ri; mou el contingut de la posició de memoria RAM, l’adreça de la qual esta guardada en el registre Ri, al registre A ( i=0 or 1 )

MOV @R1,B

;El contingut dels registres R0 or R1 son font o destí a les instruccions MOV, ADD i SUBB.

Page 18: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

Mode d’Adreçament Immediat

MOV A,#65H

MOV R6,#65H

MOV DPTR,#2343H

MOV P1,#65H

Page 19: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

Adreçaments Relatiu, Absolut, i Llarg

Son usats només amb les instruccions jump i call:

SJMP

ACALL,AJMP

LCALL,LJMP

Page 20: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

Mode d’Adreçament Indexat • Aquest mode es molt usat en l'accés a dades a l’espai de

codi (ROM) del 8051

MOVC A,@A+DPTR(A,@A+PC)

A= contingut de l’adreça (A +DPTR) de la ROM Nota:

Cal fixar-se que les dades que recollim amb aquest mode d’adreçament estan a la memòria de codi (code) de la ROM del 8051, i utilitza la instrucció MOVC en lloc de MOV.

Page 21: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIALAlgunes Instruccions Simples

MOV desti,font ; desti <<<= fontMOV A,#72H ;A=72HMOV R4,#62H ;R4=62HMOV B,0F9H ;B=the content of F9’th byte of RAM

MOV DPTR,#7634HMOV DPL,#34HMOV DPH,#76H

MOV P1,A ;mov A to port 1

Nota 1:MOV A,#72H ≠ MOV A,72HDesprés de la instrucció “MOV A,72H ” el contingut de la posició de memòria RAM 72H es reemplaçada per l’Acumulador.

Nota 2:MOV A,R3 ≡ MOV A,3

Page 22: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

LA SUMA I LA RESTAADD A, Font ;A=A+Font

ADD A,#6 ;A=A+6

ADD A,R6 ;A=A+R6

ADD A,6 ;A=A+[6] or A=A+R6

ADD A,0F3H ;A=A+[0F3H]

SUBB A, Font ;A=A-Font-C

SUBB A,#6 ;A=A-6

SUBB A,R6 ;A=A+R6

Page 23: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIALMULTIPLICACIÓ i DIVISIÓ

MUL AB ;B|A = A*BMOV A,#25HMOV B,#65HMUL AB ;25H*65H=0E99

;B=0EH, A=99H

DIV AB ;A = A/B, B = A mod BMOV A,#25MOV B,#10DIV AB ;A=2, B=5

Page 24: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIALOPERACIONS DE BIT

SETBbit ; bit=1CLR bit ; bit=0

SETB C ; CY=1SETB P0.0 ;bit 0 from port 0 =1SETB P3.7 ;bit 7 from port 3 =1SETB ACC.2 ;bit 2 from ACCUMULATOR =1SETB 05 ;set high D5 of RAM loc. 20h

Note:La instrucció CLR es semblant a SETBi.e.:

CLR C ;CY=0

Aquesta instrucció es nomes per posar a 0, CLR:CLR A ;A=0

Page 25: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

INCREMENT I DECREMENT

DEC byte ;byte=byte-1INC byte ;byte=byte+1

INC R7DEC ADEC 40H ; [40]=[40]-1

Page 26: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

ROTACIÓ DE BITSRR – RL – RRC – RLC AEXEMPLE: RR A

RR:

RRC:

RL:

RLC:

C

C

Page 27: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIALOPERACIONS LÒGIQUES

ANL - ORL – XRLOperacions lògiques de Bit:AND, OR, XOREXEMPLE: MOV R5,#89H

ANL R5,#08H

CPL A ;complement a 1EXEMPLE: MOV A,#55H ;A=01010101 B

L01: CPL AMOV P1,AACALL DELAYSJMP L01

Page 28: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIALEL STACK EN EL 8051

• El Stack es una zona de memòria que utilitza la CPU per guardar alguns valors i que també podem utilitzar per guardar valors temporalment. Treballa com una memoria LIFO.

• El registre apuntador que s’utilitza per accedir al stack l’anomenem registre SP (stack pointer).

• El stack pointer en el 8051 es només de 8 bits, i només podràprendre valors entre 00 to FFH. Quan el 8051 es alimentat, el registre SP conté el valor 07.

7FH

30H

2FH

20H1FH

17H10H0FH

07H08H

18H

00H Register Bank 0

(Stack) Register Bank 1

Register Bank 2

Register Bank 3

Bit-Addressable RAM

Scratch pad RAM

Page 29: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

FUNCIONAMENT DE L’STACKExemple:

MOV R6,#25HMOV R1,#12HMOV R4,#0F3HPUSH 6PUSH 1PUSH 4

0BH

0AH

09H

08H

Start SP=07H

25

0BH

0AH

09H

08H

SP=08H

12

25

0BH

0AH

09H

08H

SP=09H

F3

12

25

0BH

0AH

09H

08H

SP=08H

Page 30: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

INTRUCCIONS DE LOOP i JUMP Jumps condicionals:

JZ Jump if A=0

JNZ Jump if A/=0

DJNZ Decrement and jump if A/=0

CJNE A,byte Jump if A/=byte

CJNE reg,#data Jump if byte/=#data

JC Jump if CY=1

JNC Jump if CY=0

JB Jump if bit=1

JNB Jump if bit=0

JBC Jump if bit=1 and clear bit

Page 31: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIALLA INSTRUCCIÓ DJNZ

DJNZ:

Escriu un programa per esborrar l’Acumulador (Acc, o A), i suma 3 a l’Acumulador 10 vegades.

Solució:MOV A,#0MOV R2,#10

AGAIN: ADD A,#03DJNZ R2,AGAIN ;repetir fins R2=0 (10 vegades)MOV R5,A

Page 32: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIALINSTRUCCIONS DE SALT INCONDICIONAL

LJMP(long jump)(salt llarg)LJMP es un salt incondicional. Es una instrucció de tres bytes, salta a una posició de memòria entre 0000 i FFFFH.

AJMP(absolute jump)(salt absolut)En aquesta instrucció de 2-bytes, es permet saltar a qualsevol posició de memòria dintre del primer bloc de 2k block ofprogram memory.

SJMP(short jump)(salt curt)(relatiu al PC)En aquesta instrucció de 2-bytes. L’adreça relativa es un valor de 8 bits entre 00 i FFH que el dividim en salts endavant fins +127 i salts enrera fins -128, bytes de memòria relativa al PC.

Page 33: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIALINSTRUCCIONS DE CRIDA A

SUBRUTINA (CALL)Una altra instrucció de ruptura de seqüència es la instrucció CALL, i s’utilitza per cridar subrutines.

• LCALL(long call)Instrucció de 3-bytes que s’utilitza per cridar subrutines a qualsevol lloc dels 64K de l’espai d’adreçament del 8051.

• ACALL (absolute call)ACALL es una instrucció de 2-bytes. El destí es dintre dels 2K.

Page 34: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIALEXEMPLE DE PROGRAMACIÓ

Exemple:Escriu un programa per copiar un bloc de 10 bytes de la RAM a partir de la posició 37h I ho posi a partir de la posició 59h.

Solució:MOV R0,#37h ; source pointer (apuntador font)MOV R1,#59h ; dest pointer (apuntador destí)MOV R2,#10; comptador

L1:MOV A,@R0MOV @R1,AINC R0INC R1DJNZ R2,L1

Page 35: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIALDecimal Addition (suma decimal)

• 156 + 248

. 100's 10's 1's

. 1 5 6

+ 2 4 8

= 4 0 4

SUMA DE16 Bits

• 1A44 + 22DB = 3D1F

. 256's 16’s 1's

. 1 A 4 4

+ 2 2 D B

= 3 D 1 F

Page 36: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

FENT UNA SUMA AMB EL 8051

. 65536's 256's 1's

. R6 R7

+ R4 R5

= R1 R2 R3

1.Suma els nibles baixos de R7 i R5, i deixa la resposta a R3.

2.Suma els nibles alts de R6 i R4, suma-hi el bit de carry del pas anterior, i deixar la resposta a R2.

3.Posar el carry del pas 2, al bit de mes pes de R1.

Page 37: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

Passos 1, 2, 3MOV A,R7 ;Mou el byte baix al accumulator

ADD A,R5 ;suma el segon byte baix a l’accumulator

MOV R3,A ;Mou el resultat de la suma del byte baix al registre resultat

MOV A,R6 ;Mou el byte alt a l’accumulator

ADDC A,R4 ;suma el segon byte a l’acumulador, mes el carry.

MOV R2,A ;Mou el resultat suma dels bytes alts als registre resultat.

MOV A,#00h ;Per defecte, el byte mes alt està a 0

ADDC A,#00h ;sumar zero, mes el carry del pas 2.

MOV R1,A ;guarda el resultat de la part mes alta al registre corresponent.

Page 38: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIALINSTRUCCIONS DEL 8051

JC: Jump if Carry Set

JMP: Jump to Address

JNB: Jump if Bit Not Set

JNC: Jump if Carry Not Set

JNZ: Jump if Acc. Not Zero

JZ: Jump if Accumulator Zero

LCALL: Long Call

LJMP: Long Jump

MOV: Move Memory

MOVC: Move Code Memory

MOVX: Move Extended Memory

MUL: Multiply Accumulator by B

NOP: No Operation

ORL: Bitwise OR

POP: Pop Value From Stack

PUSH: Push Value Onto Stack

RET: Return From Subroutine

RETI: Return From Interrupt

RL: Rotate Accumulator Left

RLC: Rotate Acc. Left Through Carry

RR: Rotate Accumulator Right

RRC: Rotate Acc. Right Through Carry

SETB: Set Bit

SJMP: Short Jump

SUBB: Sub. From Acc. With Borrow

SWAP: Swap Accumulator Nibbles

XCH: Exchange Bytes

XCHD: Exchange Digits

XRL: Bitwise Exclusive OR

Undefined: Undefined Instruction

ACALL: Absolute Call

ADD, ADDC: Add Acc. (With Carry)

AJMP: Absolute Jump

ANL: Bitwise AND

CJNE: Compare & Jump if Not Equal

CLR: Clear Register

CPL: Complement Register

DA: Decimal Adjust

DEC: Decrement Register

DIV: Divide Accumulator by B

DJNZ: Dec. Reg. & Jump if Not Zero

INC: Increment Register

JB: Jump if Bit Set

JBC: Jump if Bit Set and Clear Bit

Page 39: UNIVERSITAT DE GIRONA ESCOLA POLITÈCNICA SUPERIOR …silver.udg.edu/infind/ARXIUS/infindcap2.pdf · MOV A,#30H 7FFEH MOV R0,#25H 8000H MOV A. 8001H #30H. 8002H MOV R0 8003H #25H

Universitat de Girona - ESCOLA POLITÈCNICA SUPERIOR Antoni Martorano i Gomis

INFORMÀTICA INDUSTRIAL

FI