Unidad 2 Pics

Embed Size (px)

Citation preview

  • 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