You are on page 1of 30

Semana 2 Introduccin al microcontrolador PIC18F

Mag. Ing. Sergio Salas A.

Los sistemas embebidos


Desde el desarrollo del transistor, la tecnologa ha hecho posible la integracin de circuitos tanto analgicos como digitales en pequeos paquetes llamados: CIs (Circuitos integrados) y la tendencia es reducir an ms el tamao de estos CI y en especial del transistor. Esta reduccin ha permitido colocar todo un sistema digital limitado en recursos, basado en una unidad de proceso (CPU), memoria y puertas de entrada / salida en un solo encapsulado. Esto se conoce como Sistema embebido. Un C es un tipo de sistema embebido incorporado que incluye los componentes necesarios para tener un sistema de control completo.

Mag. Ing. Sergio Salas A.

El microprocesador
UNIDAD DE CONTROL

UNIDAD DE ENTRADA SALIDA

MEMORIA

ALU

DATOS

INSTRUCCIONES

SEALES DE CONTROL

Mag. Ing. Sergio Salas A.

Partes del microprocesador: Los registros internos


Los registros son pequeas unidades de memoria incorporadas dentro del procesador. Cumplen con la funcin especfica de almacenar informacin til para la ejecucin de las instrucciones y permiten la rpida ejecucin de estas ya que los registros se encuentran al lado del CPU.
Normalmente, un registro es del tamao de bits que maneja el CPU. Para el caso del PIC18F los registros son de 8 bits. Otros microprocesadores poseen registros de 16 bits y 32 bits de longitud. Un tpico registro del procesador, es el registro de trabajo W de 8 bits de longitud usado como uno de los operandos tpicos de la ALU.

Mag. Ing. Sergio Salas A.

Partes del microprocesador: La Unidad aritmtico lgica


La Unidad Aritmtico lgica es la parte del procesador encargada de ejecutar todos los procesos aritmticos y lgicos. El ALU recibe informacin de los registros internos o de una memoria. Esta informacin acta como los operandos de la ALU, la cual ejecuta las operaciones que modifican estos valores, generando un resultado que puede tener como destino los registros o una direccin de memoria. Entre las operaciones tpicas se tiene la suma, resta, AND, OR, XOR, negacin, etc. Registro W Resultado

Operando 1

Operando 2 Selector de Operacin

Direccin de memoria

Mag. Ing. Sergio Salas A.

Partes del microprocesador: La Unidad de control


Esta etapa es la encargada de extraer las instrucciones de la memoria de programa, decodificarlas y ejecutarlas. Esta unidad trabaja de forma cercana con el Contador de programa (PC) que es un registro interno del procesador que apunta a la siguiente direccin de memoria que la Unidad de control debe ejecutar. Adems, la Unidad de control define las operaciones a ejecutar por la ALU y genera los operandos de la ALU. Tiene a su vez el control del intercambio de registros en las unidades de memoria.

Mag. Ing. Sergio Salas A.

Partes del microprocesador: El reloj del sistema


Un procesador es un sistema secuencial. Esto significa que solo una instruccin se ejecuta a la vez despus de un tiempo t. Mientras, ms pequeo sea t mayor ser el nmero de instrucciones por segundo que podr ejecutar el procesador (aumentar el MIPS). Para que se pueda fijar un t de ejecucin de instrucciones, todo procesador 1 utiliza una seal de reloj cuya frecuencia (FRELOJ) determina el t ( = ), donde N es el nmero de periodos de reloj que la Unidad de control requiere para ejecutar toda una instruccin. Millones de instrucciones por segundo.

La Frecuencia de bus (FBUS) es la frecuencia efectiva de ejecucin de instrucciones. Si un microprocesador tiene un FBUS de 10MHz, es muy probable que ejecute 10MIPS (siempre y cuando todas sus instrucciones tarden un ciclo de bus).
La seal de reloj se obtiene de un cristal externo conectado a dos pines del C.

Mag. Ing. Sergio Salas A.

Partes del microcontrolador: La unidad de memoria

Mag. Ing. Sergio Salas A.

Arquitectura de los procesadores


PIC18FXX

Arquitectura Harvard

PIC16F7XX

Arquitectura Von Neumman


Mag. Ing. Sergio Salas A.

