Date post: | 06-Apr-2018 |
Category: |
Documents |
Upload: | lupita-cortes |
View: | 233 times |
Download: | 0 times |
of 83
8/3/2019 Unidad 2 Pics
1/83
El microcontrolador PIC de
Microchip
Taller de Microcontroladoresao 2011
Optativa de grado yCurso de Posgrado
8/3/2019 Unidad 2 Pics
2/83
2
Temario
1- Organizacin interna 1.1- Memoria de programa
1.2- Memoria de datos.
1.3- Unidad lgica y aritmtica
1.4- Registros de estado
2- Pines
8/3/2019 Unidad 2 Pics
3/83
3
Organizacin de los PIC
Fabricados con tecnologa CMOS. Aunque los dispositivos CMOS son ms lentos que los TTL, sonideales para los C porque requieren de menor consumo de energa. Es posible implementar sistemas quesolo se alimenten de bateras corrientes. La tecnologa CMOS tambin ocupa mucho menor espacio en elchip.
Memorias de programa (FLASH, OTP o ROM), memoria de datos esttica (SRAM) y memoriaEEPROMinternas.
Puertos de E/Sbidireccionales configurables independientemente pin por pin. Suministro de altacorriente en los puertos de E/S.
Timers. Temporizadores de alta precisin o contadores de pulsos externos.
WatchDog. Monitoriza que el PIC funcione adecuadamente a lo que se esperaba y no se cuelgue.
ICSP(In Circuit Serial Programming). Permite realizar la programacin del PIC utilizando una interfaseserial con muy pocos pines.
Bits de Configuracin. A veces llamados fuses, permiten establecer un determinado modo defuncionamiento del PIC, como el tipo de oscilador que utilizar o si el cdigo grabado podr o no ser ledodespus de la programacin.Otros recursos, ms avanzados, son especficos a cada familia de PICs y pueden ser:
Caractersticas generales de los PIC
8/3/2019 Unidad 2 Pics
4/83
4
Organizacin de los PIC
Mdulos PWM. Generadores de ondas PWM (Pulse Width Modulation). Son particularmente tiles paracontrolar la velocidad de los motores DC.
Convesores Anlogico-Digital, ADC. Para recibir seales del mundo analgico.
Puerto Serial Sncrono, MSSP. Para la comunicacin con dispositivos que utilizan los buses I2C o SPI.
Puerto Paralelo Esclavo, SPP. Por ejemplo, para conectarse directamente con el puerto paralelo del PC.
USART, Transmisor Receptor Sncrono Asncrono Universal. Para comunicarse mediante los protocolosRS232 con cualquier dispositivo que tambin lo soporte. Por ejemplo, podemos conectar nuestro PIC alpuerto serie del PC o a cualquier otro C con USART.
Mdulo Comparador Analgico. puede ahorrar un OP-AMP y algo ms.
Mdulo CAN. Para facilitarle al PIC su conexin en una red LAN.
Mdulo USB. Casi todos los dispositivos digitales modernos presentan interfase USB.
Caractersticas especficas de los PIC
8/3/2019 Unidad 2 Pics
5/83
5
Clasificacin de los PIC
Pic 10
Pic 10
Pic 12Pic 12
Pic 16Pic 16
Pic 18Pic 18Pic 24FPic 24F
Pic 24HPic 24H
dsPic 30dsPic 30
dsPic 33dsPic 33Pic 32Pic 32
8bits
16bits
32bits
Mayor rendimiento y funcionalidad
8/3/2019 Unidad 2 Pics
6/83
6
Arquitecturas de PICs de 8 bits
PIC18 J-series for cost-sensitive applications with high
levels of integration
PIC18 K-series for low power,high-performance applications
Includes PIC12F1xxx &PIC16F1xxx
Includes PIC12 and PIC16Includes PIC10, PIC12 andPIC16
Families
32 level deep stack, 8x8hardware multiplier
C-code optimized
Advanced peripheralsincluding CAN, USB, Ethernet,touch sensing, and LCD drivers
C-code Optimized
Enhanced 16 LevelHardware Stack
Enhanced IndirectAddressing
Reduced Interrupt Latency
Simplified Memory Map
Optimal cost-to-performanceratio
Integrated peripherals
including SPI, I2C, UART,LCD, ADC
Smallest form factor
Lowest cost
Ideal for battery operated
or space constrainedapplications
Easy to learn & use
Features
Up to 4 KBUp to 4 KBUp to 368 BytesUp to 138 BytesData Memory
Up to 128 KBUp to 56 KBUp to 14 KBUp to 3 KBProgram Memory
75 - 83, 16-bit instructions49, 14-bit instructions35, 14-bit instructions33, 12-bit instructionsInstructions
10 16 MIPS8 MIPS5 MIPS5 MIPSOperatingPerformance
Multiple Interrupt Capability withHardware Context Save
Single Interrupt Capability withHardware Context Save
Single Interrupt CapabilityNoInterrupts
18 1008 648 646 40Pin count
PIC18 ArchitectureEnhanced MidrangeArchitecture
Midrange ArchitectureBaseline Architecture
8/3/2019 Unidad 2 Pics
7/83
7
Arquitecturas de PICs de 8 bits
Bus de datos de 8 bits
Bus de direcciones de 12, 14 o 16 bitssegn el rango de arquitectura
8/3/2019 Unidad 2 Pics
8/83
8
Arquitecturas de PICs de 16 bits
Reloj de tiempo real y calendario Chequeo de redundancia cclica USB Convertidores A/D de 10 y 10/12 bit Comparadores Conversores D/A de 10 bit y 16 bit Acceso Directo a Memoria (DMA) Parallel Master Port Code Guard Security Peripheral Pin Select
Caractersticas generales de los PIC de 16 bits
Peripheral Pin Select (PPS) es una nueva caracterstica de los
microcontroladores de Microchip, que permite multiplexar muchos de losperifricos digitales a distintos pines del chip. El multiplexado permite
efectivamente elegir que perifrico se asigna a cual pin del chip, facilitando el
desarrollo de las placas de circuito y evitando el cruce de pistas, adems
disminuir los efectos de las capacitancias parsitas.
8/3/2019 Unidad 2 Pics
9/83
9
Arquitecturas de PICs de 16 bits
8/3/2019 Unidad 2 Pics
10/83
10
Arquitecturas de PICs de 32 bits
CPU de 80 MHz, 1.56 DMIPS/MHz Hw de multiplicacin y divisin de un solo
ciclo de reloj Cache de pre-fetching de 256 bytes flash Cambio rpido de contexto y respuesta de
interrupciones Controlador DMA de ocho canales Perifricos especiales con canales DMA dedicados Capacidad de manipulacin individual de bits 10/100 Ethernet, CAN2.0b, USB host/device/OTG
Controlador de interrupciones anidadas 10-bit ADC, 1Msps, and +/-1 LSB Puerto maestro de 16 bits para soporte de
QVGA y memoria POR, BOR, LVD, Pull-ups tensin desde 2.3 a 3.6 v, tolerancia de I/O: 5v
Caractersticas generales de los PIC de 32 bits
8/3/2019 Unidad 2 Pics
11/83
11
En resumen1. Arquitectura segn modelo Hardvard
2. Microcontrolador de arquitectura cerrada.3. Ejecucin segmentada de instrucciones (fetching y ejecucin)4. Formato de instrucciones de igual longitud: 12 bits en gama baja, 14 en
media y mas en alta.5. Ncleo RISC con 33 instrucciones en gama baja, 35 en media y 60 en alta.
6. Arquitectura basada en bancos de registros (todos los objetos del sistema,E/S, temporizadores, memoria, etc, implementados fsicamente comoregistros).
7. Diversidad de modelos con prestaciones diferentes
8. Herramientas de soporte potentes y econmicas (programadores,simuladores, emuladores, compiladores, interpretes, etc.).9. Arquitectura ortogonal: cualquier instruccin puede utilizar cualquier
elemento de la arquitectura como fuente o destino.
8/3/2019 Unidad 2 Pics
12/83
12
Arquitectura ortogonal del PIC
8/3/2019 Unidad 2 Pics
13/83
13
Arquitectura de la serie 16FxxEl ms representativo, difundido y utilizado es el 16F84A
Caractersticas:
Opera a una frecuencia mxima de 10 MHz
1Kbyte de memoria EEPROM de programa
68 palabras (de 8 bits) de memoria RAM 64 bytes de memoria EEPROM para datos (no voltiles)
35 instrucciones RISC
13 pines de entrada/salida (un puerto de 8 bits + otro de 5
bits)
Timer/contador de 8 bits
8/3/2019 Unidad 2 Pics
14/83
14
Pinout del PIC16F84A OSC1/CLKIN: Entrada de reloj o conexin con el cristal
de cuarzo
OSC2/CLKOUT: Salida de Fosc/4 en modo oscilador R-Co conexin con el cristal de cuarzo
VPP/MCCLR: En modo grabacin tensin VPP (12-14 v)En funcionamiento normal, peticin de Reset
RA0-RA3: Lneas de entrada/salida del puerto A
RA4/TOCK1: Lnea de entrada/salida del puerto A oentrada de reloj para TMR0
RB0/INT: Lnea de entrada/salida del puerto B o
Peticin de interrupcin externa
RB1-RB7: Lneas de entrada/salida del puerto B
8/3/2019 Unidad 2 Pics
15/83
15
Arquitectura del PIC16F84A
8/3/2019 Unidad 2 Pics
16/83
16
Caractersticas generales
Memoria de programa EEPROM de 1Kx14bits
Memoria de datos dividida en 2 reas
rea RAM de 22 registros de propsito especfico (SFR) y 32 de propsito general (16C84) 68 en el caso del 16F84
rea EEPROM formada por 64 bytes
ALU de 8 bits y registro de trabajo W en configuracin ortogonal.
El segundo operando de la ALU puede ser cualquier registro, memoria, puerto o el propio cdigo
de instruccin.
Recursos conectables al bus de datos: Puerto A, Puerto B, Temporizador, TMR0, etc.
8/3/2019 Unidad 2 Pics
17/83
17
Sistema de memoria del PIC16F84A
3 tipos de memorias
RAM de datos, voltil
ROM de programa, EEPROMTipo Flash.
1K palabras de 14 bits c/udesde 000h a 3FFh
ROM de datos, tipo EEPROM
8/3/2019 Unidad 2 Pics
18/83
8/3/2019 Unidad 2 Pics
19/83
19
El contador de programa (PC) Contador de Programa (PC): 13 bits -> 8K mximo de memoria de programa.
Formado por 2 bytes:
PCL: Byte menos significativo. PC. Accesible al usuario de formadirecta (Lectura, Escritura). Escribir en PCL implica un salto (programado).
PCLATH: Byte ms significativo. PC. NO accesible directamente por elusuario. Se ve modificado por las instrucciones CALL y GOTO cuyo parmetroinmediato es de 11 bits.
Rango del salto programado.- 256 instrucciones
Rango del CALL o GOTO:
- 2048 (2K) instrucciones
8/3/2019 Unidad 2 Pics
20/83
20
Memoria RAM de datos
Consta de 2 bancos de 128 bytes cada uno El PIC16F84A slo tiene implementadas las primeras 80
direcciones de cada banco
En las 12 primeras posiciones se ubican los registros de
propsito especfico (SFR)
En las 68 posiciones siguientes estn los registros depropsito general (GPR)
Los 80 registros de propsito general del banco 1 semapean sobre el banco 0, dejando reducidos a 68 losregistros operativos
8/3/2019 Unidad 2 Pics
21/83
21
Descripcin de Registros SFR
8/3/2019 Unidad 2 Pics
22/83
22
Modos de direccionamientoTres modos de direccionamiento
Inmediato: El operando (8 bits) se encuentra de forma inmediata (literal)en la propia instruccin
Directo: La direccin del dato aparece en forma explcita en la propia
instruccin. El dato se encuentra en la memoria RAM de datos. HAY quemantener controlado el bit RP0.
Indirecto: El registro FSR(4) debe contener la direccin de memoria deldato. El registro INDF(se trata de un registro ficticio) contendr virtualmentedicha localizacin. Sobre INDFse pueden realizar lecturas y escrituras queafectarn directamente a la direccin de RAM apuntada por FSR(4).
8/3/2019 Unidad 2 Pics
23/83
23
Direccionamiento Directo
nousado
nousado
00h
0Bh0Ch
2Fh30h
7Fh
mapeo dedirecciones
va albanco 0
banco 0 banco 1 banco 2 banco 3
00 01 10 11
RP1 RP0 6 0Cod Op
Direccin
Selector
de
banco
Los bits de menor pesodel cdigo de operacin dela instruccin proporcionanla posicin de registrodentro de un banco
Los bits RP1 y RP0 delRegistro de STATUS, seleccionan elbanco a acceder
En el caso del 16F84Aslo se usa el bit RP0 portener implementadossolamente dos bancos
Memoria de Datos
8/3/2019 Unidad 2 Pics
24/83
24
Direccionamiento Indirecto
nousado
nousado
00h
0Bh0Ch
2Fh30h
7Fh
mapeo dedirecciones
va albanco 0
00 01 10 11
Direccin
Selector
de
banco
Memoria de Datos
IRP 7 0FSR
El operando de lainstruccin hace referenciaal Registro INDF, queocupa la posicin 0 delrea de datos. Se accede ala posicin que apunta el
registro FSR, en la posicin4 del banco 0.
Los 7 bits de menos pesodel FSR seleccionan la
posicin y su bit de mspeso junto al bit IRP(STATUS ),seleccionan el banco.
banco 0 banco 1 banco 2 banco 3
8/3/2019 Unidad 2 Pics
25/83
25
Juego de Instrucciones Generalidades
Tipos de formato Instrucciones orientadas a registros
Instrucciones orientadas a bit
Instruccciones de salto
Intrucciones con Inmediatos
Intrucciones de control
8/3/2019 Unidad 2 Pics
26/83
26
Generalidades
Reduced
Instruction
Set
Computer
Reduced
Instruction
SetComputer
Instrucciones simples y rpidas
Instrucciones ortogonales
Instrucciones y datos de largo
constante
8/3/2019 Unidad 2 Pics
27/83
27
Generalidades - EjemploSupongamos la siguiente configuracin para un PIC Pic16F84 con un
cristal oscilador de 10mhz que ejecuta un programa en 600 usec. Si
se sabe que el 50% son instrucciones de salto,
Cuntas instrucciones tiene el programa?
Cunta memoria ocupa?
Clk = Tosc = 1 x 10-7 seg = 100 ns
Ciclo Instruccin = 4 * Tosc = 400ns
Tejecucin = 600 usec = X * 400ns + 2 * X * 400ns X = 500
500 Instrucciones de salto + 500 Instrucciones
Por lo tanto 1000 posiciones de Memoria de Programa
8/3/2019 Unidad 2 Pics
28/83
28
Formato de instruccin de gama media01
3
Campo del CCampo del CCampo del CCampo del Cdigo:digo:digo:digo: Define la operacin que realiza la instruccin.
Campos fuente y destino:Campos fuente y destino:Campos fuente y destino:Campos fuente y destino: Estos campos de bits definen los registros que
actan como operandos en la instruccin
Literal o inmediato (k):Literal o inmediato (k):Literal o inmediato (k):Literal o inmediato (k): Contiene el valor de un operando inmediato
Campo de referencia a unCampo de referencia a unCampo de referencia a unCampo de referencia a un bitbitbitbit:::: Suele ser un campo de 3 bits que indica la
posicin de un bit concreto dentro de un registro de 8 bits
Campo de direcciCampo de direcciCampo de direcciCampo de direccin de salto:n de salto:n de salto:n de salto: En las instrucciones CALL y GOTO contiene ladireccin de la siguiente instruccin
8/3/2019 Unidad 2 Pics
29/83
29
Tipos de Operaciones Orientadas a registros
Orientadas a bit Orientadas a literales
Orientadas a control de flujo
incondicionales
Orientadas a control de flujo condicional
8/3/2019 Unidad 2 Pics
30/83
30
Operaciones Orientadas a Registros Campo de Operacin de 6 bits
Direccin del Operando Fuente de 7 bits
Operando destino 1 bit: 1: Registro destino coincide con el fuente
0: Destino es el registro especial del sistema (W)
067813
nemnico f, d.
8/3/2019 Unidad 2 Pics
31/83
31
Operaciones Orientadas a Registros -
Ejemplo Pregunta:
Hallar el formato de instruccin inc f,dqueutiliza como operando fuente el registroubicado en 0x07 y cuyo destino es el mismo.
El cdigo de operacin es: 001010
11100001010100
8/3/2019 Unidad 2 Pics
32/83
32
Operaciones Orientadas a Bits Campo de Operacin de 4 bits
Campo de direccin del registro
Posicin en el registro donde se realizar laoperacin determinada por el campo de
operacin
06791
0
1
3
nemnico b, f.
8/3/2019 Unidad 2 Pics
33/83
33
Operaciones Orientadas a Bits
11000001011011
Bsf estado, 5
Ejemplo:Bsf estado, 5
(siendo estado el registro 0x03)
8/3/2019 Unidad 2 Pics
34/83
34
Operaciones con literales o inmediatos Campo de Operacin de 6 bits
Valor Inmediato de 8 bits
07813
nemnico k
O i lit l
8/3/2019 Unidad 2 Pics
35/83
35
Operaciones con literales o
inmediatosEjemplo:
Cargar en el registro W el inmediato 0xAA
01010101XX0011
Movlw 0xAA
8/3/2019 Unidad 2 Pics
36/83
36
Operaciones de control Campo de Operacin de 3 bits
Campo de direccin de salto
010
11
13
nemnico dir_salto
8/3/2019 Unidad 2 Pics
37/83
37
Operaciones de control (saltos) Ejemplo:
decfsz f, d
Pseudocdigo
Si-1 : d--;
Si : If (d==0) goto i+2Si+1 : rama del else
Si+2 : continuacin
Decfsz f, dDecfsz f, d
InstInst
instinst
Salto
Notomado
Salto
tomado
8/3/2019 Unidad 2 Pics
38/83
38
Instrucciones orientadas a registros
Z00 0011 dfff ffff(f)-1 a destino (decrementa f)DECF f,d
Z00 1001 dfff ffffComplemento de f [(#f) a(destino)]COMF f,d
Z00 0001 0000 001100 a (W) (borrar W)CLRW
Z00 0001 1fff ffff00 a (f) (borrar registro F)CLRF f
Z00 0101 dfff ffff(W) AND (f) a (destino)ANDWF f,d
C, DC, Z00 0111 dfff ffff(W)+(f) a (destino)ADDWF f,d
8/3/2019 Unidad 2 Pics
39/83
39
Ninguno00 0000 1fff ffff(W) a (f) MOVer W a destino FMOVWF f
Z00 1000 dfff ffffMOVer f a destinoMOVF f,d
Z00 0100 dfff ffff(W) OR (f) a destinoIORWF f,d
Ninguno00 1111 dfff ffff(f)+1 a destino y si resultado es 0 saltaINCFSZ f,d
Z00 1010 dfff ffff(f)+1 a destino (INCrementa F)INCF f,d
Ninguno00 1011 dfff ffff(f)-1 a destino y si resultado es 0 salta(DECrementa F,Salta si Zero)DECFSZ f,d
Instrucciones orientadas a registros
8/3/2019 Unidad 2 Pics
40/83
40
Z00 0110 dfff ffff(W) XOR (f) a (destino)XORWF f,d
Ninguno00 1110 dfff ffffIntercambia los nibbles de f a destinoSWAPF f,d
C,DC,Z00 0010 dfff ffff(f)(W) a (destino)SUBWF f,d
C00 1100 dfff ffffRota f a la dcha a travs del cary a destinoRRF f,d
C00 1101 dfff ffffRota f a la izq a travs del carry a destinoRLF f,d
Ninguno
00 0000 0xx0
0000No operacinNOP
Instrucciones orientadas a registros
8/3/2019 Unidad 2 Pics
41/83
41
Instrucciones orientadas a bits
Ninguna01 11bb bfff ffffSalto si bit b de reg. f es 1BTFSS f, b
Ninguna01 10bb bfff ffffSalto si bit b de reg. f es 0BTFSC f, b
Ninguna01 01bb bfff ffffPone a 1 bit b de registro fBSF f, b
Ninguna01 00bb bfff ffffPone a 0 bit b de registro fBCF f, b
8/3/2019 Unidad 2 Pics
42/83
42
Instrucciones con literales y de control
Z11 1010 kkkk kkkkw XOR k wkXORLW
C,DC,Z11 110x kkkk kkkkk - w wkSUBLW
TO, PD00 0000 0110 0011Modo Standby-SLEEPNinguna00 0000 0000 1000Retorno de una subrutina-RETURN
Ninguna11 01xx kkkk kkkkRetorno con ken wkRETLW
Ninguna00 0000 0000 1001Retorno de una interrupcin-RETFIE
Ninguna11 00xx kkkk kkkkk wkMOVLW
Z11 1000 kkkk kkkkw OR k wkIORLW
Ninguna10 1kkk kkkk kkkkIr a direccin kkGOTO
TO,PD00 0000 0110 0100Borra temporizador del WDT-CLRWDT
Ninguna10 0kkk kkkk kkkkLlamada a subrutina kkCALL
Z11 1001 kkkk kkkkw AND k wkANDLW
C,DC,Z11 111x kkkk kkkkw + k wkADDLW
8/3/2019 Unidad 2 Pics
43/83
43
En resumen 35 Instrucciones
Orientadas a Registros
Bits
Literales Saltos Condicionales
Saltos Incondicionales
Registro W indispensable!!!
8/3/2019 Unidad 2 Pics
44/83
44
Algunos ejemplos de programacin
Programa que utiliza una subrutina de retardo DELAY. La subrutina decrementa el registro CUENTA2 desde 197 hasta 0, 20 veces
Las veces que se decrementa CUENTA2 son contadas hacia atrs por
CUENTA1)
De esta forma se consigue perder tiempo
El tiempo perdido con esta subrutina depende de la frecuencia a la que opere el
pic.
Ejemplo 1: Delay
8/3/2019 Unidad 2 Pics
45/83
45
Delay programa principalSTATUS EQU 03H
TRISB EQU 06H
PORTB EQU 06H
CUENTA1 EQU 0CH ; Las variables que usemos siempre a partir de la direccin 0Ch
CUENTA2 EQU 0DH
F EQU 1
W EQU 0
ORG 0
GOTO INICIO
ORG 05H
INICIO BSF STATUS,5 ; banco 1
BCF TRISB,0 ; RB0 como salida
BCF STATUS,5 ; banco 0
ITERA BSF PORTB,0 ; Pone a "1" RB0 (enciende)
CALL DELAY ; Llama a la subrutina de retardo
BCF PORTB,0 ; Cuando vuelve del retardo pone a "0" RB0 (apaga)
CALL DELAY ; llama a la subrutina de retardoGOTO ITERA ; cuando vuelve del retardo ejecuta el GOTO
8/3/2019 Unidad 2 Pics
46/83
46
Delay rutinaDELAY MOVLW 19 ; Carga el acumulador con el valor 19 (en decimal)
MOVWF CUENTA1 ; Mueve el contenido del acumulador a CUENTA1
ACA1 MOVLW 197 ; Carga el acumulador con el valor 197
MOVWF CUENTA2 ; Mueve el contenido del acumulador a CUENTA2
ACA DECFSZ CUENTA2,F ; Decrementa CUENTA2, guarda el resultado
; en f, y si es cero se salta la siguiente instruccin
GOTO ACA ; vuelve a decrementar mientras CUENTA2 no sea cero
DECFSZ CUENTA1,F ; Se decrementa CUENTA1 cada vez que CUENTA2 llega a cero
GOTO ACA1 ; mientras CUENTA1 no llegue a cero recarga CUENTA2 y repite
RETURN ; retorna al programa principal
Loop_interno = 198 * 2 instrucciones = 396 instrucciones
Loop_externo = 20 * (4 + Loop_interno) = 8000 instrucciones
Rutina = (3 + 8000) instrucciones * 4 ciclos = 32012 ciclos
Para un PIC a 5 MHz es 0.01 segundos = 10 milisegundos
Loop_interno = 198 * 2 instrucciones = 396 instrucciones
Loop_externo = 20 * (4 + Loop_interno) = 8000 instrucciones
Rutina = (3 + 8000) instrucciones * 4 ciclos = 32012 ciclos
Para un PIC a 5 MHz es 0.01 segundos = 10 milisegundos
198 veces
20 veces
8/3/2019 Unidad 2 Pics
47/83
47
Puertos de Entrada/Salida Se dispone de un total de 13 lneas
Cada una programable individualmente como entrada o como salida Se distribuyen en 2 puertos: PORT A y PORT B
Se accede a cada puerto leyendo o escribiendo en su registro (05h y 06h de la RAM)
Para configurar cada lnea como entrada o como salida se modifica su bit
correspondiente en el registro TRIS del puerto asociado TRIS A o TRIS B (85h y 86h enRAM)
1 configurada como entrada
0 configurada como salida
8/3/2019 Unidad 2 Pics
48/83
48
Puertos de Entrada/SalidaEl puerto A gobierna 5 lneas: RA4:RA0
RA4:
Schmidt Trigger en modo entrada Open drain en modo salida
RA3:RA0:
TTL en modo entrada
CMOS en modo salida
Diagrama del pin RA4
Diagrama de los pines RA3:RA0
8/3/2019 Unidad 2 Pics
49/83
49
Puertos de Entrada/Salida
Cerrado
Abierto
AltaImpedancia
Salida de un cero
8/3/2019 Unidad 2 Pics
50/83
50
Abierto
Cerrado
AltaImpedancia
Salida de un Uno
VDD
VSS
Puertos de Entrada/Salida
8/3/2019 Unidad 2 Pics
51/83
51
Abierto
Abierto
AltaImpedancia
Entrada de un bit
VDD
VSS
Puertos de Entrada/Salida
8/3/2019 Unidad 2 Pics
52/83
52
Puertos de Entrada/Salida El puerto B gobierna 8 lneas: RB7:RB0
Todas las lneas tienen una resistencia Pull-Upconfigurable mediante el bit 7 del registro de opciones
RB7 a RB4 generan una interrupcin cuando sedetecta un cambio de estado desde la ltima entrada encualquiera de ellas. (se desactiva mediante una lecturadel puerto).
Diagrama de pines RB7:RB4
Diagrama de pines RB3:RB0
Multiplexando entradas
8/3/2019 Unidad 2 Pics
53/83
53
p
Ej: ADC
Multiplexando entradas
8/3/2019 Unidad 2 Pics
54/83
54
p
Ej: PortA:4 PIC16f84
8/3/2019 Unidad 2 Pics
55/83
55
Sistema de I/O Programacin
ASM
CLRF STATUS ;
CLRF PORTB ;BSF STATUS, RP0 ;MOVLW 0xCF ;MOVWF TRISB ;
ElegimosBank0 Inicializamos PORTB,
limpiando los Latch de todassus salidas
SeleccionamosBank1 Valor deseado de direccin
PORTB = inputsPORTB = outputsPORTB = inputs
8/3/2019 Unidad 2 Pics
56/83
56
Ejemplo de programacinEjemplo 2: Manejo de led
Vccactivar un LED conectado a RB0 cuando
el interruptor conectado a RA0
este cerrado.
8/3/2019 Unidad 2 Pics
57/83
57
Manejo de ledESTADO EQU 03H ; Direccin de registro de estado
PORTA EQU 05H ; Direccin de puerto A
PORTB EQU 06H ; Direccin de puerto B
ORG 5 ; Cdigo inicia luego del vector de int.
BSF ESTADO, 5 ; RP0 = 1 (acceso al banco 1)
CLRF PORTA ; TRISA = 0 Puerto A de salida
COMF PORTA, 1 ; complementa puerto A (de entrada)
CLRF PORTB ; TRISB = 0 Puerto B de salida
BCF ESTADO, 5 ; RP0 = 0 (acceso al banco 0)
INICIO BTFSC PORTA, 0 ; Salta si el bit 0 de puerto A es 0
GOTO APAGAR
GOTO ENCENDER
APAGAR BCF PORTB, 0 ; Bit 0 de puerto B a 0 (LED apagado)
GOTO INICIO
ENCENDER BSF PORTB, 0 ; Bit 0 de puerto B a 1 (LEDencendido)
GOTO INICIO
END
8/3/2019 Unidad 2 Pics
58/83
58
Timer / Counter El timer es un mecanismo contador de eventos. El resultado de la cuenta se almacena en TMR0
(001h de RAM).
Caractersticas:
Contador de 8 bits (TMR0)
TMR0 se puede leer y escribir (iniciar la cuenta en cualquier valor) Permite seleccionar el evento de cuenta:
Interno.(frecuencia del procesador)
Externo (seal de entrada por RA4 (TOCKL))
Seleccin de flanco activo para reloj externo.
Genera interrupcin de fin de cuenta
Prescaler: divisor de frecuencia de la seal de entrada
8/3/2019 Unidad 2 Pics
59/83
59
Timer / CounterDiagrama de TMR0 y prescaler WDT
8/3/2019 Unidad 2 Pics
60/83
60
WDT OPTION_REG
8/3/2019 Unidad 2 Pics
61/83
61
Timers - Prescaler
8/3/2019 Unidad 2 Pics
62/83
62
Timer / CounterModo Timer
Para seleccionar el modo Timer hay que limpiar el bit TOCS del registro de opciones.
En este modo se incrementa TMR0 en cada ciclo de instruccin.
Si TMR0 es escrito, se inhibe el incremento en los dos siguientes ciclos.
Cuando se alcanza el final de cuenta se activa TOIF (registro de control de interrupciones).
TOIE (registro de interrupciones) habilita o deshabilita la generacin de la interrupcin.
La interrupcin en este modo no sirve para despertar al procesador de un estado SLEEP.
8/3/2019 Unidad 2 Pics
63/83
63
Timer / CounterModo Contador
Para seleccionar el modo contador hay que activar el bit TOCS del registro de opciones.
En este modo se incrementa TMR0 en cada flanco de la seal que llega por RA4/TOCK1.
Esta seal debe cumplir algunos requerimientos si se quiere asegurar un buenfuncionamiento: mnima duracin de perodo igual a 2 * TOSC.
8/3/2019 Unidad 2 Pics
64/83
64
Timer / CounterPrescaler
El prescaler es un divisor de frecuencias programable (registro de opciones).
comparte funcin con el WatchDog.
En modo counter su funcin es dividir la frecuencia de la seal de entrada, el resultado de locual ser el estimulo del contador (El contador se incrementa en flancos de reloj de la sealdividida).
Cuando se usa prescaler los requerimientos de la seal de entrada varan: 4TOSC/divisin.
8/3/2019 Unidad 2 Pics
65/83
65
Timers - Prescaler
8/3/2019 Unidad 2 Pics
66/83
66
Programando el TMR0CLRF TMR0 ; Borra en registro Timer0
CLRF INTCON ; Desabilita interrupciones y borra T0IF
BSF STATUS, RP0 ; Banco 1
MOVLW 0xC3 ; PortB pull-ups desabilitadas,
MOVWF OPTION_REG ; Interrupe en flanco de subida de RB0
; Timer0 incrementa desde el reloj interno; con un prescaler de 1:16.
BCF STATUS, RP0 ; Banco 0
;** BSF INTCON, T0IE ; habilita la interrupcin TMR0;** BSF INTCON, GIE ; habilita todas las interrupciones
;; La interrupcin TMR0 est desabilitada entonces hace; polling sobre el bit de overflow
;T0_OVFL_WAIT
BTFSS INTCON, T0IF
GOTO T0_OVFL_WAIT
; Pasa el overflow del Timer
Clock interno
Programando el TMR0
8/3/2019 Unidad 2 Pics
67/83
67
Programando el TMR0
CLRF TMR0 ; Borramos el registro Timer0
CLRF INTCON ; Desabilitamos las interrupciones y borramos T0IF
BSF STATUS, RP0 ; Banco 1
MOVLW 0x37 ; Puerto B con pull-ups habilitadas,
MOVWF OPTION_REG ; Interrupciones en flanco descendente de RB0
; Timer0 se incrementa del reloj externo; en la transicion de alto a bajo de T0CKIT
; con un prescaler de 1:256.
BCF STATUS, RP0 ; Banco 0
;** BSF INTCON, T0IE ; Habilita interrupcion TMR0;** BSF INTCON, GIE ; Habilita todas las interrupciones;; Si no usa interrupciones, hace polling al bit de overflow de TMR0
T0_OVFL_WAIT
BTFSS INTCON, T0IF
GOTO T0_OVFL_WAIT
;Pasa el overflow
Clock externo
8/3/2019 Unidad 2 Pics
68/83
68
Otras caractersticas del 16Fxx Palabra de configuracin
circuito Oscilador
Reset
Power On Reset (POR)
Power-up Timer (PWRT)
Oscillator Start-up Timer
Interrupciones
Perro guardin o WatchDog (WDT)
Bajo Consumo o SLEEP
Cdigo de Proteccin
Posiciones de identificacin o ID Locations
8/3/2019 Unidad 2 Pics
69/83
69
Palabra de Configuracin Palabra en la direccin 2007h (8191) de memoria
Solamente accesible durante la fase de programacin
Permite la seleccin de varias configuraciones del dispositivo
CP CP CP CP CP CP CP CP CP CP PWRTE WDTE FOSC1 FOSC0
bit 13 bit 0
bit 13:4 CP : Code Protection bit
1 = Code protection Off
0 = All Memory is Code Protected
bit 3 PWRTE: Power-up Timer Enable bit
1 = Power-up Timer disabled0 = Power-up Timer enabled
bit 2 WDTE: WatchDog Timer Enable bit
1 = WDT enabled
0 = WDT disabled
bit 1:0 FOSC1:FOSC0: Oscillator Selection bit
11: RC oscillator10: HS oscillator
01: XT oscillator
00: LP oscillator
8/3/2019 Unidad 2 Pics
70/83
70
Circuito Oscilador Cuatro modos de funcionamiento
LP: Low Power Crystal
XT: Crystal/Resonator HS: High Speed Crystal/Resonator
Resistance/capacitor
Configuracin LP XT HS
Operacin alternativa en LP XT HS
Configuracin RC
8/3/2019 Unidad 2 Pics
71/83
71
El perro Guardin (WatchDog) El WatchDog es un contador autnomo a partir de un reloj interno. Mantiene suactividad incluso si el dispositivo est en estado SLEEP.
En funcionamiento normal el WatchDog reinicia el dispositivo una vez que hafinalizado su cuenta. Esto implica que si est activo, deben intercalarse entre lasinstrucciones del programa que se ejecuta, sentencias de reinicializacin del contadorCLRWDT.
En modo SLEEP el WatchDog retoma la ejecucin a partir de la siguiente instruccina SLEEP.
Se puede habilitar o inhibir permanentemente a partir de la palabra de configuracin.
Su duracin media es de 18 ms. pero puede ampliarse a travs del prescaler.
8/3/2019 Unidad 2 Pics
72/83
72
Perro Guardin
8/3/2019 Unidad 2 Pics
73/83
73
WDT Ejemplo 1BSF STATUS, RP0 ; Banco 1
MOVLW Bxx0x0xxx ; Seleccionar el origen del clock
;y el valor de postscaleMOVWF OPTION_REG ;
BCF STATUS, RP0 ; Banco 0
CLRF TMR0 ; borrar TMR0 & prescaler
BSF STATUS, RP0 ; Banco 1
MOVLW Bxxxx1xxx ; Seleccionar WDT, no cambiar el PS
MOVWF OPTION_REG ;
CLRWDT ; Borra el WDT
MOVLW b'xxxx1xxx' ; Seleciona un nuevo valor de PS y WDT
MOVWF OPTION_REG ;
Cambiar el prescaler (TMR0 -> WDT)
8/3/2019 Unidad 2 Pics
74/83
74
WDT Ejemplo 2CLRWDT ; Borra WDT y Postcaler
BSF STATUS, RP0 ; Banco 1
MOVLW b'xxxx0xxx' ; Selecciona TMR0, nuevo PS
MOVWF OPTION_REG ; Nuevo valor y fuente de clock
BCF STATUS, RP0 ; Banco 0
8/3/2019 Unidad 2 Pics
75/83
75
WDT - Consideraciones Periodo WDT : 18ms
El Perodo varia con la temperatura Si se necesitan perdodos ms largos se
puede usar un postcaler 1:128 bajo
control software (escribiendoOPTION_REG)
CLRWDT y SLEEP borran el WDT y
Postscaler (evitando el RESET)
8/3/2019 Unidad 2 Pics
76/83
76
SLEEP Estado de reposo del chip en bajo consumo.
Un estado SLEEP termina:
Tras un Reset. Se reinicia todo el proceso de arranque.
WDT. Se contina la ejecucin a partir de la siguiente sentencia a SLEEP.
Una interrupcin procedente de RB0/INT, cambio en RB o escritura completa de EEPROM.
Si las interrupciones estn habilitadas
1 ejecuta la siguiente instruccin a SLEEP
2 salta a la rutina de atencin
Si las interrupciones no estn habilitadas
contina la ejecucin a partir de la siguiente instruccin a SLEEP
A partir de los bits PD y TO se puede determinar cual ha sido el proceso de arranque:
PD=1 cuando se arranca y PD=0 cuando se ejecuta SLEEP
TO=1 si se produce un final de cuenta del watchdog
Interrupciones de
8/3/2019 Unidad 2 Pics
77/83
77
PICs de gama media INT Pin Interrupt (external interrupt) TMR0 Overflow Interrupt PORTB Change Interrupt (pins RB7:RB4)
Comparator Change Interrupt Parallel Slave Port Interrupt USART Interrupts Receive Interrupt Transmit Interrupt A/D Conversion Complete Interrupt
LCD Interrupt. Data EEPROM Write Complete Interrupt Timer1 Overflow Interrupt Timer2 Overflow Interrupt CCP Interrupt
SSP Interrup
8/3/2019 Unidad 2 Pics
78/83
78
Interrupciones INTCON: habilitar y deshabilitar
interrupciones
PIE1
PIR1
PIE2 PIR2
Habilitaciny
Flags
8/3/2019 Unidad 2 Pics
79/83
79
Sistema de Interrupciones
Registros de control de
8/3/2019 Unidad 2 Pics
80/83
80
Interrupciones
Global Interrupt Enable
PEripheral Interrupt Enable
Timer0 overflow Interrupt Enable
External INTerrupt Enable
Timer0 Interrupt flag
RB change interrupt Enable
INT flag
RB Interrupt flag
Registros de control de
8/3/2019 Unidad 2 Pics
81/83
81
Ej PIC16F87XAInterrupciones de Perifricos
Parallel Slave Port Interrupt Enable
AnalogDigital Interrupt Enable
UART Receive Interrupt Enable
UART Transmit interrupt Enable
Sync. Serial port Interrupt Enable
Timer2 Overflow Interrupt Enable
Capture Compare1 Interrupt Enable
Timer1 OverflowInterrupt Enable
8/3/2019 Unidad 2 Pics
82/83
82
Programando Interrupciones
Ver archivo Ejemplos\timer84.asm
8/3/2019 Unidad 2 Pics
83/83
83
Fuentes de Reset
Durante la alimentacin Reset durante en modo normal
Reset durante en modo SLEEP
Overflow del WDT Overflow del WDT en modo SLEEP