Está en la página 1de 84

Sesin 3 Introduccin a la programacin de Microcontroladores

M.C. Marco A. Ramrez Barrientos


1

Contenido

Introduccin a los sistemas digitales. Introduccin a LabView. Introduccin a la programacin de Microcontroladores PIC. Controladores Lgicos Programables, PLCs.

16, 23, 30 nov. y 7 dic. de 2011


2

OBJETIVO GENERAL
Conocer los conceptos fundamentales para la programacin de microcontroladores, mediante lenguajes de programacin ensamblador y C.

BIBLIOGRAFIA BSICA
1. 2. Microcontrolador PIC16F84; Enrique Palacios, 2006; Alfaomega marcombo; 2. edicin; 623 pginas. Microcontroladores PIC. Diseo prctico de aplicaciones, Angulo Usategui, Jos Mara y Angulo Martnez, Ignacio, McGraw-Hill. Advanced PIC Microcontroller Projects in C, Dogan Ibrahim, 2008, Ed. Elsevier.

3.

INTRODUCCION AL MICROCONTROLADOR
Un poco de historia
Inicialmente cuando no existan los microprocesadores, se requera para el diseo de circuitos electrnicos muchos componentes y clculos matemticos. Un circuito lgico bsico requera de una gran cantidad de elementos electrnicos basados en transistores, resistencias, etc,

INTRODUCCION AL MICROCONTROLADOR
Un poco de historia
En el ao 1971 apareci el primer microprocesador el cual origin un cambio decisivo en las tcnicas de diseo de la mayora de los equipos. Entre los microprocesadores mas conocidos tenemos el popular Z-80 y el 8085.

INTRODUCCION AL MICROCONTROLADOR
Un poco de historia
Los diseadores de equipos electrnicos ahora tenan equipos que podan realizar mayor cantidad de tareas en menos tiempo y su tamao se redujo considerablemente. sin embargo, despus de cierto tiempo aparece una nueva tecnologa llamada microcontrolador que simplifica aun mas el diseo electrnico.

DIFERENCIA ENTRE MICROCONTROLADOR Y MICROPOCESADOR

Microprocesador
Es un sistema abierto con el que puede construirse un computador con las caractersticas que se desee, acoplndole los mdulos necesarios. La Unidad Central de Proceso (UCP), interpreta las instrucciones y el cambio de datos que las ejecuta.
8

DIFERENCIA ENTRE MICROCONTROLADOR Y MICROPOCESADOR

Microprocesador

DIFERENCIA ENTRE MICROCONTROLADOR Y MICROPOCESADOR

Microcontrolador
Es un sistema cerrado que contiene un computador completo. Todas las partes del computador estn contenidas en su interior y solo salen al exterior las lneas que gobiernan los perifricos.
10

DIFERENCIA ENTRE MICROCONTROLADOR Y MICROPOCESADOR

Cada fabricante de microcontroladores oferta un elevado nmero de modelos diferentes, desde los ms sencillos hasta los ms sofisticados.
11

ARQUITECTURA INTERNA
Un microcontrolador posee todos los componentes de un computador, pero con unas caractersticas fijas que no pueden alterarse: Procesador Memoria de programa (No voltil) Memoria datos (lectura y escritura) Lneas E/S para los controladores de perifricos Recursos auxiliares
12

ARQUITECTURA INTERNA

1. 2. 3. 4. 5.

Procesador o CPU. Memoria no voltil para contener el programa. Memoria de lectura y escritura para guardar los datos. Lneas de E/S para los controladores de perifricos. Recursos auxiliares (Mdulos para el control de 13 perifricos)

PROCESADOR O CPU
Es el elemento ms importante del microcontrolador y determina sus principales caractersticas, tanto a nivel de hardware como de software Existen dos arquitecturas, se diferencian en la forma de conexin de la memoria al procesador y en los buses que cada una necesita: Arquitectura Von Neumann Arquitectura Harvard
14

ARQUITECTURA VON NEUMANN

Algunas familias de microcontroladores como la INTEL-51 y la Z80


15

ARQUITECTURA VON NEUMANN

Existe una sola memoria, donde coexisten las instrucciones de programa y los datos, accedidos con un bus de direccin, uno de datos y uno de control.

16

ARQUITECTURA VON NEUMANN Limitacin: Longitud de las instrucciones por el bus de datos (varios accesos a memoria para instrucciones complejas). Velocidad de operacin (bus nico para datos e instrucciones) e impide superponer ambos tiempos de acceso.

17

ARQUITECTURA HARVARD

