tema7 prog elemental - UMH

Post on 29-Jun-2022

0 views 0 download

Transcript of tema7 prog elemental - UMH

1

Tema 7

Programación elemental

2

Tema 7. Programación elemental

El PIC16f84 puede realizar las siguientes operaciones aritméticas: sumar, restar, incrementar y decrementar un registro:

addlw kaddwf f,dsublw k

subwf f,ddecf f,dincf f,d

3

Tema 7. Programación elemental

INSTRUCCIONES DE SUMA

La suma se realiza en aritmética binaria pura sin signo y afecta a los flags del STATUS de la siguiente forma:

•Z (Zero) à si el resultado de la operación es cero, “Z=1”, si no, “Z=0”.

•C (Carry) à si hay un acarreo del bit 7, es decir, si el resultado es mayorque 0xFF (255 en decimal), “C=1”, en caso contrario, “C=0”.

•DC (Digit Carry) à si hay un acarreo del bit 3 al 4, es decir que la suma delas dos mitades (nibbles) menos significativas resulta mayor que 0xF (15 en decimal), , “DC=1”, en caso contrario, “DC=0”.

4

Tema 7. Programación elemental

INSTRUCCIONES DE SUMA

Ejemplo 1:

5

Tema 7. Programación elemental

INSTRUCCIONES DE SUMA

Ejemplo 2:

6

Tema 7. Programación elemental

INSTRUCCIONES DE SUMA

El PIC16F84 tiene dos instrucciones de suma:

addlw kaddwf f,d

7

Tema 7. Programación elemental

INSTRUCCIONES DE SUMA

Nemónico Descripción Flagsafectados

addlw k Add literal to W.(W) + k à (W)

(Suma el contenido del registro W con el literal oconstante k. Almacena el resultado en W.)

C,DC,Z

Ejemplo: addlw 0x4F

(W) + 4Fh à (W)

Antes: (W)=0xA3, C=¿?Después: (W)=0xF2, C=0

8

Tema 7. Programación elemental

INSTRUCCIONES DE SUMA

Nemónico Descripción Flagsafectados

addwf f,d Add W and f.

(W) + (f) à (destino)si d=0, destino=(W)si d=1, destino=(f)

(Suma el contenido del registro W al contenido del registro f.Almacena el resultado en W si d=0 y en el registro f si d=1.)

C,DC,Z

Ejemplo 1:addwf PORTA,W

(PORTA) + (W) à (W)

Antes: (W)=0x17, (PORTA)=0xC2 y C=¿?Después: (W)=0xD9, (PORTA)=0xC2 y C=0Ejemplo 2:addwf Contador,F

(Contador) + (W) à (Contador)

Antes: (W)=0xD1, (Contador)=0x38 y C=¿?Después: (W)=0xD1, (Contador)=0x09 y C=1

9

Tema 7. Programación elemental

INSTRUCCIONES DE RESTA

La resta se realiza sumando, en binario puro sin signo, el registro “f” (o el literal “k”)más el C2 (complemento a dos) del contenido del registro W. Al realizar la resta en 8 bits con signo, el resultado no puede exceder de +127 ni de -128. El flag de Carryindica si el resultado es positivo (C se pone a “1”) o es negativo (C se pone a “0”).

Pueden ocurrir 3 casos:

•Si el resultado es positivo à C=1 y Z=0.

•Si el resultado es cero à C=1 y Z=1.

•Si el resultado es negativo à C=0 y Z=0.

10

Tema 7. Programación elemental

INSTRUCCIONES DE RESTA

El PIC16F84 tiene dos instrucciones de resta:

sublw ksubwf f,d

11

Tema 7. Programación elementalINSTRUCCIONES DE RESTA

Nemónico Descripción Flagsafectados

sublw k Substract W from literal.k - (W) à (W)

C,DC,Z

Ejemplo 1:sublw 0x03

0x03- (W) à (W)

Antes: (W)=0x01, C=¿? y Z=¿?Después: (W)=0x02, C=1 (el resultado es positivo) y Z=0

Ejemplo 2:sublw 0x02

0x03- (W) à (W)

Antes: (W)=0x02, C=¿? y Z=¿?Después: (W)=0x00, C=1 y Z=1 (el resultado es cero)

Ejemplo 3:sublw 0x02

0x03- (W) à (W)