Todo microcontrolador consta bsicamente de: * CPU * RAM / FLASH / EEPROM * I/O ( puertos de entrada y salida) Adems pueden contener de perifricos programables, como: * Temporizadores / Contadores * Controlador de interrupciones * Comunicacin Serial (RS232, I2C, USB-Slave) * Mdulo de entrada de captura y generador de PWM * Convertidor A/D Los modelos ms potentes incluyen adems: * Conversor D/A. * USB-Host (OTG). * Bus CAN * DSP * Ethernet

Partes del microcontrolador

Mag. Ing. Sergio Salas A.

Esquema del microcontrolador


Memoria FLASH Programa a ejecutarse:
Ingresa A por teclado Opera C=A+5 Visualiza C por LCD.

Memoria RAM CPU Datos a trabajar:


A = 34 B = 15

C = 49

............

............

A, B
Microcontrolador Perifricos

C
7 6 5 4 3 2 1 CP

............

Mag. Ing. Sergio Salas A.

Arquitectura del procesador PIC18F45XX

Arquitectura Harvard
Mag. Ing. Sergio Salas A.

1. Procesador de arquitectura RISC. 2. Set de instrucciones de 77. Todas se ejecutan en un ciclo de instruccin, menos las de salto y algunas de direccionamiento de memoria. 3. Frecuencia de reloj mximo de 48 MHz. 4. Posee 32Kx16 palabras en la memoria FLASH. 5. Hasta 2KBytes en la memoria de datos SRAM. 6. Hasta 256 bytes en la memoria EEPROM. 7. Multiplicador de operandos de 8 bits con registro de resultado de 16 bits en un solo ciclo de instruccin. 8. 20 fuentes de interrupcin internas y externas. 9. Pila con 32 niveles. 10. Modos de direccionamiento directo, indirecto y relativo. 11. Perro guardian (Watchdog timer). 12. Modo Sleep (bajo consumo). 13. Mdulos internos: a. Timer0, Timer1, Timer2 y Timer 3. b. Dos mdulos de captura y comparacin y PWM. c. Convertidor AD. d. Mdulo serial sncrono y asncrono. Mag. Ing. Sergio Salas A.

Caractersticas del microcontrolador PIC18F4550

La familia PIC18F45XX/PIC18F25XX

Mag. Ing. Sergio Salas A.

Arquitectura del CPU 18F45XX

Mag. Ing. Sergio Salas A.

El registro de estado STATUS

El registro de estado STATUS se encuentra ubicado en la memoria de datos y trabaja como indicador de los resultados generados por la ALU del procesador.

N: Bit negativo. Se pone a 1 para indicar que el resultado de una operacin se encuentra en valor negativo (Formato Complemento a 2).
OV: Bit indicador de Overflow. Se considera un OV cuando el bit MSB del resultado cambia de valor (pasando de positivo a negativo y viceversa). Z: Bit Zero. Si el resultado de cualquier operacin da 0, entonces el bit Z se pone a 1 lgico. DC: Bit Carry Decimal. Es un bit de Carry para operaciones en BCD. Cualquier operacin de suma que supere el valor de 15 se considerar como un DC = 1 lgico. C: El bit Carry se pone a 1 lgico cada vez que una operacin de suma supera el valor de 255. En caso la operacin sea de resta y se tenga un nmero menor a 0, el bit C se pone a 0 lgico.

Mag. Ing. Sergio Salas A.

La arquitectura de la memoria de programa


Aqu se almacenan todas las instrucciones del programa del microcontrolador. La memoria de programa siempre est direccionada desde el Contador de Programa (PC) de 21 bits (aunque el bit LSB siempre es 0). La memoria de programa (o de instrucciones) tiene una capacidad de 32K x 16 bits. Durante la fase de bsqueda, la direccin de la instruccin la proporciona el PC, el cual normalmente se autoincrementa en la mayora de las instrucciones, excepto en las de salto. Con las instrucciones de salto se carga la Pila con el valor inicial del PC incrementado una unidad. Posteriormente, las instrucciones de retorno, situadas al final de las rutinas, devuelven el valor almacenado en la Pila al PC.

La Pila es una memoria voltil. Su contenido se elimina con una operacin de Reset o simplemente des energizando al microcontrolador.

Mag. Ing. Sergio Salas A.

El Pipeline del PIC18F45XX