Utilizada en sistemas embebidos en general.

18

ARQUITECTURA HARVARD
Memoria de datos separada de la memoria de instrucciones
Palabra de datos Palabra de instruccin

Conjunto reducido de instrucciones (RISC) Ejecucin de instrucciones en un ciclo de instruccin. Paralelismo implcito, segmentacin del procesador (pipe-line)
19

El alto rendimiento que poseen los microcontroladores se debe a tres tcnicas:


Arquitectura Harvard Arquitectura RISC Segmentacin

20

TIPOS DE MEMORIAS
Esta diseado para que en su memoria de programa se almacenen todas las instrucciones del programa de control. 1. 2. 3. 4. 5. ROM con mscara OTP (One Time Programmable) EPROM EEPROM FLASH
21

MEMORIA DE PROGRAMA (ROM)

1. ROM con mscara


Se graba durante el proceso de fabricacin mediante el uso de mscaras Se aconseja este tipo de memoria cuando se precisan series muy grandes

22

MEMORIA DE PROGRAMA (ROM)

2 . OTP (One Time Programmable)


Slo se puede grabar una vez por parte del usuario. Se aconseja este tipo de memoria para prototipos finales.

23

MEMORIA DE PROGRAMA (ROM)

3. EPROM
En la superficie de la cpsula del microcontrolador existe una ventana de cristal por la que se puede someter al chip de la memoria a rayos ultravioleta para producir su borrado y emplearla nuevamente.

24

MEMORIA DE PROGRAMA (ROM)

4. EEPROM
La grabacin es similar a las memorias OTP y EPROM, pero el borrado es mucho ms sencillo al poderse efectuar de la misma forma que el grabado, o sea, elctricamente. Garantizan 1.000.000 de ciclos de escritura/borrado.

25

MEMORIA DE PROGRAMA (ROM)

5. FLASH
Se puede escribir y borrar en circuito al igual que la EEPROM, pero suelen disponer de mayor capacidad que estas ltimas. Pueden ser programadas con las mismas tensiones de alimentacin del microcontrolador.

26

MEMORIA DE DATOS (RAM) Es una memoria voltil y se destina a guardar las variables y los datos (SRAM). Los microcontroladores disponen de capacidades de RAM comprendidas entre 20 y 512 bytes. Existen microcontroladores que disponen de memoria EEPROM para contener datos.
27

REGISTROS Y BITS
Un registro es una posicin de memoria en la cual se puede almacenar un dato. Es decir que la memoria esta dividida en pequeas partes llamadas Registros. El primer registro de una memoria corresponde a la direccin 00H. Hay un conjunto de registros que ya vienen Predefinidos desde la fbrica. Cada registro esta dividido en 8 partes, Bits.
28

LINEAS DE ENTRADA/SALIDA (PUERTOS)

Los microcontroladores cuentan con una serie de pines destinados a entrada y salida de datos o seales digitales. A estos pines se les denomina Puerto. Los puertos estn controlados por los registros. Entradas salidas de propsito general, trabajo con dispositivos simples como rels, Leds, etc.
29

RECURSOS AUXILIARES
Circuito de reloj. Temporizadores y contadores. Conversores AD y DA. Comparadores Modulador de ancho de pulsos (PWM) Puerto serie Otros puertos de comunicacin (USB, CAN) Sistema de proteccin. Estado de reposo

30

LOS MICROCONTROLADORES PIC Los 'PIC' son una familia de microcontroladores tipo RISC (Reduced Instruction Set Computer) fabricados por Microchip Technology Inc. y derivados del PIC1650, originalmente desarrollado por la divisin de microelectrnica de General Instruments. PIC Peripheral Interface Controller. El PIC de 8 bits se desarrollo para el ao 1975
31

LOS MICROCONTROLADORES PIC

Los microcontroladores PIC incorporan en su procesador tres caractersticas:


Procesador tipo RISC Procesador segmentado Arquitectura HARVARD Con estos recursos los PIC son capaces de ejecutar en un ciclo de instruccin todas las instrucciones, excepto las de salto que tardan el doble.
32

LA FAMILIA DE LOS PIC


Se divide en cuatro gamas: Gama enana, gama baja, gama media y gama alta. Sus diferencias radica en: El numero de instrucciones y longitud El nmero de puertos y funciones. Lo cual se refleja en el encapsulado, la complejidad interna y de programacin, y en el nmero de aplicaciones.
33

NOMENCLATURA DE LOS PICS

