tema7 prog elemental - UMH
Transcript of tema7 prog elemental - UMH
![Page 1: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/1.jpg)
1
Tema 7
Programación elemental
![Page 2: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/2.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/3.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/4.jpg)
4
Tema 7. Programación elemental
INSTRUCCIONES DE SUMA
Ejemplo 1:
![Page 5: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/5.jpg)
5
Tema 7. Programación elemental
INSTRUCCIONES DE SUMA
Ejemplo 2:
![Page 6: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/6.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/7.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/8.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/9.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/10.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/11.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/12.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/13.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/14.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/15.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/16.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/17.jpg)
17
Tema 7. Programación elemental
INSTRUCCIONES LÓGICAS
![Page 18: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/18.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/19.jpg)
19
Tema 7. Programación elemental
INSTRUCCIONES LÓGICAS
![Page 20: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/20.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/21.jpg)
21
Tema 7. Programación elemental
INSTRUCCIONES LÓGICAS
![Page 22: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/22.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/23.jpg)
23
Tema 7. Programación elemental
INSTRUCCIONES LÓGICAS
![Page 24: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/24.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/25.jpg)
25
Tema 7. Programación elemental
INSTRUCCIONES LÓGICAS
![Page 26: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/26.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/27.jpg)
27
Tema 7. Programación elemental
INSTRUCCIONES LÓGICAS
![Page 28: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/28.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/29.jpg)
29
Tema 7. Programación elemental
INSTRUCCIONES LÓGICAS
![Page 30: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/30.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/31.jpg)
31
Tema 7. Programación elemental
INSTRUCCIONES LÓGICAS
![Page 32: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/32.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/33.jpg)
33
Tema 7. Programación elementalINSTRUCCIONES LÓGICAS
![Page 34: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/34.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/35.jpg)
35
Tema 7. Programación elementalINSTRUCCIONES LÓGICAS
![Page 36: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/36.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/37.jpg)
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](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/38.jpg)
38
Tema 7. Programación elemental
INSTRUCCIÓN “SLEEP”
![Page 39: tema7 prog elemental - UMH](https://reader035.fdocuments.ec/reader035/viewer/2022063010/62bb6aadc9d1044be10d8876/html5/thumbnails/39.jpg)
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………