Академический Документы
Профессиональный Документы
Культура Документы
Microcontroladores PIC
8
CPU 14
PROGRAMA
• Herramientas de soporte
• Ensamblador MPASM.
• Simulador software MPSlM.
• Compilador de lenguaje C, MP-C.
• Programador universal PICSTART PLUS
• Emulador universal PIC MASTER.
• Herramienta de desarrollo para Lógica difusa FUZZY TECH-MP.
• Entorno de programación integrado MPLAB
José Oliden Martínez
Las tres gamas de Microcontroladores
PIC
PIC17CXX
OTP/
Con las tres gamas de PIC se EPROM
dispone de gran diversidad de Gama Alta
modelos y encapsulados, pudiendo
seleccionar el que mejor se acople
a las necesidades de acuerdo con PIC16CXXX
el tipo y capacidad de las OTP/EPROM
memorias, el número de líneas de Gama Media
E/S y las funciones auxiliares
precisas.
PIC16C5X
OTP/EPROM/EEPROM
PIC12CXX
OTP
Gama Baja
Los microcontroladores
PIC tienen un ALU y un
registro de trabajo (W) de
8 bits. El ALU realiza
operaciones aritméticas y
lógicas entre el dato en el
registro de trabajo y
cualquier otro registro. En
las operaciones que
realiza el ALU con dos
operandos, siempre se
tiene a W (registro de
trabajo) como uno de
ellos. En las operaciones
de un solo operando se
tiene al W o a cualquier
otro registro.
• Q1 Se identifica la instrucción
• Q2 Lectura de dato
• Q3 Procesa el dato (OPERA)
• Q4 Guarda o Escribe el resultado
José Oliden Martínez
Instrucciones
Las instrucciones se clasifican en:
orientadas a registros (18).
orientadas al bit (4).
operaciones de literales y control (13).
Instrucciones Programación I
IORLW k Inclusive OR Literal with W W = W OR k
IORWF f,d Inclusive OR W with f d = f OR W (donde d puede ser W ó f)
MOVLW k Move literal to W W=k
MOVF f,d Move f d = f (donde d puede ser W ó f)
MOVWF f Move W to f f=W
NOP No Operation No operación
OPTION Load Option Register OPTION = W
RETFIE Return from Interrupt Retorna de una subrutina de interrupción
RETLW k Return Literal to W Retorna de una subrutina con W = k
RETURN Return from Subroutine Retorna de una subrutina
RLF f,d Rotale Left f through Carry d = f << 1 (donde d puede ser W ó f)
RRF f,d Rotale Right f through Carry d = f >> 1 (donde d puede ser W ó f)
SLEEP Go into Standby Mode Pone el PIC en standby
SUBLW k Subtract W from Literal W=k-W
SUBWF f,d Subtract W from f d = f - W (donde d puede ser W ó f)
SWAPF f Swap f f = Swap Intercambia los bit 0123 con 4567 de f
TRIS f Load TRIS Register TRIS de f = W
XORLW k Exclusive OR Literal with W W = W XOR k
XORWF f,d Exclusive OR W with f d = f XOR W (donde d puede ser W ó f)
00 01 10 11
Memoria de Datos
Registros de Propósito
General GPR
RAM
Programación I Instrucciones orientadas a los bytes
Banderas
Mnemónico Parámetros Descripción Ciclos
afectadas
ADDWF f,d Suma W y f 1 C,DC,Z
ANDWF f,d AND W con f 1 Z
CLRF f clear f 1 Z
CLRW f,d clear W 1 Z
COMF f,d Complementa f 1 Z
DECF f,d Decrementa (en 1) f 1 Z
DECFSZ f,d Decrementa (en 1) f, Salta 1(2) None
INCF f,d Incrementa (en 1) f 1 Z
INCFSZ f,d Incrementa (en 1) f , Salta 1(2) None
IORWF f,d OR W con F 1 Z
MOVF f,d Mover f 1 Z
MOVWF f Mover W a f 1 None
NOP No Operación 1 None
RLF f,d Rotar a la derecha >1 1 C
RRF f,d Rotar a la izquierda >1 1 C
SUBWF f,d Sustrae W de f 1 C,DC,Z
SWAPF f,d Intercambia MSB con LSB 1 None
XORWF f,d XOR W con f 1 Z
Programación I Instrucciones orientadas a los bits
Banderas
Mnemónico Parámetros Descripción Ciclos
afectadas
Banderas
Mnemónico Parámetros Descripción Ciclos
afectadas
CALL k Subrutina 2
CLRWDT - clear WDT 1 TO,PD
STATUS (03h)
Los bits de este
registro tienen tres
misiones distintas:
1. Se encargan de
avisar las
incidencias del
resultado de la
ALU (C, DC y Z)
2. Indican el
estado de Reset
(TO# y PD#)
3. Seleccionan el
banco a acceder
en la memoria de
datos (IRP, RP0 y
RP1)
OPTION_REG (81h)
La misión principal de
este registro es controlar
el TMR0 (temporizador) y
el divisor de frecuencia.
Además configura la
interrupción externa INT
y las resistencias pull-up
del puerto B.
INTCON (0Bh)
La mayor parte de los
señalizadores y bits de
permiso de las fuentes
de interrupción en los
PIC16X8XX están
implementados sobre
los bits de este registro
que ocupa la dirección
0Bh del banco 0 y se
encuentra duplicado
en los demás bancos.
PIE1 (8Ch)
Contiene
los bits para
activar las
interrupcion
es de los
periféricos
PIR1 (0Ch)
Contiene las
banderas
que indican
la activación
de alguna
interrupción
periférica
Registros Especiales
PORTA
Algunos de los puertos de E/S son multiplexados para algunas otras funciones.
Los registros de los puertos en el banco 1 (TRIS) son para configurar los
puertos.
.ASM .INC
Compilador Asembler
Flujo de operaciones al
.COD .LST .ERR .HEX
programar un
microcontrolador PIC
Programador
PIC
16F877
Ejemplo:
Leer un bit del puerto B (RB0) y según su valor hacer:
RB0=“0” mostrar por el puerto D “10101010”
RB0=“1” mostrar por el puerto D “01010101”
Solución Inicio
Configuración
de puertos
RB0 : entrada
PORTD: salida
SI NO
RB0=0?
• Hacer un programa que mueva los datos de las direcciones 20H, 21H,
22H, 23H a las direcciones: 120H, 121H, 122H, 123H de manera
indirecta.
Solución list p=16F877 ;Indica el modelo de PIC
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _XT_OSC & _WRT_ENABLE_ON & _LVP_OFF
; Vector Reset
org 0x00
goto 0x05
org 0x05 ;
bcf STATUS, RP0
bcf STATUS, RP1 ; Banco 0
INICIO:
bcf STATUS,IRP ; Seleccionar Banco 0/1
movlw 0x20 ; inicializar puntero
movwf FSR ; a la memoria RAM
NEXT:
bcf STATUS,IRP ; Banco 0/1 para direccionamiento indirecto
movfw INDF ; limpiar registro INDF
bsf STATUS,IRP ; Banco 2/3 para direccionamiento indirecto
movwf INDF ; Almacenar W donde apunta INDF
incf FSR,F ; incrementar puntero
btfss FSR,2 ; bit 2 del FSR=1?
goto NEXT ; no, trasladar siguiente
CONTINUAR:
movlw 0x01
movwf 0x20
interruptores (DIP) un 0
Vcc1 330
1 5
número por los bits LSB Interruptor 1
a1 b1
LED 1
del puerto A y mostrar el 2 6
330
LED 2
330
número ingresado por 3
a3 PIC b3
7
Interruptor 3
los bits MSB del puerto 4 8
330 LED 3
a4 b4
B Interruptor 4 GND
LED 4
0
Entrada Salida
(PA0-PA3) (PB4-PB7)