PIC nnLLLxxx
nn: Un nmero propio de la gama del PIC LLL:
Cdigo de letras donde la primera indica la tensin de alimentacin y las otras dos el tipo de memoria que utiliza

Xxx: Nmero que indica el modelo del PIC.


34

NOMENCLATURA DE LOS PICS

35

GAMA ENANA PIC 12C(F)XXX, de 8 patas (pines)

Aunque solo tienen 8 pines, pueden destinar hasta 6 como lneas de E/S para los perifricos porque disponen de un oscilador interno R-C.
36

GAMA ENANA Caractersticas de los modelos PIC16C5X

37

GAMA BAJA O BASICA

Mejores relaciones coste/prestaciones. Encapsulados con 18 y 28 pines Pueden alimentarse con una tensin 2.5V 33 instrucciones con formato de 12bits.
38

GAMA BAJA PIC16C5X

Principales caractersticas de los modelos de gama baja. 39

GAMA MEDIA
Encapsulado desde 18 hasta 68 pines 35 instrucciones de 14 bits

40

GAMA MEDIA PIC16CXXX

Caractersticas relevantes de los modelos PIC16X8X de la gama media


41

GAMA ALTA
Alcanzan 58 instrucciones de 16 bits Sistema de gestin de interrupciones vectorizadas Incluyen variados controladores de perifricos, puertas de comunicacin serie y paralelo Arquitectura abierta.

42

EL PIC16X84

Pertenece a la familia de la gama media Tiene solo 18 pines Posee una memoria de programa de 1K palabras de 14bits cada una 64 bytes como memoria de datos auxiliar y opcional
43

TARJETA DE PRESENTACION DE PIC16X84 Memoria de programa 1Kx14 Memoria de datos RAM 36 byte-PIC16C84 y de 68 byte-PIC16F84 Memoria de datos 64bytes/EEPROM Pila de 8 niveles Interrupciones 4 tipos diferentes Juego de instrucciones 35 Encapsulado Platico DIP de 18 pines Frecuencia de trabajo 10MHz Mxima
44

TARJETA DE PRESENTACION DE PIC16X84

Temporizadores : Solo uno TMR0 Lneas E/S digitales : 13 Puerta A y Puerta B Voltaje de alimentacin : VDD de 2 a 6VDC Corriente mxima absorbida : 80mA-Puerta A y 150mA-Puerta B Corriente mxima suministrada : 50mAPuerta A y 100mA-Puerta B
45

ASPECTO EXTERNO

46

FRECUENCIA DE FUNCIONAMIENTO. EL RELOJ


Cuando un PIC16X8X funciona a 10MHz, le corresponde un ciclo de instruccin de 400ns. Ciclo de instruccin: 4x100ns=400ns Todas las instrucciones del PIC se realizan en un ciclo de instruccin menos las de salto. Se aplica la tcnica de segmentacin o Pipeline
47

TIPOS DE OSCILADORES OSCILADOR TIPO RC Un oscilador formado por una resistencia y un condensador

48

TIPOS DE OSCILADORES
OSCILADOR TIPO HS Un oscilador que alcanza una alta velocidad entre 4 y 20MHz, basado en un cristal de cuarzo o un resonador cermico

49

TIPOS DE OSCILADORES
OSCILADOR TIPO XT Es un resonador de cristal o resonador para frecuencias estndar, comprendida entre 100KHz y 4MHz.

50

TIPOS DE OSCILADORES OSCILADOR TIPO LP Oscilador de bajo consumo con cristal o resonador diseado para trabajar en un rango de frecuencias de 35 a 200KHz. El cristal de cuarzo o el resonador cermico se coloca entre los pines OSC1 y OSC2
51

REINICIALIZACION O RESET
Con un nivel lgico bajo en MCLR# el microcontrolador se reinicializa: 1. El contador de programa se carga con la direccin 0. 2. La mayora de los registros de estado y control del procesador toman un estado conocido y determinado.

52

ESQUEMA MINIMO DE MONTAJE DEL PIC16F84

53

EN EL INTERIOR DEL PROCESADOR


Los microcontroladores PIC incorporan tres caracterstica: Procesador tipo RISC Procesador segmentado Arquitectura Harvard Una condicin es la simetra y ortogonalidad en el formato de las instrucciones (14bits) El juego de instrucciones se reduce a 35 y con la estructura segmentada se pueden realizar simultneamente las dos fases que compone cada instruccin
54

EN EL INTERIOR DEL PROCESADOR El manejo intensivo del banco de registros, los cuales participan de una manera muy activa en la ejecucin de instrucciones. La ALU, efecta sus operaciones lgicoaritmtica con dos operandos, uno es del registro W(Work) y el otro que puede provenir de cualquier registro o del propio cdigo de instruccin.
55

