Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Microcontroladores PIC
8
CPU 14
PROGRAMA
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/EPRO M
memorias, el nmero de lneas de Gama Media
E/S y las funciones auxiliares
precisas.
PIC16C5 X
OTP/EPRO M/EEPROM
PIC12CXX
OTP
Gama Baja
Los microcontroladores
PIC tienen un ALU y un
registro de trabajo (W) de
8 bits. El ALU realiza
operaciones aritmticas y
lgicas 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.
ArquitecturaInterna :
Memoria de Programa (Instrucciones)
Aqu se almacenan todas las instrucciones del
programa de control.
La memoria de programa siempre est direccionada
desde el Contador de Programa (PC).
Q1 Se identifica la instruccin
Q2 Lectura de dato
Q3 Procesa el dato (OPERA)
Q4 Guarda o Escribe el resultado
Jos Oliden Martnez
Instrucciones
Las instrucciones se clasifican en:
orientadas a registros (18).
orientadas al bit (4).
operaciones de literales y control (13).
Memoria de Datos
Registros de Propsito
General GPR
RAM
Programacin I Instrucciones orientadas a los bytes
Banderas
Mnemnico Parmetros Descripcin 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 Operacin 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
Programacin I Instrucciones orientadas a los bits
Banderas
Mnemnico Parmetros Descripcin Ciclos
afectadas
Banderas
Mnemnico Parmetros Descripcin 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 misin principal de
este registro es controlar
el TMR0 (temporizador) y
el divisor de frecuencia.
Adems configura la
interrupcin externa INT
y las resistencias pull-up
del puerto B.
INTCON (0Bh)
La mayor parte de los
sealizadores y bits de
permiso de las fuentes
de interrupcin en los
PIC16X8XX estn
implementados sobre
los bits de este registro
que ocupa la direccin
0Bh del banco 0 y se
encuentra duplicado
en los dems bancos.
PIE1 (8Ch)
Contiene
los bits para
activar las
interrupcion
es de los
perifricos
PIR1 (0Ch)
Contiene las
banderas
que indican
la activacin
de alguna
interrupcin
perifrica
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 segn su valor hacer:
RB0=0 mostrar por el puerto D 10101010
RB0=1 mostrar por el puerto D 01010101
Solucin Inicio
Configuracin
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.
Solucin 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
nmero por los bits LSB Interruptor 1
a1 b1
LED 1
del puerto A y mostrar el 2 6
330
LED 2
330
nmero 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)