Q1 Se decodifica la instruccin. Q2 Se lee el registro involucrado en la instruccin. Q3 Se procesa la operacin. Q4 El resultado se guarda en el registro destino. Si la frecuencia de reloj es de 4 MHz. Entonces la frecuencia de bus es de 4MHz/4 ciclos = 1MHz. Mag. Ing. Sergio Salas A.

El contador de programa
El byte de menos peso del PC se corresponde con el contenido del registro PCL El Byte ms significativo (bits <15:8> se corresponde con el registro PCH. Finalmente, el Byte de mayor peso: PCU se corresponde con los 5 bits de ms peso (bits <20:16>)

GOTO SALTO

Los registros PCU y PCH no pueden ser accedidos directamente por el procesador. Para esto, se utilizan los registros Latch PCLATU y PCLATH que se cargan con el valor de dichos registros. Cualquier lectura del registro PCL automticamente carga PCLATU con el valor de PCU y PCLATH con el valor de PCH. Por otro lado, cualquier escritura en el registro PCL carga PCU con el valor de PCLATU y PCH con el valor de PCLATH.

Mag. Ing. Sergio Salas A.

El puntero de Tabla
El puntero de Tabla permite grabar y leer datos de la FLASH en tiempo de ejecucin como si fuera una memoria SRAM, pero, con un acceso ms complejo.

Mag. Ing. Sergio Salas A.

La memoria de datos
Tienen 8 bits de longitud. Organizada en 16 bancos de 256 bytes cada uno. Los RPG son registros de propsito general. Los RFE son registros de funcin especfica y se usan para configurar los perifricos y funciones del procesador. El PIC18F4550 solo posee 8 bancos, por lo cual tiene una capacidad total de 2KB de SRAM. Es posible acceder a un registro de la memoria SRAM mediante dos formas: 1. Usando su direccin absoluta (12 bits) 2. Con su direccin relativa al banco El registro BSR permite seleccionar el banco a acceder. Los registros FSRx (donde x = 0, 1 o 2) permiten apuntar a una direccin dentro del banco. Los registros INDFx (donde x = 0, 1 o 2) permiten obtener el contenido del registro apuntado por FSRx

Mag. Ing. Sergio Salas A.

El set de instrucciones
Orientadas a operaciones con bytes
Mnemnico ADDWFf,d,a ADDWFCf,d,a ANDWFf,d,a CLRFf,a COMF f,d,a CPFSEQ f,a CPFSGT f,a CPFSLT f,a DECFf,d,a DECFSZf,d,a DCFSNZf,d,a INCFf,d,a INCFSZf,d,a INFSNZf,d,a IORWFf,d,a MOVFf,d,a MOVWFf,a MULWFf,a NEGFf,a RLCFf,d,a RLNCFf,d,a RRCFf,d,a RRNCFf,d,a SETFf,a SUBFWBf,d,a SUBWFf,d,a SUBWFBf,d,a SWAPFf,d,a TSTFSZf,a XORWFf,d,a Descripcin Sumar el registro W con f Sumar el registro W + el bit Carry con f Operacin AND entre el registro W y f f = 0x00 Obtener el complemento de f Comparar f con el registro W y saltar si son iguales Comparar f con el registro W y saltar si f es mayor Comparar f con el registro W y saltar si f es menor Decrementar f Restar f, saltar si es 0 Restar f, saltar si no es 0 Incrementar f Incrementar f, saltar si es 0 Incrementar f, saltar si no es 0 OR inclusive entre el registro W y f Mover f Mover el registro W a f Multiplicar el registro W con f Negar f Rotar f a la izquierda y cargar el bit MSB con el Carry Rotar f a la izquierda (sin Carry) Rotar f a la derecha y cargar el bit LSB con el Carry Rotar f a la derecha (sin Carry) Poner f a 0xFF Restar fdel registro W con prstamo Restar el registro W de f Restar el registro W de f con prstamo Intercambiar nibbles Analizar f y saltar si es 0x00 OR Exclusiva entre el registro W y f

Formato de la operacin en memoria FLASH:

Mag. Ing. Sergio Salas A.

El set de instrucciones
Orientadas a operaciones con bits
Mnemnico BCF f,b,a BSF f,b,a BTFSC f,b,a BTFSS f,b,a BTG f,b,a Descripcin Bit b de f a 0 lgico Bit b de f a 1 lgico Analizar el bit b de f y saltar si es 0 lgico Analizar el bit b de f y saltar si es 1 lgico Negar el estado del bit b de f

Formato de la operacin en memoria FLASH:

Mag. Ing. Sergio Salas A.

El set de instrucciones
Orientadas a operaciones con literales y de configuracin
Mnemnico ADDLW k ANDLW k IORLW k LFSR f,k MOVLB k MOVLW k MULLW k RETLW k SUBLW k XORLW k Descripcin Sumar el valor literal k con el registro W Operacin AND entre el registro W y el valor literal k Operacin OR entre el registro W y el valor literal k Mover el valor literal k de 12 bits a FSR(f) Mover el valor literal k a BSR Mover el literal k al registro W Multiplicar el valor literal k con el registro W Retornar con el valor literal k en el registro W Restar el registro W del valor literal k OR Exclusiva entre el valor literal k y el registro W

Formato de la operacin en memoria FLASH:

Mag. Ing. Sergio Salas A.

El set de instrucciones
Orientadas a operaciones de control
BC BN BNC BNN BNOV BNZ BOV BRA BZ CALL Mnemnico n n n n n n n n n n,s Descripcin Salta a la direccin n si Carry = 1 lgico Salta a la direccin n si el bit N = 1 lgico Salta a la direccin n si el bit Carry = 0 lgico Salta a la direccin n se el bit N = 0 lgico Salta a la direccin n si no ha ocurrido un Overflow Salta a la direccin n si el bit Z = 0 lgico Salta a la direccin n si ha ocurrido un Overflow Salta a la direccin n Salta a la direccin n si el bit Z = 1 lgico Salta a la direccin n. El PC se guarda en la pila. S indica que tambin se almacena en una pila el registro W, el STATUS y BSR Inicializar el WatchdogTimer Ajuste decimal del registro W Saltar a la direccin n Ninguna operacin Retornar el ltimo valor de la pila Guardar el PC en el ltimo valor de la pila Salto relativo a n Generar un Reset por software del microcontrolador Retorno de la rutina de interrupcin Retorno de un rutina con el valor literal k en el registro W Retorno de la subrutina. S indica si se rescatan de la pila el registro W, el STATUS y BSR Colocar el microcontrolador en modo de bajo consumo

CLRWDT DAW GOTO n NOP POP PUSH RCALL n RESET RETFIE s RETLW k RETURN s SLEEP

Mag. Ing. Sergio Salas A.

El registro TRISx y PORTx y LATx

Existe un total de 5 puertos de entrada y salida: A, B, C, D y E. Cada uno de ellos puede operar de tres formas: Entrada digital, salida digital o como funcin especfica de un mdulo interno. El control de modo de operacin de un pin de un puerto se configura mediante el registro TRISx. La lectura del valor de un pin configurado como entrada se realiza mediante el registro PORTx. Le escritura de un valor de un pin configurado como salida se realiza mediante el registro LATx.

Mag. Ing. Sergio Salas A.

Modos de direccionamiento
Direccionamiento indirecto

Mag. Ing. Sergio Salas A.

Modos de direccionamiento
Direccionamiento indirecto
En el siguiente ejemplo se carga las direcciones 0x100 y 0x101 de la memoria SRAM con el valor ASCII a y b respectivamente. El cdigo es el siguiente manera: movlw 0x00 movwf FSR0L movlw 0x01 movwf FSR0H movlw 'a' movwf INDF0 incf FSR0L movlw 'b' movwf INDF0 CONTINUAR: ;continuar con el programa...

RAM

INDF
0x100

a b

FSR

0x101

Mag. Ing. Sergio Salas A.

Modos de direccionamiento
Direccionamiento directo
En este tipo de direccionamiento, el valor con el que operar la Unidad de control est contenido en el Opcode.

RAM

Ejemplo: registro EQU 0x070 ORG 0x00 goto MAIN ORG 0x020 MAIN: movlw 'K'; movwf registro,1 movff registro,0x104 CONTINUAR: ;continuar con el programa...

0x70

0x104

Mag. Ing. Sergio Salas A.

Modos de direccionamiento
Direccionamiento inherente
En este tipo de direccionamiento la instruccin no presenta operando. Este se sobre entiende de la misma instruccin.

Ejemplo:

reset daw nop

Direccionamiento literal
En este tipo de direccionamiento el operando viene dado de forma explcita en la misma instruccin.

Ejemplo:

goto 0x200 movlw .67

Mag. Ing. Sergio Salas A.