ARQUITECTURA INTERNA DEL PIC16C84


Consta de siete bloques fundamentales: Memoria de programa EEPROM 1K x 14bits. Memoria de datos formada por dos reas, una RAM aloja 22 registros de (SFR), 36 registros (GPR) y tipo EEPROM de 64 bytes. Camino de datos con la ALU de 8 bits y un registro de trabajo W.
56

Assembly language programming


In order to function properly, we must define several microcontroller parameters such as: - type of oscillator, - whether watchdog timer is turned on, and - whether internal reset circuit is enabled. All this is defined by the following directive:
_CONFIG _CP_OFF&_WDT_OFF&PWRTE_ON&XT_OSC

57

58

Clock and Instruction Cycles


Instruction Clock
Clock from the oscillator enters a microcontroller via OSC1 pin where internal circuit of a microcontroller divides the clock into four even clocks Q1, Q2, Q3, and Q4 which do not overlap. These four clocks make up one instruction cycle (also called machine cycle) during which one instruction is executed. Execution of instruction starts by calling an instruction that is next in string. Instruction is called from program memory on every Q1 and is written in instruction register on Q4. Decoding and execution of instruction are done between the next Q1 and Q4 cycles. On the following diagram we can see the relationship between instruction cycle and clock of the oscillator (OSC1) as well as that of internal clocks Q1-Q4. Program counter (PC) holds information about the address of the next instruction.

PIC16F877A Features
High Performance RISC CPU:
Only 35 single word instructions to learn All single cycle instructions except for program branches, which are two-cycle Operating speed: DC - 20 MHz clock input DC 200 ns instruction cycle

PIC16F877A Pin Layout


ADC inputs PORTA Counter 0 PORTE external input PORT C PORTB

PORTD PORTC

PORT D

PIC Memory
The PIC16F877A has an 8192 (8k) 14bit instruction program memory 368 Bytes Registers as Data Memory : Special Function Registers: used to control peripherals and PIC behaviors General Purpose Registers: used to a normal temporary storage space (RAM) 256 Bytes of nonvolatile EEPROM

PIC Program Memory


The PIC16F877 8192 (8k) 14bit instructions
Takes a max of 8 addresses, the ninth address will write When the over the first. controller is reset, program execution starts from here If interrupted, program execution continues from here

PIC Data Memory


The most importa nt registers have
addresses

in all the four banks

The data memory is devided into 4 memory banks

Register Addressing Modes


Immediate Addressing: Movlw H0F

Indirect Addressing: Direct Addressing: Full7 8bits bit register address is written the special function Uses of 14 bit instruction to identify a register file register address FSR 8th and 9th bit comes from RP0 and RP1 bits of INDF isregister. used to get the content of the address pointed by FSR STATUS Exp : A program to clear RAM locations H20 i.e. Z sample equ D2 ; Z=2 H2F: btfss STATUS, Z ; test if the 3rd bit of the MOVLW 0x20 ;initialize pointer STATUS register is set MOVWF FSR ;to RAM
NEXT CLRF INDF ;clear INDF register

PIC Family Control Registers


