35
Facilitador: Ing. Paúl Romero Riobamba, Marzo 2009

Microcontrolador Pic16f628 e Instrucciones Gama Media

Embed Size (px)

Citation preview

Page 1: Microcontrolador Pic16f628 e Instrucciones Gama Media

Facilitador: Ing. Paúl Romero Riobamba, Marzo 2009

Page 2: Microcontrolador Pic16f628 e Instrucciones Gama Media

PIC de MicrochipPIC de MicrochipNomenclaturaNomenclaturaUn microcontrolador se identifica por su nombre, y este tiene varias partes.Un microcontrolador se identifica por su nombre, y este tiene varias partes.MarcaMarca GamaGama Memoria-ProgramableMemoria-Programable ModeloModelo FrecuenciaFrecuencia

Marca:Marca: Fabricante o tipo de microcontrolador. Fabricante o tipo de microcontrolador. Gama:Gama: escala de microcontroladores(14 baja, 16 media, 18 alta). escala de microcontroladores(14 baja, 16 media, 18 alta). Memoria Programable:Memoria Programable: Tipo de memoria para el área de programa (F Tipo de memoria para el área de programa (F

Flash, el micro se puede reprogramar, C el micro se puede programar una Flash, el micro se puede reprogramar, C el micro se puede programar una sola vez).sola vez).

Modelo:Modelo: modelo del microcontrolador. modelo del microcontrolador. Frecuencia:Frecuencia: máxima frecuencia que soporta el microcontrolador usando máxima frecuencia que soporta el microcontrolador usando

reloj externo (en MHz).reloj externo (en MHz).Ejemplo, modelo de microcontrolador: PIC16F628/04Ejemplo, modelo de microcontrolador: PIC16F628/04MarcaMarca GamaGama Memoria-ProgramableMemoria-Programable ModeloModelo FrecuenciaFrecuenciaPICPIC 1616 FF 628628 /04/04Marca:Marca: PICPIC es el tipo de microcontrolador, fabricado por MicroChip. es el tipo de microcontrolador, fabricado por MicroChip.Gama:Gama: 16 16 indica la gama, este chip es de gama media.indica la gama, este chip es de gama media.Memoria Programable:Memoria Programable: F F memoria Flash.memoria Flash.Modelo:Modelo: 628628..Frecuencia:Frecuencia: 0404 MHz. MHz.

Page 3: Microcontrolador Pic16f628 e Instrucciones Gama Media

PIC16F628PIC16F628Comentarios del ModeloComentarios del Modelo

Es uno de los modelos estrella de MicroChip, siendo además el sucesor del anterior modelo más importante (y todavía vigente) 16F84.

Siendo un micro de la gama media tiene varias funcionalidades incorporadas que describiremos más adelante.

Es comercializado en 3 versiones que soportan velocidades de reloj diferentes, 4 MHz, 10 MHz y 20 MHz.

Los PIC16F62X son chips de 18 pines, basados en memoria FLASH, miembros de la versátil familia de chips de alta performance, bajo costo PIC16CXX que tienen entre sus características relevantes utilizar tecnología CMOS, ser microcontroladores de 8 bits, soportar interrupciones externas e internas y ser reprogramables.

Estos microcontroladores tienen características especiales que permiten la reducción de componentes externos, y por lo tanto la reducción de costos, reforzando la confiabilidad y reduciendo el consumo eléctrico.

Page 4: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 5: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 6: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 7: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 8: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 9: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 10: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 11: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 12: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 13: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 14: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 15: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 16: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 17: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 18: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 19: Microcontrolador Pic16f628 e Instrucciones Gama Media

MEMORIAMEMORIA

La memoria es el sitio donde se La memoria es el sitio donde se almacenan los datos e instrucciones almacenan los datos e instrucciones a ser procesadas en la unidad a ser procesadas en la unidad central del un microcontrolador. En central del un microcontrolador. En la actualidad un microcontrolador la actualidad un microcontrolador está creado con 3 tipos de memoria: está creado con 3 tipos de memoria:

RAM RAM EEPROM EEPROM FLASHFLASH

DISPOSITIVOS DE MEMORIADISPOSITIVOS DE MEMORIA

Page 20: Microcontrolador Pic16f628 e Instrucciones Gama Media

MEMORIA RAMMEMORIA RAM (Random (Random Access Memory)Access Memory)

La memoria RAM es la parte de la La memoria RAM es la parte de la memoria que un microcontrolador memoria que un microcontrolador utiliza para almacenar variables utiliza para almacenar variables temporales en tiempo de temporales en tiempo de ejecución. Todo lo que se ejecución. Todo lo que se almacena en la RAM se pierde al almacena en la RAM se pierde al cortar la energía. cortar la energía.

Page 21: Microcontrolador Pic16f628 e Instrucciones Gama Media

EEPROM EEPROM ((Electrically-Erasable Programmable Read-Electrically-Erasable Programmable Read-

Only Memory)Only Memory)