Antes: (W)=0x03 (+3 en decimal), C=¿? y Z=¿?Después: (W)=0xFF (-1 en decimal), C=0 (el resultado es negativo) y Z=0

12

Tema 7. Programación elemental

INSTRUCCIONES DE RESTANemónico Descripción Flags

afectados

subwf f,d Substract W from f.

(f) - (W) à (destino)si d=0, destino=(W)si d=1, destino=(f)

C,DC,Z

Ejemplo 1: subwf Reg1,F

(Reg1) - (W) à (Reg1)

Antes: (Reg1)=0x03, (W)=0x02, C=¿? y Z=¿?Después: (Reg1)=0x01, (W)=0x02, C=1 (resultado positivo) y Z=0Ejemplo 2: subwf Reg1,F

(Reg1) - (W) à (Reg1)

Antes: (Reg1)=0x02, (W)=0x02, C=¿? y Z=¿?Después: (Reg1)=0x00, (W)=0x02, C=1 y Z=1 (resultado cero)Ejemplo 3:subwf Reg1,F

(Reg1) - (W) à (Reg1)

Antes: (Reg1)=0x01 (+1 en decimal), (W)=0x02, C=¿? y Z=¿?Después: (Reg1)=0xFF (-1 en decimal), (W)=0x02, C=0 (negativo) y Z=0

13

Tema 7. Programación elemental

INSTRUCCIONES DE INCREMENTAR Y DECREMENTAR

El PIC16F84 tiene otras instrucciones aritméticas:

decf f,dincf f,d

14

Tema 7. Programación elemental

INSTRUCCIONES DE INCREMENTAR Y DECREMENTAR

Nemónico Descripción Flagsafectados

decf f,d Decrement f.

(f) - 1 à (destino)si d=0, destino=(W)si d=1, destino=(f)

Z

Ejemplo 1:decf Contador, F

(Contador) – 1 à (Contador)

Antes: (Contador)=0x01 y Z=¿?Después: (Contador)=0x00 y Z=1

Ejemplo 2:decf Contador, W

(Contador) – 1 à (W)

Antes: (Contador)=0x04, (W)=¿? y Z=¿?Después: (Contador)=0x04, (W)=0x03 y Z=0

15

Tema 7. Programación elemental

INSTRUCCIONES DE INCREMENTAR Y DECREMENTAR

Nemónico Descripción Flagsafectados

incf f,d Increment f.

(f) + 1 à (destino)si d=0, destino=(W)si d=1, destino=(f)

Z

Ejemplo 1:incf Contador, F

(Contador) + 1 à (Contador)

Antes: (Contador)=0xFF y Z=¿?Después: (Contador)=0x00 y Z=1

Ejemplo 2:incf Contador, W

(Contador) + 1 à (W)

Antes: (Contador)=0x01, (W)=¿? y Z=¿?Después: (Contador)=0x01, (W)=0x02 y Z=0

16

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

El PIC16F84 dispone de las siguientes instrucciones lógicas:

andlw kandwf f,d

comf f,d

iorlw kiorwf f,d

xorlw kxorwf f,d

rlf f,drrf f,d

swapf f,d

AND

NOT

OR

XOR

ROTACION

INTERCAMBIO

17

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

18

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

Nemónico Descripción Flagsafectados

andlw k AND literal with k

(W) AND k à (W)

Z

Ejemplo 1: andlw b’01011111’

(W) AND b’01011111’à (W)

Antes: (W)=b’10100011’ y Z=¿?Después: (W)=b’00000011’ y Z=0

19

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

20

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

Nemónico Descripción Flagsafectados

andwf f,d AND W with f

(W) AND (f) à (destino)

Z

Ejemplo 1: andwf FSR,F

(W) AND (FSR) à (FSR)

Antes: (W)= b’00010111’ (FSR)=b’11000010’ y Z=¿?Después: (W)= b’00010111’ (FSR)=b’00000010’ y Z=0

Ejemplo 2: andwf FSR,W

(W) AND (FSR) à (W)

Antes: (W)= b’00010111’ (FSR)= b’11000010’ y Z=¿?Después: (W)= b’00000010’ (FSR)= b’11000010’ y Z=0

21

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

22

Tema 7. Programación elemental

INSTRUCCIONES LÓGICASNemónico Descripción Flags