Uses a series of Special Function Registers for controlling peripherals and PIC behaviors.
STATUS carry) INTCON Bank select bits, ALU bits (zero, borrow, Interrupt control: interrupt enables, flags, etc.

contains various control bits to configure the TMR0 prescaler/WDT postscaler ,the External INT Interrupt, TMR0 and the weak pull-ups on PORTB
OPTION_REG

Special Function Register STATUS Register

Special Function Register INTCON Register

PIC Peripherals
Each peripheral has a set of SFRs to control its operation. Different PICs have different on-board peripherals

Peripheral Features
5 Digital I/O Ports Three timer/counter modules
Timer0: 8-bit timer/counter with 8-bit pre-scaler Timer1: 16-bit timer/counter with pre-scaler, can be incremented during SLEEP via external crystal/clock Timer2: 8-bit timer/counter with 8-bit period register, pre-scaler and post-scaler

A 10-bit ADC with 8 inputs Two Capture, Compare, PWM modules Capture is 16-bit, max. resolution is 12.5 ns Compare is 16-bit, max. resolution is 200 ns PWM max. resolution is 10-bit Synchronous Serial Port (SSP) with SPI (Master mode) and I2C (Master/Slave) Universal Synchronous Asynchronous Receiver Transmitter (USART/SCI) with 9bit address detection Parallel Slave Port (PSP) 8-bits wide, with external RD, WR and CS controls

PIC Peripherals: Ports (Digital I/O)


Ports are basically digital I/O pins which exist in all PICs The PIC16F877A have the following ports: PORT A has 6 bit wide, Bidirectional PORT B,C,D have 8 bit wide, Bidirectional PORT E has 3 bit wide, Bidirectional Ports have 2 control registers TRISx sets whether each pin is an input (1) or output (0) PORTx sets their output bit levels or contain their input bit levels Pin functionality overloaded with other features Most pins have 25mA source/sink thus it can drive LEDs directly

PIC Peripherals: Analogue to Digital Converter


Only available in 14bit and 16bit cores Fs (sample rate) < 54KHz the result is a 10 bit digital number Can generate an interrupt when ADC conversion is done

PIC Peripherals: Analogue to Digital Converter


The A/D module has four registers. These registers are:
A/D Result High Register (ADRESH) A/D Result Low Register (ADRESL) A/D Control Register0 (ADCON0) A/D Control Register1 (ADCON1)

Multiplexed 8 channel inputs


Must wait Tacq to charge up sampling capacitor

Can take a reference voltage different from that of the controller

PIC Peripherals: USART: UART


Serial Communications Peripheral: Universal Synch./Asynch. Receiver/Transmitter Interrupt on TX buffer empty and RX buffer full Asynchronous communication: UART (RS-232C serial) Can do 300bps - 115kbps 8 or 9 bits, parity, start and stop bits, etc. Outputs 5V so you need a RS232 level converter (e.g., MAX232)

PIC Applications
LED Flasher
Loop: bsf call bcf call goto PORTB, 0 Delay_500ms PORTB, 0 Delay_500ms Loop

PIC Applications
Button Read
Movlw 0 movwf TRISD, f bsf TRISD, 2 Loop: btfsc goto goto Light: bsf goto No_light: bcf goto PORTB,0 Loop PORTB,0 Loop PORTD, 2 light No_light

mikro C

77

Las variables bsicas en este compilador especfico son: bit char short int long float double

78

Las variables bit permiten almacenar un valor lgico es decir verdadero o falso, 0 1. Las variables char se utilizan para almacenar caracteres codificados con el cdigo ASCII, son tiles para guardar letras o textos. Una variable short almacena un nmero entero de 8 bits corto puede valer de: -127 a 127. Las variables tipo int guardan nmeros enteros de 16 bits, est variable permite guardar nmeros de: -32767 a 32767. La variable tipo long almacena nmeros enteros largos de 32 bits, su rango puede ser de: -2147483647 a 2147483647. Las variables tipo float y double permiten guardar nmeros 79 con punto decimal

80

bit VARIABLE1_BIT; //Declaracin de una variable tipo bit. char CARACTER; //Declaracin de una variable tipo char. char CARACTER2='J'; //Declaracin de una variable tipo char inicializada con el //valor ASCII del carcter J. int ENTERO=1234; //Declaracin de una variable tipo entera inicializada con //el valor 1234. float DECIMAL=-12.45; //Declaracin de una variable con punto decimal //inicializada con el valor -12,45. double DECIMAL2=56.68; //Declaracin de una variable con punto decimal //inicializada con el valor 56,68. long ENTERO2=-954261; //Demacracin de una variable de tipo entero largo 81 //inicializada con el valor -954261.

Los siguientes ejemplos muestras como declarar variables sin signo: unsigned char CARACTER; //Declaracin de una variable tipo char sin signo. unsigned int ENTERO; //Declaracin de una variable tipo entera sin signo. unsigned long ENTERO2; //Demacracin de una variable de tipo entero largo sin signo.

82

void main() { TRISA = 0x00; TRISB = 0x00; TRISC = 0x00; TRISD = 0x00; do { PORTA = 0x00; PORTB = 0x00; PORTC = 0x00; PORTD = 0x00; Delay_ms(100); // set direction to be output // set direction to be output // set direction to be output // set direction to be output

// Turn OFF LEDs on PORTA // Turn OFF LEDs on PORTB // Turn OFF LEDs on PORTC // Turn OFF LEDs on PORTD // 1 second delay

PORTA = 0xFF; // Turn ON LEDs on PORTA PORTB = 0xFF; // Turn ON LEDs on PORTB PORTC = 0xFF; // Turn ON LEDs on PORTC PORTD = 0xFF; // Turn ON LEDs on PORTD Delay_ms(100); // 1 second delay } while(1); // Endless loop }

83

84