Es en esta memoria donde se almacenan Es en esta memoria donde se almacenan los datos permanentes que se deseen los datos permanentes que se deseen guardar. Aunque una EEPROM puede ser guardar. Aunque una EEPROM puede ser leída un número ilimitado de veces, sólo leída un número ilimitado de veces, sólo puede ser borrada y reprogramada entre puede ser borrada y reprogramada entre 100.000 y 1.000.000 de veces. 100.000 y 1.000.000 de veces.

A diferencia de la RAM, la EEPROM A diferencia de la RAM, la EEPROM mantiene la información aún cuando el mantiene la información aún cuando el PIC no esté alimentado. PIC no esté alimentado.

Page 22: Microcontrolador Pic16f628 e Instrucciones Gama Media

FLASHFLASH

Es en esta memoria es donde, se Es en esta memoria es donde, se almacena el programa.almacena el programa.

La Memoria flash es una forma La Memoria flash es una forma evolucionada de las memorias evolucionada de las memorias EPROM EPROM Y Y EEPROMEEPROM no volátil. Tienen la ventaja de no volátil. Tienen la ventaja de que sus posiciones de memoria pueden que sus posiciones de memoria pueden ser programadas y borradas mediante ser programadas y borradas mediante impulsos eléctricos muchas veces, impulsos eléctricos muchas veces, permiten un acceso más rápidopermiten un acceso más rápido

Page 23: Microcontrolador Pic16f628 e Instrucciones Gama Media

LENGUAJES DE PROGRAMACION DE LENGUAJES DE PROGRAMACION DE MICROCONTROLADORESMICROCONTROLADORES

Un lenguaje de programación Un lenguaje de programación es una herramienta que es una herramienta que permite realizar el programa permite realizar el programa de control que un de control que un microcontrolador debe microcontrolador debe ejecutar.ejecutar.

Page 24: Microcontrolador Pic16f628 e Instrucciones Gama Media

Lenguaje de máquinaLenguaje de máquina

Es una secuencia de bytes que el Es una secuencia de bytes que el microcontrolador interpreta como un microcontrolador interpreta como un programa y los ejecuta paso a paso. programa y los ejecuta paso a paso.

0x0000 : 0x3000 movlw 0x000x0000 : 0x3000 movlw 0x000x0001 : 0x008A movwf 0x0A0x0001 : 0x008A movwf 0x0A0x0002 : 0x2978 goto 0x1780x0002 : 0x2978 goto 0x1780x0003 : 0x0000 nop 0x0003 : 0x0000 nop 0x0004 : 0x00FF movwf 0x7F0x0004 : 0x00FF movwf 0x7F0x0005 : 0x0E03 swapf 0x03 , W0x0005 : 0x0E03 swapf 0x03 , W0x0006 : 0x0183 clrf 0x030x0006 : 0x0183 clrf 0x030x0007 : 0x00A1 movwf 0x210x0007 : 0x00A1 movwf 0x210x0008 : 0x087F movf 0x7F , W0x0008 : 0x087F movf 0x7F , W0x0009 : 0x00A0 movwf 0x200x0009 : 0x00A0 movwf 0x200x000A : 0x080A movf 0x0A , W0x000A : 0x080A movf 0x0A , W0x000B : 0x00A8 movwf 0x280x000B : 0x00A8 movwf 0x28

Page 25: Microcontrolador Pic16f628 e Instrucciones Gama Media

Sin embargo, esta secuencia Sin embargo, esta secuencia de bytes es difícilmente de bytes es difícilmente entendible por el humano, por entendible por el humano, por lo que cada código de comando lo que cada código de comando tiene una traducción directa a tiene una traducción directa a un lenguaje de texto. un lenguaje de texto.

Debido a estos motivos, Debido a estos motivos, aparecen diferentes lenguajes aparecen diferentes lenguajes de Programación, de bajo nivel de Programación, de bajo nivel y de alto nivel.y de alto nivel.

Page 26: Microcontrolador Pic16f628 e Instrucciones Gama Media

Lenguaje de Bajo Nivel Lenguaje de Bajo Nivel ASSEMBLERASSEMBLER

Es un lenguaje de bajo nivel, con mucha Es un lenguaje de bajo nivel, con mucha cercanía al microcontrolador y poca al cercanía al microcontrolador y poca al humano, consiste en un set de humano, consiste en un set de instrucciones equivalentes a la instrucciones equivalentes a la codificación HEX, es decir, una codificación HEX, es decir, una numeración corresponde a una numeración corresponde a una instrucción de texto. instrucción de texto.

Por ejemplo; Por ejemplo;

HEX ASMHEX ASM0x3000 movlw 0x000x3000 movlw 0x00

El lenguaje Assembler, genera archivos El lenguaje Assembler, genera archivos con extensión ASM.con extensión ASM.

Page 27: Microcontrolador Pic16f628 e Instrucciones Gama Media

A continuación un ejemplo de programa en Assembler para A continuación un ejemplo de programa en Assembler para un microcontrolador de la familia un microcontrolador de la familia PICPIC: :