afectados

com f,d Complement f

(/f) à (destino)

Z

Ejemplo 1: comf Reg1,F

(/Reg1) à (Reg1)

Antes: (Reg1)= b’00010011’ y Z=¿?Después: (Reg1)= b’11101100’ y Z=0

Ejemplo 2: comf Reg1,W

((/Reg1) à (W)

Antes: (Reg1)= b’00010011’ (W)=¿? y Z=¿?Después: (Reg1)= b’00010011’ (W)=b’11101100’ y Z=0

23

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

24

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

iorlw k Inclusive OR Literal with k

(W) OR k à (W)

Z

Ejemplo 1: iorlw b’00110101’

(W) OR b’00110101’à (W)

Antes: (W)=b’10011010’ y Z=¿?Después: (W)=b’10111111’ y Z=0

25

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

26

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

Nemónico Descripción Flagsafectados

iorwf f,d Inclusive OR W with f

(W) OR (f) à (destino)

Z

Ejemplo 1:iorwf Resultado,W

(W) OR (Resultado) à (W)

Antes: (Resultado)= b’00010011’ (W)=b’10010001’ y Z=¿?Después: (Resultado)= b’00010011’ (W)=b’10010011’ y Z=0

27

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

28

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

xorlw k Exclusive OR Literal with k

(W) XOR k à (W)

Z

Ejemplo 1:xorlw b’10101111’

(W) XOR b’10101111’à (W)

Antes: (W)=b’10110101’ y Z=¿?Después: (W)=b’00011010’ y Z=0

29

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

30

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

Nemónico Descripción Flagsafectados

xorwf f,d Exclusive OR W with f

(W) XOR (f) à (destino)

Z

Ejemplo 1: xorwf Reg,W

(W) OR (Reg) à (W)

Antes: (Reg)= b’10101111’ (W)=b’10110101’ y Z=¿?Después: (Reg)= b’10101111’ (W)=b’00011010’ y Z=0

31

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

32

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

Nemónico Descripción Flagsafectados

rlf f,d Rotate Left f through Carry C

Ejemplo 1:rlf Reg1,W

Antes: (Reg1)= b’11100110’ (W)=¿? y C=0Después: (Reg1)= b’11100110 (W)=b’11001100’ y C=1

33

Tema 7. Programación elementalINSTRUCCIONES LÓGICAS

34

Tema 7. Programación elementalINSTRUCCIONES LÓGICAS

Nemónico Descripción Flagsafectados

rrf f,d Rotate Right f through Carry C

Ejemplo 1:rrf Reg1,W

Antes: (Reg1)= b’11100110’ (W)=¿? y C=0Después: (Reg1)= b’11100110 (W)=b’01110011’ y C=0

35

Tema 7. Programación elementalINSTRUCCIONES LÓGICAS

36

Tema 7. Programación elementalINSTRUCCIONES LÓGICAS

Nemónico Descripción Flagsafectados

swapf,d Swap nibbles in f

Ejemplo 1: swapf Reg1,W

Antes: (Reg1)= 0xA5 y (W)=¿?Después: (Reg1)= 0xA5 y (W)=0x5A

Ejemplo 2:swapf Reg1,F

Antes: (Reg1)= 0xA5Después: (Reg1)= 0x5A

37

Tema 7. Programación elemental

INSTRUCCIÓN “SLEEP”

En muchas situaciones reales el microcontrolador debe esperar, sin hacer nada, a que se produzca algún acontecimiento externo que le ponga de nuevo en funcionamiento.

Para ahorrar energía, los microcontroladores PIC disponen de la instrucción especial sleep que les pasa al estado de reposo o de bajo consumo, en el cual los requerimientos de potencia son mínimos.

En dicho estado se detiene el reloj principal y se congelan sus circuitos asociados, quedando el microcontrolador en un sueño (sleep).

Al activarse una interrupción ocasionada por el acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo.

38

Tema 7. Programación elemental

INSTRUCCIÓN “SLEEP”

39

BIBLIOGRAFÍA

"Microcontrolador PIC16F84, Desarrollo de proyectos" E. Palacios, F. Remiro, L.J. López. Ra-Ma, 2004

Podéis encontrar más información de este Tema 7 en el

CAPÍTULO 8

Y en los manuales de los microcontroladores………