Micro3
-
Upload
rene-san-martin-perez -
Category
Documents
-
view
367 -
download
3
Transcript of Micro3
![Page 1: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/1.jpg)
Microcontroladores
![Page 2: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/2.jpg)
Instrucciones Aritméticas
![Page 3: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/3.jpg)
(add Literal to W). Suma el contenido del registro W con el literal o constante k. Almacena el resultado en W. Si se produce acarreo el flag C se pone a 1.
Ejemplo 1:Antes instrucción:Después instrucción:
addlw 0x4F (W) = 0xA3 C = ¿? (W) = 0xF2 C = 0
addlw k
Ejemplo 2:Antes instrucción:Después instrucción:
Instrucciones de Suma
addlw 0x38 (W) = 0xD1 C = ¿? (W) = 0x09 C = 1
![Page 4: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/4.jpg)
(add W and 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. Si se produce acarreo el flag C se pone a 1.
Ejemplo 1:Antes instrucción:Después instrucción:
addwf PORTA,W (W) = 0x17 (PORTA) = 0xC2 y C = ¿? (W) = 0xD9 (PORTA) = 0xC2 y C = 0
addwf f,d
Instrucciones de Suma
Ejemplo 2:Antes instrucción:Después instrucción:
addwf contador,f (W) = 0xD1 (contador) = 0x38 y C = ¿? (W) = 0xD1 (contador) = 0x09 y C = 1
![Page 5: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/5.jpg)
La resta se realiza sumando, en binario puro sin signo, el registro f (o el literal k) mas el complemento de 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 Carry indica si el resultado es positivo (C se pone a 1) o es negativo (C se pone a 0). Pueden ocurrir 3 resultados.
Instrucciones de Resta
![Page 6: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/6.jpg)
(Subtract W from Literal). Resta en complemento a 2 el contenido de la constante k menos el contenido del registro W y almacena el resultado en W.
Ejemplo 1:Antes instrucción:Después instrucción:
sublw 0x03 (W) = 0x01 C = ¿? y Z = ¿? (W) = 0x02 C = 1 y Z = 0
sublw k
Instrucciones de Resta
![Page 7: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/7.jpg)
(Subtract W from Literal). Resta en complemento a 2 el contenido de la constante k menos el contenido del registro W y almacena el resultado en W.
Ejemplo 2:Antes instrucción:Después instrucción:
sublw 0x02 (W) = 0x02 C = ¿? y Z = ¿? (W) = 0x00 C = 1 y Z = 1
sublw k
Instrucciones de Resta
![Page 8: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/8.jpg)
(Subtract W from Literal). Resta en complemento a 2 el contenido de la constante k menos el contenido del registro W y almacena el resultado en W.
Ejemplo 3:Antes instrucción:Después instrucción:
sublw 0x02 (W) = 0x03 C = ¿? y Z = ¿? (W) = 0xFF C = 0 y Z = 0
sublw k
Instrucciones de Resta
![Page 9: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/9.jpg)
(Subtract W to f). Resta en complemento a 2 el contenido del registro f menos el contenido del registro W . Almacena el resultado en W si d = 0 y en el registro f si d = 1.
Ejemplo 1:Antes instrucción:Después instrucción:
subwf Reg1,F Reg1 = 0x03 (W) = 0x02 C = ¿? y Z = ¿?Reg1 = 0x01 (W) = 0x02 C = 1 y Z = 0
subwf f,d
Instrucciones de Resta
![Page 10: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/10.jpg)
(Subtract W to f). Resta en complemento a 2 el contenido del registro f menos el contenido del registro W . Almacena el resultado en W si d = 0 y en el registro f si d = 1.
Ejemplo 2:Antes instrucción:Después instrucción:
subwf Reg1,F Reg1 = 0x02 (W) = 0x02 C = ¿? y Z = ¿?Reg1 = 0x00 (W) = 0x02 C = 1 y Z = 1
subwf f,d
Instrucciones de Resta
![Page 11: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/11.jpg)
(Subtract W to f). Resta en complemento a 2 el contenido del registro f menos el contenido del registro W . Almacena el resultado en W si d = 0 y en el registro f si d = 1.
Ejemplo 3:Antes instrucción:Después instrucción:
subwf Reg1,F Reg1 = 0x01 (W) = 0x02 C = ¿? y Z = ¿?Reg1 = 0xFF (W) = 0x02 C = 0 y Z = 0
subwf f,d
Instrucciones de Resta
![Page 12: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/12.jpg)
(Decrement f). El contenido del registro f se decrementa en 1 unidad . Almacena el resultado en W si d = 0 (en cuyo caso f no varia) y en el registro f si d = 1. El flag Z se activa a 1 si el resultado de la operación es 0.
Ejemplo 1:Antes instrucción:Después instrucción:
decf contador,F (contador) = 0x01 y Z = ¿?(contador) = 0x00 y Z = 1
decf f,d
Incrementar y Decrementar
Ejemplo 2:Antes instrucción:Después instrucción:
decf contador,W (contador) = 0x04 (W) = ¿? y Z = ¿?(contador) = 0x04 (W) = 0x03 y Z = 0
![Page 13: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/13.jpg)
(Increment f). El contenido del registro f se incrementa en 1 unidad. Almacena el resultado en W si d = 0 (en cuyo caso f no varia) y en el registro f si d = 1. El flag Z se activa a 1 si el resultado de la operación es 0, es decir, si hay desbordamiento.
Ejemplo 1:Antes instrucción:Después instrucción:
incf contador,F (contador) = 0xFF y Z = ¿?(contador) = 0x00 y Z = 1
incf f,d
Incrementar y Decrementar
Ejemplo 2:Antes instrucción:Después instrucción:
incf contador,W (contador) = 0x01 (W) = ¿? y Z = ¿?(contador) = 0x01 (W) = 0x02 y Z = 0
![Page 14: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/14.jpg)
Instrucciones Lógicas
![Page 15: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/15.jpg)
(And Literal with W). Efectúa la operación AND lógica entre el contenido del registro W y la constante k. Almacena el resultado en W. El flag Z se activa a 1 si el resultado de la operación es cero.
Ejemplo 2:Antes instrucción:Después instrucción:
andlw b’01011111’ (W) = b’10100011’ y Z = ¿? (W) = b’00000011’ y Z = 0
andlw k
Instrucciones Lógicas
![Page 16: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/16.jpg)
(And W with f). Efectúa la operación AND lógica entre el contenido del registro W y el contenido del registro f. Almacena el resultado en W si d = 0 y en el registro f si d = 1. El flag Z se activa a 1 si el resultado de la operación es cero.
Ejemplo 1:Antes instrucción:Después instrucción:
andwf FSR,F (W) = b’0010111’ FSR = b’11000010 y Z = ¿? (W) = b’0010111’ FSR = b’00000010 y Z = 0
andwf f,d
Ejemplo 2:Antes instrucción:Después instrucción:
andwf FSR,W (W) = b’0010111’ FSR = b’11000010 y Z = ¿? (W) = b’0000010’ FSR = b’11000010 y Z = 0
Instrucciones Lógicas
![Page 17: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/17.jpg)
(Complement f). Realiza un complemento del contenido del registro f bit a bit, invirtiendo su valor, es decir, cambia los unos por ceros y los ceros por uno. Almacena el resultado en W si d = 0 y en el registro f si d = 1. El flag Z se activa a 1 si el resultado de la operación es cero.
Ejemplo 1:Antes instrucción:Después instrucción:
comf Reg1,F (Reg1) = b’00010011’ y Z = ¿? (Reg1) = b’11101100’ y Z = 0
comf f,d
Ejemplo 2:Antes instrucción:Después instrucción:
comf Reg1,W (Reg1) = b’00010011’ (W) = ¿? y Z = ¿? (Reg1) = b’00010011’ (W) = b’11101100’ y Z = 0
Instrucciones Lógicas
![Page 18: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/18.jpg)
(Inclusive OR Literal with W). Efectúa la operación OR lógica entre el contenido del registro W y la constante k. Almacena el resultado en W. El flag Z se activa a 1 si el resultado de la operación es cero.
Ejemplo 1:Antes instrucción:Después instrucción:
iorlw b’00110101’ (W) = b’00010011’ y Z = ¿? (W) = b’10111111’ y Z = 0
iorlw k
Instrucciones Lógicas
![Page 19: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/19.jpg)
(Inclusive OR W with f). Efectúa la operación OR lógica entre el contenido del registro W y el contenido del registro f. Almacena el resultado en W si d = 0 y en registro f si d = 1. El flag Z se activa a 1 si el resultado de la operación es cero.
Ejemplo 1:Antes instrucción:
Después instrucción:
iorwf Resultado,W (Resultado) = b’00010011’ (W) = b’10010001’ y Z = ¿?
(Resultado) = b’00010011’ (W) = b’10010011’ y Z = 0
iorwf f,d
Instrucciones Lógicas
![Page 20: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/20.jpg)
(Rotate Left f through Carry). Rotación de un bit a la izquierda del registro f, pasando por el bit de acarreo C. El desplazamiento es cerrado, formando un anillo con el bit C (Carry) del registro de estado o STATUS. Si d = 1 el resultado se almacena en f, si d = 0 el resultado se almacena en W. El contenido del Carry pasa a la posición del bit de menor peso y el bit de mayor peso pasa al Carry
rlf f,d
Instrucciones Lógicas
C
Registro f
![Page 21: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/21.jpg)
(Rotate Right f through Carryf). Rotación de un bit a la derecha del registro f, pasando por el bit de acarreo C. El desplazamiento es cerrado, formando un anillo con el bit C (Carry) del registro de estado o STATUS. Si d = 1 el resultado se almacena en f, si d = 0 el resultado se almacena en W. El contenido del Carry pasa a la posición del bit de menor peso y el bit de mayor peso pasa al Carry
rrf f,d
Instrucciones Lógicas
C
Registro f
![Page 22: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/22.jpg)
(Swapf Nibbles in f). Los cuatro bits de mas peso del registro f se intercambian con los cuatro bits de menos peso del mismo registro f. Almacena el resultado en W si d = 0 y en registro f si d = 1.
Ejemplo 1:Antes instrucción:
Después instrucción:
swapf Reg1,W (Reg1) = 0xA5 y (W) = ¿?
(Reg1) = 0xA5 y (W) = 0x5A
swapf f,d
Instrucciones Lógicas
![Page 23: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/23.jpg)
(Exclusive OR Literal with W). Realiza la función OR-Exclusiva entre el contenido del registro W y la constante k de 8 bits. El resultado se almacena en W. El flag Z se activa a 1 si el resultado de la operación es 0.
Ejemplo 1:Antes instrucción:
Después instrucción:
xorlw b’10101111’ (W) = b’10110101’ y Z = ¿?
(W) = b’00011010’ y Z = 0
xorlw k
Instrucciones Lógicas
![Page 24: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/24.jpg)
(Exclusive OR W with f). Realiza la función OR-Exclusiva entre el contenido del registro W y el contenido del registro f. El resultado se almacena en W si d=0 o en el registro f si d=1. El flag Z se activa a 1 si el resultado de la operación es 0.
Ejemplo 1:Antes instrucción:
Después instrucción:
xorwf Reg,f
(Reg) = b’10101111’ (W) = b’10110101 y Z = ¿?
(Reg) = b’00011010’ (W) = b’10110101 y Z = 0
xorwf f,d
Instrucciones Lógicas
![Page 25: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/25.jpg)
Para ahorrar energía los microcontroladores PIC disponen de la 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.-.
Instrucciones Sleep
Modo de ahorro de energía
El oscilador del sistema deja de funcionar
El consumo baja a unos pocos uA
El TMR0 deja de funcionar
![Page 26: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/26.jpg)
Saltos Condicionales
![Page 27: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/27.jpg)
Producen un salto en función de que se cumpla o no una función. Estas instrucciones son el único medio para realizar bifurcaciones condicionales en un programa.
Saltos Condicionales
El repertorio de instrucciones del PIC16F84A incluye cuatro instrucciones de salto condicional clasificadas en dos grupos:
Aquellas que pueden producir un salto en función del estado de un bit. Son btfsc y btfss.
Aquellas que pueden producir un salto en función del contenido de un registro. Son decfsz y incfsz.
![Page 28: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/28.jpg)
Saltos en función de un Bit
(Bit Test f, Skip if Clear). Esta instrucción puede actuar de dos formas:
btfsc f,b
Si el bit numero b del registro f es 1 la instrucción que sigue a esta se ejecuta normalmente.
Si el bit numero b del registro f es 0 la instrucción que sigue a esta se ignora y se salta.
![Page 29: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/29.jpg)
Saltos en función de un Bit
(Bit Test f, Skip if Set). Esta instrucción puede actuar de dos formas:
btfss f,b
Si el bit numero b del registro f es 0 la instrucción que sigue a esta se ejecuta normalmente.
Si el bit numero b del registro f es 1 la instrucción que sigue a esta se ignora y se salta.
![Page 30: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/30.jpg)
Saltos en función de un Registro
(Decrement f, Skip if 0). Decrementa en una unidad el contenido del registro f. Almacena el resultado en W si d = 0 y en el registro f si d = 1. Después de decrementar puede ocurrir dos casos:
decsz f,d
Si el resultado es distinto de 0 la instrucción que sigue a esta se ejecuta normalmente.
Si el resultado es 0 la instrucción que sigue a esta se ignora y se salta.
![Page 31: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/31.jpg)
Saltos en función de un Registro
(Increment f, Skip if 0). Incrementa en una unidad el contenido del registro f. Almacena el resultado en W si d = 0 y en el registro f si d = 1. Después de Incrementar puede ocurrir dos casos:
incsz f,d
Si el resultado es distinto de 0 la instrucción que sigue a esta se ejecuta normalmente.
Si el resultado es 0 la instrucción que sigue a esta se ignora y se salta.
![Page 32: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/32.jpg)
Directivas Importantes
(Define a Block of Constants), (End Constant Block). Asigna direcciones (generalmente de memoria RAM de datos) a muchas etiquetas. La lista queda enmarcada entre las directivas CBLOCK y ENDC.
CBLOCK y ENDC
CBLOCK 0x0C ;Las variables se posicionan a partir de 0x0C A ;La variable A ocupa la posición 0x0C B ;La variable B ocupa la posición 0x0D
C ;La variable C ocupa la posición 0x0E ENDC
Si la directiva no define ningún comienzo los valores asignados comenzaran el la posición 0, que corresponde a la zona SFR.
![Page 33: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/33.jpg)
Directivas Importantes
(Define a Text Substitution Label). Esta directiva define una cadena de sustitución de texto. Donde quera que <name> se encuentre, en el ensamblador se sustituirá por [<string>]
#DEFINE
#DEFINE <name> [<string>]
#DEFINE LED PORTB,4
bsf LED
Ejemplos:
![Page 34: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/34.jpg)
Directivas Importantes
#DEFINE#DEFINE <name> [<string>]
#DEFINE Banco0 bcf STATUS,5#DEFINE Banco1 bsf STATUS,5
InicioBanco1clrf TRISAmovlw b´11111111´movwf TRISBBanco0
![Page 35: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/35.jpg)
Subrutinas
Conjunto de instrucciones al que se tiene acceso desde cualquier punto del programa principal. Es decir, es un subprograma que se ejecuta cada vez que el programa principal lo necesita.
PROCESO X
PROCESO X
PROCESO X
PROCESO X
PROCESO X
PROCESO X
PROCESO X:
RETURN
![Page 36: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/36.jpg)
Subrutinas Anidadas
Programa Principal
CALL PROCESO 1
X1
Subrutina 1
PROCESO 1
CALL PROCESO 2
X2
RETURN
Subrutina 2
PROCESO 2
RETURN
PILA
X1
PILA
X2
X1
PILA
![Page 37: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/37.jpg)
LA PILA
Zona de memoria que se encuentra separada tanto de la memoria de programa como de la de datos dentro del microcontrolador.
Su estructura es del tipo LIFO.
![Page 38: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/38.jpg)
Manejo de Tablas
Instrucción “ retlw ”
Funciona de forma similar a return, produce el retorno de una subrutina pero con un valor en el registro W.
Formato Instrucción:
retlw k
![Page 39: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/39.jpg)
Manejo de Tablas
![Page 40: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/40.jpg)
Directiva DT
Para simplificar el uso de la instrucciones retlw el ensamblador MPASM facilita la directiva DT, que sustituye el empleo respectivo de muchas instrucciones retlw. Su sintaxis es:
Ejemplo:
DT “Hola”
retlw “H”retlw “o”retlw “l”retlw “a”
![Page 41: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/41.jpg)
Manejo de un Display 7 seg
![Page 42: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/42.jpg)
Manejo de un Display 7 seg
![Page 43: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/43.jpg)
Subrutinas de Retardo
Ciclo de MaquinaEl tiempo que tarda en ejecutarse un programa depende de la frecuencia del oscilador y del numero de ciclos de maquina ejecutados. Un ciclo de maquina es la unidad básica de tiempo que utiliza el microcontrolador.Para el microcontrolador PIC16F84A el ciclo de maquina equivale a 4 ciclos de reloj, por lo tanto el tiempo que tarda en producirse un ciclo de maquina es igual a 4 veces el periodo del oscilador.
Las instrucciones del microcontrolador PIC16F84A necesitan 1 ciclo de maquina para ejecutarse, excepto las de salto (goto, call, btfss, btfsc, return, etc., que necesitan de 2 ciclos de maquina.
![Page 44: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/44.jpg)
Subrutinas de Retardo
El tiempo que tarda microcontrolador en ejecutar una tarea viene fijado por la siguiente formula:
Tiempo = 41
fcm
Calcular la duración de 1 ciclo de maquina para el PIC16F84A
Tiempo = 41
4MHz
1 = 1us
![Page 45: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/45.jpg)
Subrutinas de Retardo
En un sistema con Microcontrolador PIC16F84A y cristal de cuarzo de 4MHz se desea generar un retardo de 1.5 ms. Calcular el numero de ciclos de maquina necesarios.
Tiempo = 41
fcm
Solución:
Tiempo = 41
fcm Tiempo=
4fcm
1500us=4
4MHzcm = 1500
![Page 46: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/46.jpg)
Operación NOP
No realiza ninguna operación.
Para una frecuencia de trabajo de 4MHz produce una temporización de 1 useg.
![Page 47: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/47.jpg)
Retardos mediante lazo simple
Retardo_1ms ; La llamada call aporta 2 ciclos de maquina. movlw d'249‘ ; Aporta 1 ciclos máquina. Este es el valor de "K". movwf R_ContA ; Aporta 1 ciclos máquina.
R1ms_Bucle nop ; Aporta Kx1 ciclos máquina. decfsz R_ContA,F ; (K-1)x1 cm (cuando no salta) + 2 cm (al saltar). goto R1ms_Bucle ; Aporta (K-1)x2 ciclos máquina. return ; El salto de retorno aporta 2 ciclos máquina.;;En total estas subrutinas tardan:;2 + 1 + 1 + Kx1 + (K-1)x1 + 2 + (K-1)x2 + 2 = 5 + 4K = 1001 Ciclos de maquina
(para K = 249)
![Page 48: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/48.jpg)
Retardos mediante lazos anidados
Retardo_200ms movlw d'200‘ movwf R_ContB
Retardo_1ms movlw d'249‘ movwf R_ContA
R1ms_Bucle nop decfsz R_ContA,F goto R1ms_Bucle
decfsz R_ContB,F goto Retardo_1ms
return
Retardo_100ms movlw d‘100‘ movwf R_ContB
Retardo_1ms movlw d'249‘ movwf R_ContA
R1ms_Bucle nop decfsz R_ContA,F goto R1ms_Bucle
decfsz R_ContB,F goto Retardo_1ms
return
![Page 49: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/49.jpg)
TIMER 0 (TMR0)
El PIC16F84A dispone de un timer, el cual es un contador ascendente de 8 bits. El TMR0 se inicializa con un valor, que se incrementa con cada impulso de entrada hasta su valor máximo, después de lo cual se produce su desborde el cual es anunciado por el flag TOIF del registro INTCON.
Contador Ascendente
Carga Inicial del Contador
Impulsos de Entrada
Fin de Contaje
![Page 50: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/50.jpg)
TIMER 0 (TMR0)
Los impulsos aplicados al TMR0 pueden provenir de los pulsos aplicados al pin TOCKI o de la señal de reloj interna (Fosc/4), lo que le permite actuar de dos formas diferentes:
Como contador de impulsos por el pin RA4/TOCKI
Como temporizador de tiempos
![Page 51: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/51.jpg)
TIMER 0 (TMR0)
TOCS = 1 el TMR0 actúa como contador
TOCS = 0 el TMR= actúa como temporizador
El actuar de una o de otra forma depende del bit TOCS del registro OPTION
![Page 52: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/52.jpg)
TIMER 0 como Contador
TOSE = 1 el flanco activo es descendente
El tipo de flanco activo se elige mediante el bit TOSE del registro OPTION
TOSE = 0 el flanco activo es Ascendente
![Page 53: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/53.jpg)
TIMER 0 como Temporizador
Cuenta los impulsos de Fosc/4. Se usa para determinar intervalos de tiempos concretos. Estos tiempos tienen una duración conocida de un ciclo de maquina (4 veces el periodo de la señal de reloj).
Como se trata de un contador ascendente el TMR0 debe ser cargado con el valor de los impulsos que se desean contar restados 256 que es el valor de desbordamiento.
![Page 54: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/54.jpg)
TIMER 0 registro del SFR
El TMR0 es un registro de propósito general ubicado en laposición 1 del área SFR de la RAM de datos. Puede ser leído y escrito.
![Page 55: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/55.jpg)
Divisor de Frecuencia (Preescaler)
A veces es necesario controlar tiempos largos y aumentar la duración de los impulsos que incrementan el TMR0 . Para cubrir esta necesidad se dispone de un circuito programable llamado Divisor de Frecuencia o Preescaler que divide la frecuencia utilizada por diversos rangos.
En realidad el PIC16F84A dispone de dos temporizadores:
El TMR0, que actúa como temporizador principal
El Washdog, el cual vigila que el programa no se cuelgue
![Page 56: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/56.jpg)
Divisor de Frecuencia (Preescaler)
El Preescaler puede aplicarse a uno de estos dos temporizadores. Cuando se asigna al TMR0 los impulsos pasan primero por el divisor de frecuencia y una vez aumentada su duración se aplican al TMR0.
El TMR0, que actúa como temporizador principalEl TMR0, que actúa como temporizador principal
El Washdog, el cual vigila que el programa no se cuelgueEl Washdog, el cual vigila que el programa no se cuelgue
![Page 57: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/57.jpg)
Registro Relacionados con el TMR0
Registro OPTION
Registro INTCON
![Page 58: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/58.jpg)
Registro Relacionados con el TMR0
Registro INTCON
1
0
TMR0 Overflow Interrupt Flag bit
![Page 59: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/59.jpg)
Registro Relacionados con el TMR0
Registro OPTION
Selecciona la fuente de señal del TMR0
1
0Pulsos de reloj interno Fosc/4
TMR0 como Temporizador
Pulsos de reloj externo RA4/TOCKITMR0 como Contador
![Page 60: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/60.jpg)
Registro Relacionados con el TMR0
Registro OPTION
Flanco ascendente a RA4/TOCKI
Selecciona flanco de la señal de entrada del TMR0
Flanco descendente a RA4/TOCKI1
0
![Page 61: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/61.jpg)
Registro Relacionados con el TMR0
Registro OPTION
Asignación del Divisor de Frecuencia
1
0El divisor de frecuencia se
asigna al TMR0
El divisor de frecuencia se asigna al Watchdog
![Page 62: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/62.jpg)
Registro Relacionados con el TMR0
Registro OPTION
Bits para seleccionar los valores del Preescaler o rango con el que actúa el divisor de frecuencia.
PS2 PS1 PS0 Divisor del TMR0 Divisor del WDT0 0 0 1:2 1:10 0 1 1:4 1:20 1 0 1:8 1:40 1 1 1:16 1:81 0 0 1:32 1:161 0 1 1:64 1:321 1 0 1:128 1:641 1 1 1:256 1:128
![Page 63: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/63.jpg)
Ejemplo del TMR0 como contador
0 0 1 1 1 0 0 0
![Page 64: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/64.jpg)
Otros Recursos
![Page 65: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/65.jpg)
El WATCHDOG TIMER
Para que esta labor de vigilancia se lleve a cabo el WDT da un paseo por la CPU cada cierto tiempo, asegurándose que el programa funcione normalmente, de lo contrario el WDT ladra y provoca un reset.
El Perro Guardián
Vigila que el programa no se cuelgue y así dejen de ejecutarse las instrucciones.
Ciclo Infinito Espera de un acontecimiento que no se produce
![Page 66: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/66.jpg)
El WATCHDOG TIMER
Consiste en la puesta a cero del WDT para comenzar nuevamente la cuenta, evitando así su desbordamiento y el reset que esto provoca. Esta puesta a cero se debe realizar por software mediante la instrucción clrwdt.
Refrezco del Perro Guardián
Habilitación del Watchdog Timer
![Page 67: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/67.jpg)
Resistencias de Pull-Up
Permiten en entradas no utilizadas evitar el ingreso de señales falsas (ruido) que puedan provocar un mal funcionamiento del uC. En las salidas permiten asegurar de que no se supere la máxima corriente de alimentación que puede manejar el uC.
El PIC16F84A permite configurar una resistencia interna en cada una de las líneas del Puerto B, ahorrando estas necesarias resistencias externas cuando se utilizan pulsadores u otros dispositivos externos de lectura.
![Page 68: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/68.jpg)
Resistencias de Pull-Up
Ground
![Page 69: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/69.jpg)
Resistencias de Pull-Up
Resistor Port B Pull-Up Enable Bit
0
1
Habilita las resistencias de Pull-Updel Puerto B.
Deshabilita las resistencias de Pull-Updel Puerto B.
![Page 70: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/70.jpg)
INTERRUPCIONES
![Page 71: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/71.jpg)
INTERRUPCIONES
Una interrupción consiste en un mecanismo por el cual un evento interno o externo puede interrumpir la ejecución de un programa en cualquier momento. A partir de entonces se produce automáticamente un salto a una subrutina de interrupción, esta atiende inmediatamente el evento y retorna luego la ejecución del programa exactamente donde estaba en el momento de ser interrumpido.
![Page 72: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/72.jpg)
Subrutina de Interrupción
Programa Principal
X1
004hProceso X(Subrutina de atención a la interrupción)retfie
![Page 73: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/73.jpg)
Subrutina de Interrupción
El PIC16F84A dispone de 4 posibles fuentes de interrupción:
Interrupción INT. Por activación del pin RB0/INT.
Interrupción RBI. Por cambio de estado en una o varias de las 4 lineas de más peso RB7:RB4 del Puerto B.
Interrupción TOI. Por desbordamiento del Timer 0.
Interrupción EEI. Por la finalización de la escritura en la EEPROM de datos.
Interrupción INT. Por activación del pin RB0/INT.
Interrupción RBI. Por cambio de estado en una o varias de las 4 lineas de más peso RB7:RB4 del Puerto B.
![Page 74: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/74.jpg)
Funcionamiento de una InterrupciónCuando se produce cualquiera de los sucesos indicados anteriormente se origina una petición de interrupción que si se acepta, origina el siguiente mecanismo hardware:
1º Salva el valor actual del contador de programa PC guardando su contenido en la pila.
El bit GIE del registro INTCON es puesto a cero lo cual prohibe cualquier otra interrupción.
2º
El PC se varga con al valor 004h, que es la posición del vector de interrupción.
Comienza a ejecutarse el programa de atención a la interrupción que se encuentra a partir de la dirección 004h.
3º
4º
![Page 75: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/75.jpg)
Funcionamiento de una Interrupción
Los bits de control localizados en el registro INTCON habilitan y configuran las interrupciones. Cada causa de interrupción actúa con dos flags.
FLAG DE SEÑALIZACIÓN
Indica si se ha producido o no la interrupción.
TOIF INTF RBIF EEIF
![Page 76: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/76.jpg)
FLAG DE PERMISO
Indica si se ha producido o no la interrupción.
TOIE INTE RBIE EEIE
Funcionamiento de una Interrupción
GIE
Habilitación General
![Page 77: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/77.jpg)
Vector de Interrupciones
POSICIÓN 004h
Sea cual sea la interrupción el contador de programa se carga con la dirección 004h.
![Page 78: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/78.jpg)
Registro INTCON
REGISTRO DE CONTROL DE INTERRUPCIONES
Global Interruption Enable (Habilitación General de las Interrupciones)
Se inhabilita automáticamente cuando se reconoce un la interrupción para evitar que ninguna otra se produzca mientras se esta atendiendo a la primera. Al retornar de la interrupción con una instrucción retfie, el bit GIE se vuelve a activar a 1.
GIE = 0No autoriza interrupción de ningún tipo
GIE = 1Autoriza cualquier tipo de interrupción
![Page 79: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/79.jpg)
Registro INTCON
REGISTRO DE CONTROL DE INTERRUPCIONES
EEPROM Write Complete Interrupt Enable (Habilitación de la Interrupción EEI)
Habilita la interrupción por escritura completada en la EEPROM de datos. Su flag se encuentra ubicado en el registro EECON1.
EEIE = 0Interrupción EEI deshabilitada
EEIE = 1Interrupción EEI habilitada
![Page 80: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/80.jpg)
Registro INTCON
REGISTRO DE CONTROL DE INTERRUPCIONES
TMR0 Interrupt Enable bit (Habilitación de la Interrupción TOI)
Habilita la interrupción por desbordamiento del TMR0.
TOIE = 0Interrupción TOI deshabilitada
TOIE = 1Interrupción TOI habilitada
![Page 81: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/81.jpg)
Registro INTCON
REGISTRO DE CONTROL DE INTERRUPCIONES
External INT Enable bit (Habilitación de la Interrupción externa INT)
Habilita la interrupción externa por el pin RB0/INT
INTE = 0Interrupción INT deshabilitada
INTE = 1Interrupción INT habilitada
![Page 82: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/82.jpg)
Registro INTCON
REGISTRO DE CONTROL DE INTERRUPCIONES
RB Port Change Interrupt Enable (Habilitación de la Interrupción externa RBI)
Habilita la interrupción por cambio de estado de las líneas RB7:RB4 del puerto B.
RBIE = 0Interrupción RBI deshabilitada
RBIE = 1Interrupción RBI habilitada
![Page 83: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/83.jpg)
Registro INTCON
REGISTRO DE CONTROL DE INTERRUPCIONES
TMR0 Overflow Interrupt Flag bit (indicación de la Interrupción por TMR0)
Indica que se ha producido una interrupción por desbordamiento del Timer 0.
TOIF = 0El TMR0 no se ha desbordado
TOIF = 1El TMR0 se ha desbordado
![Page 84: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/84.jpg)
Registro INTCON
REGISTRO DE CONTROL DE INTERRUPCIONES
External Interrupt Flag bit(Indicación de la Interrupción externa INT)
Indica que se ha producido una interrupción externa por el pin RB0/INT
INTF = 0No hay interrupción externa
INTF = 1Hay interrupción externa
![Page 85: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/85.jpg)
Registro INTCON
REGISTRO DE CONTROL DE INTERRUPCIONES
RB port change Interrump Flag (Indica la Interrupción externa RB7:RB4)
Indica que se ha producido una interrupción por cambio de estado de las líneas RB7/RB4
RBIF = 0No hay cambio de estado
RBIF = 1Hay cambio de estado
![Page 86: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/86.jpg)
Registro OPTION
Interrupt Edge Select bit (Selector de flanco de la interrupción INT)
INTEDG = 0Interrupción por flanco descendente
INTEDG = 1Interrupción por flanco ascendente
RB0/INT RB0/INT
![Page 87: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/87.jpg)
Instrucción retfie
Utilizada al final de una subrutina de interrupción es idéntica a un retorno de subrutina return. Ademas coloca automaticamente a 1 el bib GIE, volviendo a habilitar las interrupciones.
retfie idéntica return
![Page 88: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/88.jpg)
Interrupción Externa INT
LIST P=16F84AINCLUDE <P16F84A.INC>
ORG 0goto InicioORG 4
goto ServicioInterrupcionInicio
bsf STATUS,RP0movlw b'00000001'movwf TRISBbcf OPTION_REG,INTEDGbcf STATUS,RP0movlw b'10010000'movwf INTCONclrf PORTB
Flanco de bajada
Se habilita INT y GIE
![Page 89: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/89.jpg)
Interrupción Externa INT
Principalsleepgoto Principal
ServicioInterrupcionmovlw b'11111110'movwf PORTBcall Retardo_2smovlw b'00000000'movwf PORTBgoto FinInterrupcion
FinInterrupcionbcf INTCON,INTFretfieINCLUDE <RETARDOS.INC>END
Se baja el Flag
![Page 90: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/90.jpg)
Registros Alterados
Durante la interrupción el único registro que se salvaguarda en la pila es el PC. La subrutina de atención a la interrupción puede
alterar el contenido de los registros del microcontrolador.
El contenido de los registros W y STATUS deben guardarse prinero.
Al iniciarla conviene guardar su valor y restaurarlos antes de la instrucción retfie.
![Page 91: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/91.jpg)
Salvar Registros
CBLOCK 0x0CGuarda_WGuarda_STATUSGuarda_RegistroAGuarda_RegistroBENDC----------------------
movwf Guarda_Wmovf STATUS,Wmovwf Guarda_STATUSmovf RegistroA,Wmovwf Guarda_RegistroAmovf RegistroB,Wmovwf Guarda_RegistroB
movf Guarda_RegistroB,W movwf RegistroBmovf Guarda_RegistroA,Wmovwf RegistroAmovf Guarda_STATUS,Wmovwf STATUSmovf Guarda_W,Wbcf INTCON,INTF
Mover el registro W a otro registro corrompe el flag Z
![Page 92: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/92.jpg)
Salvar Registros
movwf Guarda_Wswapf STATUS,Wmovwf Guarda_STATUSmovf RegistroA,Wmovwf Guarda_RegistroAmovf RegistroB,Wmovwf Guarda_RegistroBbcf STATUS,RP0
movf Guarda_RegistroB,W movwf RegistroBmovf Guarda_RegistroA,Wmovwf RegistroAswapf Guarda_STATUS,Wmovwf STATUS swapf Guarda_W,Fswapf Guarda_W,Wbcf INTCON,INTFretfie
Microchip recomienda
![Page 93: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/93.jpg)
Manejo de LCDManejo de LCD
![Page 94: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/94.jpg)
Visualizador LCD
Liquid Crystal Display
![Page 95: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/95.jpg)
LM016L
Consumo Reducido, del orden de los 7,5 mW. Desplazamiento de caracteres derecha - izquierda
Memoria de 40 caracteres por línea de pantalla.
Movimiento del cursos y cambio de aspecto
Puede ser gobernado de dos formas:• Conexión con bus de 4 bits• Conexión con bus de 8 bits
![Page 96: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/96.jpg)
LM016L
Alimentación de 5V
Regulación de contraste se realiza mediante el voltaje obtenido al dividir los 5V con una resistencia ajustable de 10k y aplicárselo al pin VEE. Este mismo pin a masa fija el máximo contraste.
![Page 97: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/97.jpg)
Configuración de Conexionado
![Page 98: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/98.jpg)
Función de los pines
![Page 99: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/99.jpg)
DDRAM
Data Display RAM
Tiene una capacidad de 80 bytes, 40 por cada línea, de los cuales solo 32 se pueden visualizar
Línea 1Línea 2
![Page 100: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/100.jpg)
TABLA CGROM
![Page 101: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/101.jpg)
TABLA CGROM
![Page 102: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/102.jpg)
TABLA CGROM
![Page 103: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/103.jpg)
TABLA CGROM
![Page 104: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/104.jpg)
TABLA CGROM
![Page 105: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/105.jpg)
TABLA CGROM
0011
![Page 106: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/106.jpg)
TABLA CGROM
0011
![Page 107: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/107.jpg)
TABLA CGROM
0011
![Page 108: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/108.jpg)
TABLA CGROM
0011
![Page 109: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/109.jpg)
TABLA CGROM
00110011
![Page 110: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/110.jpg)
TABLA CGROM
0011 0010
Bus de datos
![Page 111: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/111.jpg)
CGROM
Memoria no volátil donde se almacena una tabla con los 192 caracteres que pueden ser visualizados.
![Page 112: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/112.jpg)
Modos de Funcionamiento
El LM016L tiene 3 modos de funcionamiento
Modo Comando
Recibe instrucciones por el bus de datos.
Para trabajar en modo comando:
RS
R/W
Borrar Display Mover Cursor Desplazar Izquierda
= 0
= 0
![Page 113: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/113.jpg)
Modos de Funcionamiento
El LM016L tiene 3 modos de funcionamiento
Modo Carácter o Dato
Recibe un carácter a escribir en la memoria DDRAMPara trabajar en modo comando:
RS
R/W
= 1
= 0
![Page 114: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/114.jpg)
Modos de Funcionamiento
El LM016L tiene 3 modos de funcionamiento
Modo Lectura “Busy Flag” o LCD ocupada
En el bit 7 del bus de datos el LCD indica que esta ocupada.
Para ello se lee el bus de datos:
RS
R/W
= 0
= 1
Se debe esperar que Busy Flag (bit7) valga 0.
![Page 115: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/115.jpg)
Configuración de Conexionado
![Page 116: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/116.jpg)
Comandos de Control LCD
![Page 117: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/117.jpg)
Comandos de Control LCD
Los comandos se envían a través del bus de datos. Para que el LCD los reconozca hay que poner la señal RS a nivel bajo.
Clear Display (00000001)
Borra la pantalla y devuelve el cursor a la posición inicial (posición 0 de la DDRAM)
Return Home (0000001x)
Cursor a la dirección de origen. Devuelve el cursor a la posición de origen de la DDRAM (dirección 00h) quedando intacto su contenido.
![Page 118: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/118.jpg)
Comandos de Control LCD
Entry Mode Set (000001 I/D S)
Modo de entrada. Establece las caracteristicas de escritura de los datos Shift e Increment/Decrement:
S = 0
S = 1
La información visualizada no se desplaza al escribir un carácter.
La información visualizada se desplaza al escribir un carácter. La pantalla se desplaza en el sentido indicado por el bit I/D cuando el cursor llega al filo de la pantalla.
![Page 119: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/119.jpg)
I/D = 1
I/D = 0
Comandos de Control LCD
Entry Mode Set (000001 I/D S)
Modo de entrada. Establece las caracteristicas de escritura de los datos Shift e Increment/Decrement:
Incremento automático de la posición del cursor. La posición de la DDRAM se incrementa automáticamente tras cada lectura o escritura a la misma.
Decremento de la posición del cursor. Se decrementa el puntero del a DDRAM.
![Page 120: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/120.jpg)
B = 1B = 0
Comandos de Control LCD
Display Control (00001 D C B)
Control de la pantalla.
No hay efecto en el parpadeo del cursor.
Efecto de parpadeo con un cursor rectangular.
C = 1C = 0 El cursor no se visualiza.
El cursor es visualizado.
D = 1D = 0 El display se apaga.
El display se enciende.
![Page 121: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/121.jpg)
R/L = 0
R/L = 1
Comandos de Control LCD
Cursor and Display Shift (0001 S/C R/L xx)
Control de desplazamiento del cursor y de la pantalla:
A la izquierda.
El efecto de desplazamiento se aplica solo sobre el cursor sin alterar el contenido de la DDRAM
A la derecha.
S/C = 0
S/C = 1 El efecto de desplazamiento se aplica sobre todo el display.
![Page 122: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/122.jpg)
F = 1F = 0
Comandos de Control LCD
Display Control (00001 D C B)
Control de la pantalla.
Caracteres de 5x7 puntos. (Font)
Caracteres de 5x10 puntos. (Font)
N = 1N = 0 Pantalla de linea 1. (Number Line)
Pantalla de linea 2. (Number Line)
DL = 1DL = 0 Comunicación con 4 bits
Comunicación con 8 bits.
![Page 123: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/123.jpg)
Librería de Subrutinas
LCD_Inicializa
Configura funciones, produce un reset, borra la memoria de la DDRAM y enciende la pantalla.
LCD_Caracter
Visualiza en la posición actual del cursor el codigo ASCII del dato contenido en el registro W.
LCD_Borra
Borra toda la pantalla y coloca el cursor al principio de la línea 1.
![Page 124: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/124.jpg)
Librería de Subrutinas
LCD_Linea1
Envia el cursor al principio de la línea 1.
LCD_Linea2
Envia el cursor al principio de la línea 2.
LCD_PosicionLinea1
Envía el cursor a la posición de la línea 1 indicada por W.
LCD_PosicionLinea2
Envía el cursor a la posición de la línea 2 indicada por W.
![Page 125: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/125.jpg)
Librería de Subrutinas
LCD_LineaBlanco
Visualiza una línea en blanco.
LCD_DosEspaciosBlancos
Visualiza dos espacios en blanco.
![Page 126: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/126.jpg)
Visualización de Caracteres
![Page 127: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/127.jpg)
Conexión de LCD mediante 8 bits
![Page 128: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/128.jpg)
Visualización de mensajes fijos
Librería LCD_MENS.INC
Subrutina “LCD_Mensaje”Visualiza mensajes fijos
Subrutina “LCD_Movimiento”Visualiza mensajes en movimiento
![Page 129: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/129.jpg)
Visualización de mensajes fijos
![Page 130: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/130.jpg)
Visualización de mensajes en movimiento
![Page 131: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/131.jpg)
Comandos de Control LCD
![Page 132: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/132.jpg)
Comandos de Control LCD
Los comandos se envían a través del bus de datos. Para que el LCD los reconozca hay que poner la señal RS a nivel bajo.
Clear Display (00000001)
Borra la pantalla y devuelve el cursor a la posición inicial (posición 0 de la DDRAM)
Return Home (0000001x)
Cursor a la dirección de origen. Devuelve el cursor a la posición de origen de la DDRAM (dirección 00h) quedando intacto su contenido.
![Page 133: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/133.jpg)
Comandos de Control LCD
Entry Mode Set (000001 I/D S)
Modo de entrada. Establece las caracteristicas de escritura de los datos Shift e Increment/Decrement:
S = 0
S = 1
La información visualizada no se desplaza al escribir un carácter.
La información visualizada se desplaza al escribir un carácter. La pantalla se desplaza en el sentido indicado por el bit I/D cuando el cursor llega al filo de la pantalla.
![Page 134: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/134.jpg)
I/D = 1
I/D = 0
Comandos de Control LCD
Entry Mode Set (000001 I/D S)
Modo de entrada. Establece las caracteristicas de escritura de los datos Shift e Increment/Decrement:
Incremento automatico de la posición del cursor. La posición de la DDRAM se incrementa automaticamente tras cada lectura o escritura a la misma.
Decremento de la posición del cursor. Se decrementa el puntero del a DDRAM.
![Page 135: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/135.jpg)
B = 1B = 0
Comandos de Control LCD
Display Control (00001 D C B)
Control de la pantalla.
No hay efecto en el parpadeo del cursor.
Efecto de parpadeo con un cursor rectangular.
C = 1C = 0 El cursor no se visualiza.
El cursor es visualizado.
D = 1D = 0 El display se apaga.
El display se enciende.
![Page 136: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/136.jpg)
R/L = 0
R/L = 1
Comandos de Control LCD
Cursor and Display Shift (0001 S/C R/L xx)
Control de desplazamiento del cursor y de la pantalla:
A la izquierda.
El efecto de desplazamiento se aplica solo sobre el cursor sin alterar el contenido de la DDRAM
A la derecha.
S/C = 0
S/C = 1 El efecto de desplazamiento se aplica sobre todo el display.
![Page 137: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/137.jpg)
F = 1F = 0
Comandos de Control LCD
Display Control (00001 D C B)
Control de la pantalla.
Caracteres de 5x7 puntos. (Font)
Caracteres de 5x10 puntos. (Font)
N = 1N = 0 Pantalla de linea 1. (Number Line)
Pantalla de linea 2. (Number Line)
DL = 1DL = 0 Comunicación con 4 bits
Comunicación con 8 bits.
![Page 138: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/138.jpg)
Comandos de Control LCD
Set CGRAM address
Se va a escribir sobre la dirección CGRAM señalada.
Set DDRAM address (1ddddddd)
Esta instrucción se utiliza para modificar el puntero a la DDRAM
Read Busy Flag
Lee el BF indicando si hay una operación interna en curso y lee, además, el contenido de la dirección DDRAM apuntada.
![Page 139: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/139.jpg)
Librería de Subrutinas
LCD_Inicializa
Configura funciones, produce un reset, borra la memoria de la DDRAM y enciende la pantalla.
LCD_Caracter
Visualiza en la posición actual del cursor el codigo ASCII del dato contenido en el registro W.
LCD_Borra
Borra toda la pantalla y coloca el cursor al principio de la línea 1.
![Page 140: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/140.jpg)
Librería de Subrutinas
LCD_Linea1
Envia el cursor al principio de la línea 1.
LCD_Linea2
Envia el cursor al principio de la línea 2.
LCD_PosicinLinea1
Envía el cursor a la posición de la línea 1 indicada por W.
LCD_PosicinLinea2
Envía el cursor a la posición de la línea 2 indicada por W.
![Page 141: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/141.jpg)
Librería de Subrutinas
LCD_Linea1
Envia el cursor al principio de la línea 1.
LCD_Linea2
Envia el cursor al principio de la línea 2.
LCD_LineaBlanco
Visualiza una linea en blanco.
LCD_DosEspaciosBlancos
Visualiza dos espacios en blanco.
![Page 142: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/142.jpg)
TECLADO MATRICIAL
Teclado Hexadecimal
A B C
D
E
F
![Page 143: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/143.jpg)
TECLADO MATRICIAL
Teclado Hexadecimal
A B C
D
E
FUn teclado matricial esta constituido por una matriz de pulsadores dispuestos en filas y columnas. Su intención es reducir el numero de líneas necesarias para su conexionado.
![Page 144: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/144.jpg)
TECLADO MATRICIAL
![Page 145: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/145.jpg)
CONEXIÓN CON PIC16F84A
![Page 146: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/146.jpg)
CONEXIÓN CON PIC16F84A
Las filas del teclado se conectan a las líneas de la parte baja del Puerto B, configurado como salida.
Las columnas del teclado se conectan a las líneas de la parte alta del Puerto B, configurado como entradas.
![Page 147: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/147.jpg)
PRESIONANDO TECLAS
0
1
0
1
1
1
1
1
![Page 148: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/148.jpg)
Averiguar la causa de Interrupción
btfsc INTCON,INTFcall Interrupcion_INTbtfsc INTCON,RBIFcall Interrupcion_RBIbtfsc INTCON,TOIFcall Interrupcion_TOI
![Page 149: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/149.jpg)
ALGORITMO DE PROGRAMACIÓN
![Page 150: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/150.jpg)
ALGORITMO DE PROGRAMACIÓN
0
1
1
1
![Page 151: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/151.jpg)
0
1
1
1
TESTEO DE COLUMNAS
![Page 152: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/152.jpg)
TESTEO DE COLUMNAS
0
1
1
1
![Page 153: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/153.jpg)
TESTEO DE COLUMNAS
0
1
1
1
![Page 154: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/154.jpg)
TESTEO DE COLUMNAS
0
1
1
1
![Page 155: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/155.jpg)
1
0
1
1
TESTEO DE COLUMNAS
![Page 156: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/156.jpg)
TESTEO DE COLUMNAS
1
0
1
1
![Page 157: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/157.jpg)
TESTEO DE COLUMNAS
1
0
1
1
![Page 158: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/158.jpg)
TESTEO DE COLUMNAS
1
0
1
1
![Page 159: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/159.jpg)
ALGORITMO DE PROGRAMACIÓN
1
1
1
0
![Page 160: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/160.jpg)
TESTEO DE COLUMNAS
1
1
1
0
![Page 161: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/161.jpg)
TESTEO DE COLUMNAS
1
1
1
0
![Page 162: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/162.jpg)
TESTEO DE COLUMNAS
1
1
1
0
![Page 163: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/163.jpg)
ALGORITMO DE PROGRAMACIÓN
1
1
0
1
![Page 164: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/164.jpg)
TESTEO DE COLUMNAS
1
1
0
1
![Page 165: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/165.jpg)
TESTEO DE COLUMNAS
1
1
0
1
![Page 166: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/166.jpg)
TESTEO DE COLUMNAS
1
1
0
1
![Page 167: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/167.jpg)
TECLA PULSADA
1
1
0
1
0
W = 15
![Page 168: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/168.jpg)
TECLA PULSADA
![Page 169: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/169.jpg)
TECLA PULSADA
![Page 170: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/170.jpg)
LIBRERÍA DE SUBRUTINAS
TECLADOS.INC
Teclado_Inicializa
Configura las líneas del Puerto B según la conexión del teclado realizada y comprueba que no hay pulsada tecla alguna al principio.
Teclado_EsperaDejePulsar
Permanece en esta subrutina mientras siga pulsada la tecla. Se utiliza para que no repita la misma lectura varias veces.
![Page 171: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/171.jpg)
LIBRERÍA DE SUBRUTINAS
TECLADOS.INC
Teclado_LeeOrdenTecla
Lee el teclado obteniendo en el registro W el orden de la tecl pulsda. Además, posiciona el flag Carry para indicar si ha presionado alguna tecla.
Teclado_LeeHex
Lee un teclado Hexadecimal. En el registro de trabajo W aparece el valor hexadecimal de la tecla pulsada. Además posiciona el flag Carry para indicar si se ha presionado alguna tecla.
![Page 172: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/172.jpg)
LIST P=16F84AINCLUDE <P16F84A.INC>
CBLOCK 0x0CENDC
ORG 0goto InicioORG 4goto ServicioInterrupcion
Iniciocall LCD_Inicializacall Teclado_Inicializamovlw b'10001000‘movwf INTCON
;Configura las líneas del teclado.
;Habilita la interrupción RBI y la general.
Programa Aplicación
![Page 173: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/173.jpg)
Principalsleepgoto Principal
ServicioInterrupcioncall Teclado_LeeHexcall LCD_Nibblecall Teclado_EsperaDejePulsarbcf INTCON,RBIFretfie
INCLUDE <TECLADO.INC> INCLUDE <LCD_4BIT.INC>
INCLUDE <RETARDOS.INC>END
; Espera en modo bajo consumo que pulse teclado.
; Obtiene el valor hexadecimal de la tecla pulsada.
; Visualiza el valor en pantalla.
; Para que no se repita el mismo carácter .
; mientras permanece pulsado, limpia flag.
; Subrutinas de control del teclado.
![Page 174: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/174.jpg)
CONEXIONES
![Page 175: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/175.jpg)
CERRADURA ELECTRÓNICA
![Page 176: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/176.jpg)
Microcontroladores y Microprocesadores
![Page 177: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/177.jpg)
MOTOR PASO A PASO
El PAP mas comercializado es el de 7,5º por paso o 48 pasos por revolución. El principal problema que presentan los motores PAP es su limitada potencia.
Los incrementos de rotación o pasos se miden en grados y es el parámetro fundamental de un motor PAP. Los PAP se comercializan dentro de una gran variedad de grados de rotación por paso, desde 0,72º a 22,5º, correspondiente a 500 y 16 pasos por revolución, respectivamente .
![Page 178: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/178.jpg)
L1
I
PRINCIPIOS DE FUNCIONAMIENTO
L2
I
Núcleo de Hierro
Bobina Estator
Rotor
![Page 179: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/179.jpg)
Reposo
L1
I
PRINCIPIOS DE FUNCIONAMIENTO
L2
I
![Page 180: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/180.jpg)
PASO 1
L1
I
PRINCIPIOS DE FUNCIONAMIENTO
L2
I
Energizado
![Page 181: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/181.jpg)
PASO 2
PRINCIPIOS DE FUNCIONAMIENTO
L2
I
L1
IInvertir Polaridad L1
![Page 182: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/182.jpg)
L2
I
L1
I
PRINCIPIOS DE FUNCIONAMIENTO
PASO 3
Invertir Polaridad L2
![Page 183: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/183.jpg)
L2
I
L1
I
PRINCIPIOS DE FUNCIONAMIENTO
PASO 4
Invertir Polaridad L1
![Page 184: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/184.jpg)
MOTORES PAP BIPOLARES
El modelo de motor paso a paso que hemos analizado, recibe el nombre de BIPOLAR.
En este tipo de motores las bobinas del estator se conectan formando dos grupos.
![Page 185: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/185.jpg)
Secuencias de Movimientos
En el modo Full Step el rotor del motor PAP avanza un paso por cada pulso de excitación.
![Page 186: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/186.jpg)
Secuencias de Movimientos
En el modo Half Step el rotor del motor PAP avanza medio paso por cada pulso de excitación.
![Page 187: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/187.jpg)
MOTORES PAP UNIPOLARES
Tras el inconveniente que implica la necesidad de dos polaridades de corriente para generar la secuencia del motor se puede disponer de una toma media entre las bobinas. De esta forma se obtiene un Motor PAP Unipolar de cuatro fases, donde las corriente circula por las bobinas en un único sentido.
![Page 188: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/188.jpg)
Secuencias de Movimientos
En el modo Full Step el rotor del motor PAP avanza un paso por cada pulso de excitación.
![Page 189: Micro3](https://reader036.fdocuments.ec/reader036/viewer/2022062419/5571f94249795991698f2a53/html5/thumbnails/189.jpg)
Secuencias de Movimientos
En el modo Half Step el rotor del motor PAP avanza medio paso por cada pulso de excitación.