Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
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………