39
1 Tema 7 Programación elemental

tema7 prog elemental - UMH

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: tema7 prog elemental - UMH

1

Tema 7

Programación elemental

Page 2: tema7 prog elemental - UMH

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

Page 3: tema7 prog elemental - UMH

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”.

Page 4: tema7 prog elemental - UMH

4

Tema 7. Programación elemental

INSTRUCCIONES DE SUMA

Ejemplo 1:

Page 5: tema7 prog elemental - UMH

5

Tema 7. Programación elemental

INSTRUCCIONES DE SUMA

Ejemplo 2:

Page 6: tema7 prog elemental - UMH

6

Tema 7. Programación elemental

INSTRUCCIONES DE SUMA

El PIC16F84 tiene dos instrucciones de suma:

addlw kaddwf f,d

Page 7: tema7 prog elemental - UMH

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

Page 8: tema7 prog elemental - UMH

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

Page 9: tema7 prog elemental - UMH

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.

Page 10: tema7 prog elemental - UMH

10

Tema 7. Programación elemental

INSTRUCCIONES DE RESTA

El PIC16F84 tiene dos instrucciones de resta:

sublw ksubwf f,d

Page 11: tema7 prog elemental - UMH

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

Page 12: tema7 prog elemental - UMH

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

Page 13: tema7 prog elemental - UMH

13

Tema 7. Programación elemental

INSTRUCCIONES DE INCREMENTAR Y DECREMENTAR

El PIC16F84 tiene otras instrucciones aritméticas:

decf f,dincf f,d

Page 14: tema7 prog elemental - UMH

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

Page 15: tema7 prog elemental - UMH

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

Page 16: tema7 prog elemental - UMH

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

Page 17: tema7 prog elemental - UMH

17

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

Page 18: tema7 prog elemental - UMH

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

Page 19: tema7 prog elemental - UMH

19

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

Page 20: tema7 prog elemental - UMH

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

Page 21: tema7 prog elemental - UMH

21

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

Page 22: tema7 prog elemental - UMH

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

Page 23: tema7 prog elemental - UMH

23

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

Page 24: tema7 prog elemental - UMH

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

Page 25: tema7 prog elemental - UMH

25

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

Page 26: tema7 prog elemental - UMH

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

Page 27: tema7 prog elemental - UMH

27

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

Page 28: tema7 prog elemental - UMH

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

Page 29: tema7 prog elemental - UMH

29

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

Page 30: tema7 prog elemental - UMH

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

Page 31: tema7 prog elemental - UMH

31

Tema 7. Programación elemental

INSTRUCCIONES LÓGICAS

Page 32: tema7 prog elemental - UMH

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

Page 33: tema7 prog elemental - UMH

33

Tema 7. Programación elementalINSTRUCCIONES LÓGICAS

Page 34: tema7 prog elemental - UMH

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

Page 35: tema7 prog elemental - UMH

35

Tema 7. Programación elementalINSTRUCCIONES LÓGICAS

Page 36: tema7 prog elemental - UMH

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

Page 37: tema7 prog elemental - UMH

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.

Page 38: tema7 prog elemental - UMH

38

Tema 7. Programación elemental

INSTRUCCIÓN “SLEEP”

Page 39: tema7 prog elemental - UMH

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………