El lenguaje ASM, esta mas cercano hacia el microcontrolador que hacia el ser humano, es por ello por lo que aparecen los lenguajes de alto nivel y los compiladores, que permiten escribir los programas en un lenguaje mucho más descifrable, siendo el compilador el encargado de traducir dicho programa a Assembler.

;SUMA.ASM Suma dos números almacenados en la memoria de datos *Autor: Paúl Romero Fecha:;************************************************************************#INCLUDE <P16F628A.INC> ;ARCHIVO PADRON MICROCHIP PARA 16F628A__CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _INTRC_OSC_NOCLKOUT;************************************************************************; VARIABLES *;************************************************************************;definición de nombres y direcciones de las variables usadas por el sistemaCBLOCK 0x20 ;direccion inicial de la memoria del usuarioOPERADOR_1OPERADOR_2RESULTADOENDC ;fin del bloque de memoria;************************************************************************ORG 0x00 ;dirección inicial de la memoria de programaGOTO INICIO ;************************************************************************ ; INICIO DEL PROGRAMA *;************************************************************************INICIOMOVLW B'00000111'MOVWF CMCON ;define el modo de operación del comparador ;analógicoMOVLW D'9' ;9 => WMOVWF OPERADOR_1 ;W => OPERADOR_1MOVLW D'6' ;6 => WMOVWF OPERADOR_2 ;W => OPERADOR_2MOVFW OPERADOR_1 ;OPERADOR_1 => WADDWF OPERADOR_2,W ; W + OPERADOR => WMOVWF RESULTADO ;W => RESULTADO END ;indica fin del programa

;SUMA.ASM Suma dos números almacenados en la memoria de datos *Autor: Paúl Romero Fecha:;************************************************************************#INCLUDE <P16F628A.INC> ;ARCHIVO PADRON MICROCHIP PARA 16F628A__CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _INTRC_OSC_NOCLKOUT;************************************************************************; VARIABLES *;************************************************************************;definición de nombres y direcciones de las variables usadas por el sistemaCBLOCK 0x20 ;direccion inicial de la memoria del usuarioOPERADOR_1OPERADOR_2RESULTADOENDC ;fin del bloque de memoria;************************************************************************ORG 0x00 ;dirección inicial de la memoria de programaGOTO INICIO ;************************************************************************ ; INICIO DEL PROGRAMA *;************************************************************************INICIOMOVLW B'00000111'MOVWF CMCON ;define el modo de operación del comparador ;analógicoMOVLW D'9' ;9 => WMOVWF OPERADOR_1 ;W => OPERADOR_1MOVLW D'6' ;6 => WMOVWF OPERADOR_2 ;W => OPERADOR_2MOVFW OPERADOR_1 ;OPERADOR_1 => WADDWF OPERADOR_2,W ; W + OPERADOR => WMOVWF RESULTADO ;W => RESULTADO END ;indica fin del programa

Page 28: Microcontrolador Pic16f628 e Instrucciones Gama Media

Lenguaje de alto nivelLenguaje de alto nivel

Es un lenguaje de programación en el que no existe una traslación directa de cada instrucción con comandos de lenguaje máquina. Las instrucciones en un lenguaje de alto nivel pueden llegar a traducirse por macros complejas en lenguaje máquina.

El objetivo de un Lenguaje de alto nivel es facilitar la comprensión al humano, disminuyendo el tiempo de desarrollo de las aplicaciones y facilitando su depuración. Ejemplos de lenguajes de alto nivel son:

C Basic Pascal

Page 29: Microcontrolador Pic16f628 e Instrucciones Gama Media

Un compilador acepta programas escritos en Un compilador acepta programas escritos en un Lenguaje de alto nivel y los traduce a un Lenguaje de alto nivel y los traduce a Lenguaje de máquina, o Assembler.Lenguaje de máquina, o Assembler.

FamiliaFamilia Tipo LenguajeTipo Lenguaje CompiladoresCompiladores

PPIICC

CC

CCS PCWCCS PCW

Hitech PCCHitech PCC

MikroCMikroC

IAR WorkbenchIAR Workbench

BASICBASIC

Pic Basic PRO PBPPic Basic PRO PBP

Proton PlusProton Plus

MikroBasicMikroBasic

PASCALPASCAL MikroPascalMikroPascal

Page 30: Microcontrolador Pic16f628 e Instrucciones Gama Media

A continuación, se hace referencia al proceso de programación A continuación, se hace referencia al proceso de programación de un microcontrolador en un lenguaje de alto nivel.de un microcontrolador en un lenguaje de alto nivel.

Page 31: Microcontrolador Pic16f628 e Instrucciones Gama Media

ArquitecturaArquitectura

La distribución de las patas de un La distribución de las patas de un chip de este modelo es la que chip de este modelo es la que sigue:sigue:

Page 32: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 33: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 34: Microcontrolador Pic16f628 e Instrucciones Gama Media
Page 35: Microcontrolador Pic16f628 e Instrucciones Gama Media

““Es más importante, la imaginación que el conocimiento” Es más importante, la imaginación que el conocimiento”

A. EinsteinA. Einstein