Sunteți pe pagina 1din 12

UNIVERSIDAD NACIONAL EXPERIMENTAL DE LAS FUERZAS ARMADAS INGENIERIA EN TELECOMUNICACIONES LABORATORIO DE MICROPROCESADORES-MICROCONTROLADORES PROF.

CECILIA SANDOVAL RUIZ

PRACTICA DE INTRODUCCION A LA PROGRAMACIN DE PIC 16F87X 18F4550 OBJETIVO: Introducir la metodologa para el desarrollo de las practicas de programacin de PIC
Objetivos especficos para la realizacin de la programacin de un microcontrolador se debe cumplir con: Manejo de la arquitectura del PIC (general y especifica de acuerdo al objetivo general de prctica) Descripcin bsica del entorno de desarrollo de programacin del PIC Metodologa del diseo (sintaxis del programa, simulacin, comentarios) _______________________________________________________________________________________________ La arquitectura del microcontrolador a utilizar para el desarrollo de un programa debe ser investigada, como primer paso lo cual permitir conocer los registros a emplear en cada instruccin y facilitar el anlisis de la simulacin, deteccin de fallas entre otras cosas.
El microcontrolador Programable (PIC) Es un chip (Circuito integrado) que contiene un computador completo junto a diversos recursos auxiliares con prestaciones y capacidades limitadas, de muy bajo costo y tamao reducido. Es un sistema digital cerrado, contiene una RAM de poca capacidad interna (bytes), Memoria de programa pequea (algunos KB), No se requiere de decodificadores de E/S o de memoria, Orientados a operaciones de E/S, Costo de desarrollo e implementacin reducido, Muy fciles y sencillos de utilizar, Circuitos simples y tendencia a la modularidad, por lo general dan cabida a un slo programa y el soporte de tareas mltiples (de existir), es limitado, Dos o tres modos de direccionamiento.

El diagrama de bloques interno del PIC genrico (16F87x) se muestra a continuacin [p.5 data sheet ]

Entre los aspectos a destacar de la arquitectura del PIC 16F876 se puede mencionar que cuenta con una memoria de datos RAM y su respectivo bus de datos de 8 bits, separada de una memoria de programa FLASH de 14 bits, el respectivo registro de instrucciones, donde se encuentra la instruccin que se est realizando, un contador de programa, el cual apunta a la instruccin a realizar en el prximo ciclo, una unidad de procesamiento constituida por la ALU y sus registros, un conjunto de puertos I/O (portA, portB, portC), as mismo mdulos perifricos al CPU, para funciones especificas. Notamos que el bus de direcciones de acceso a la memoria FLASH es de 13 bits lo que permite tener acceso a 8K localidades de memoria, la memoria de datos RAM, presenta 9 bits en el bus de direcciones para un total en uso de 368 localidades de memoria y la pila cuenta con 8 niveles, esto permite observar que el microcontrolador esta ideado como un circuito programable de aplicaciones especificas respecto al microprocesador. En el caso de la arquitectura del PIC 18F4550, tenemos que ste presenta un bus de instrucciones de 16 bits, lo que corresponde a una memoria de programa FLASH de 16 bits a diferencia de la serie 16F87X que presenta un ancho de instruccin de 14 bits, la capacidad de memoria es de 32KB, entindase 16384 direcciones en la memoria de programa, 2048 Bytes de RAM y 256 Bytes de memoria EEPROM, la resolucin del convertidor A/D es de 10 bits, el diagrama de bloques interno del PIC corresponde al mostrado en la figura, para mas detalles consultas las especificaciones tcnicas del dispositivo en la hoja de datos.

En cuanto al sistema de desarrollo este debe comprender un editor en el lenguaje de programacin del PIC, sea este Assembler, C, Pascal, Java o el que se emplear en el laboratorio Basic (Basic-JDM); un compilador; un ensamblador; una interface de programacin, que permita transferir el programa al microcontrolador y ejecutarlo y depurarlo. Adicionalmente se recomienda simularlo para corregir posibles detalles de programacin. A continuacin abordaremos un diseo en el software Proton, que maneja la sintaxis del lenguaje Basic.

Metodologa de programacin: 1. Planteamiento del diseo: Se requiere un programa para efectuar una suma en caso de que el microswitch C, se encuentre activado (on) y una resta para el caso de C apagado (off), el resultado de la operacin ser mostrado a travs de un puerto del microcontrolador. (CRITERIOS: entrada pin 3 del puerto C, salida pines 0 a 7 del puerto B) 2. Diagrama de flujo del programa: 3. Editar el programa de acuerdo a la Sintaxis en Basic:

Declaracin de VAR

PRINCIPAL: Inicializar A=55d=37h Inicializar B=0Fh Leer pin 3 del puerto C si no

C=1

Suma: b=b+a

Resta: b=b-a

Mostrar: Escribir b en el puerto B

end

SET_DEFAULTS proton_20 ' Configure a 20MHz crystal Device 16F877 'dispositivo a emplear Dim a As Byte ' Working A como un byte Dim b As Byte ' Working B como un byte Dim c As Bit ' Working C como una bit PRINCIPAL: a = %00110111 'en binario se emplea % b = $0F 'en hexadeximal se emplea $ Input PORTC.3 'leer el pin 3 del puerto C c=PORTC.3 'var C recibe la entrada If c=1 Then GoSub Suma Else GoSub Resta End If Suma: b=a+b 'almacenar en B la suma de A con B GoSub mostrar Resta: b=a-b 'almacenar en B la suma de A con B GoSub mostrar mostrar: PORTB = b 'asignar el valor de B al puerto B Output PORTB End

Tipos de variables soportadas para la programacin del PIC Bit (1-bit, 0 or 1) - Byte (1-byte integers in the range 0 to 255) - Word (2-byte integers in the range 0 to 65,535) Set de Instrucciones del programa diseado Dim var As tipo sentencia para declarar variables INPUT dir instruccin para leer de la direccin especificada del puerto If cond Then sentencia1 Else sentencia2 End If instruccin para probar condiciones GoSub Nombre_del _subprograma Permite ir a la direccin del subprograma, guarda la direccin de retorno en stack PORTNombre_del_puerto.Numro_del pin especificar un pin del puerto OUTPUT dir instruccin para escribir de la direccin especificada del puerto END finaliza el programa Una vez que se tiene el programa en Basic (Proton), se debe guardar con extensin .bas, luego se compila y ensambla, este crea el archivo en assembler.asm, un archivo.hex con formato hexadecimal (el cual se puede simular en PIC Simulator) 4. Simulacin del programa diseado El PIC SIMULATOR, permite observar paso a paso las instrucciones, lo que sucede en la memoria de datos RAM, tanto en los registros de funciones especificas (SFRs) como en los registro de propsito general (GPRs), el mapa de registros de la memoria RAM de los PIC 16F876 y 16F877, detalla las direcciones para cada campo [p.11data sheet]. Se carga el programa diseado File Load Program, en el cual se escogi el pin 3 del puerto C del micro PIC 16F877 para ser la variable de seleccin C (supngase a un microswitch), en la barra principal del PIC Simulator Tool ver microcontrolador, se puede seleccionar la vista del PIC, all se ha seleccionado el pin 18 (RC3) encendido (on) a fin de seleccionar suma, al simular Simulation Start, se podr observar cada una de las instrucciones en los campos Last y Next Instruction, tambin se ver el contador de programa PC, y el registro acumulador (W register), en la inicializacin de las variables los valores 37h y 0Fh sern almacenadas en A y B respectivamente, estas sern almacenadas en los

registros de propsito general (GPRs) en la fila derecha, direcciones 21h y 22h, el contenido de estas variables ser posteriormente operado y el resultado en B (ver figura), ser transferido al registro correspondiente PORTB en la direccin 006h, de los registros de funciones especificas (SPRs), luego este se colocar en los pines RB0 RB7, del puerto B, como se puede observar en la simulacin, al seleccionar RC3 en OFF, se efecta la resta respectiva.

PIC Simulator, presenta un manual de referencia para el set de instrucciones PIC BASIC COMPILER, este puede ser consultado para verificar la correcta sintaxis de las instrucciones a la hora de realizar un programa, as mismo presenta un conjunto de ejemplos tiles para las prcticas propuestas en el laboratorio PIC Simulator IDE Getting Started Page 5. Implementacin del programa a travs del PIC El proceso de implementacin consiste en configurar el programador en el Proton IDE Lite, y compilar y programar F10, el Proton tiene Proteus Simulador de PIC en modo DEMOS. Etapa de programacin del PIC, en este paso es importante definir el hardware de programacin, para as emplear la interface de programacin apropiada, un ejemplo; con el programador JDM Programmer la interface corresponde al software IC-PROG 105D, en el cual se debe:

1. 2. 3.

Seleccionar el dispositivo, en el men de ajustes se selecciona el dispositivo PIC 16F877 Abrir el programa fuente, en cdigo hexadeximal o ensamblador .HEX o .ASM, en e men de abrir archivo. Programar, emplear el comando de programacin para ejecutar la programacin del PIC seleccionado.

Otra alternativa para programar el PIC corresponde a cargar un firmware en el PIC, usando un programador Standard y para los otros casos programar directamente a travs de la interfase de PROTON IDE

Construccin del programador por TX



16-button keypad LCD (graphic or alphanumeric) LEDs (4x red, 4 x green) Serial EEPROMs (I2C and SPI) RS232 serial port Infra-red transmitters and receiver and a choice of crystal frequencies

Para construir el programador de acuerdo a la arquitectura suministrada en la ayuda de Proton se requiere del Hardware mostrado en la figura, en la cual se intercambiar informacin con la memoria de programa desde los pines TX, RX de PIC, es importante mencionar que para ello debe cargarse inicialmente un firmware, es decir; un bootloader sobre la memoria de programa que sirva de soporte para realizar las programaciones en caliente, de manera de poder reprogramar el PIC directamente en el montaje.

1. 2. 3.

Investigar el concepto de FIRMWARE Buscar y explicar el firmware para programacin de PIC Explicar a nivel de arquitectura este proceso.

la

Pines del PIC 16F877 : Los componentes que integran la interfaz de programacin son:(Pin 1) corresponde a MCLR_L / VPP Un (01) circuito integrado convertidor RS232/TTL ST232. (Pin 25 ) corresponde a TX Un (01) conector DB9 hembra (Pin 26 ) corresponde a RX Cuatro (05) condensadores 1 uF Una (01) resistencia de 4.7 k ohms. Un (01) pulsador (NO) para reset Una (01) resistencia de 100 ohm

Programming the Loader Firmware Before using MicroCode Loader, you need to ensure that the bootloader firmware has been programmed onto the target microcontroller using a hardware programmer. This is a one off operation, after which you can start programming your target device over a serial connection. Alternatively, you can purchase pre-programmed microcontrollers from Mecanique. You need to make sure that the bootloader *.hex file matches the clock speed of your target microcontroller. For example, if you are using a 18F876 on a development board running at 20 MHz, then you need to use the firmware file called 16F876_20.hex. If you don't do this, MicroCode Loader will be unable to communicate with the target microcontroller. MicroCode Loader comes with a number of pre-compiled *.hex files, ready for programming into the target microcontroller. If you require additional bootloader files, please contact Mecanique. The loader firmware files can be found in the MCLoader folder, located in your main IDE installation folder. Default fuse settings are embedded in the firmware *.hex file. You should not normally change these default settings. You should certainly never select the code protect fuse. If the code protect fuse is set, MicroCode Loader will be unable to program your *.hex file. 16F876_20.hex. :020000040000FA :0800000000001F308A000D2FE3 :103E0000002F900198018316980183128C018A017A :103E10000000000000000000002F8B134030C4277A :103E2000303090008E018F010C10101464000C18BB :103E3000012F8C1E162F1A081010F03A0319212F8B :103E4000012FA030D227CD27A200A030D2272208F0 :103E5000A13A0319442F2208A23A0319612F22081C :103E6000A33A0319662F2208A43A03199E2F2208A9 :103E7000FF3A0319012F2208F13A0319A32F220850 :103E8000F23A0319AA2F232FCD27A300F427A90064 :103E9000CD27A4002408A90603195F2F23080317C0 :103EA0008D000313240803178C0083168C130C1544 :103EB000DF278C18592F0C1183120313F427D227F4 :103EC000232FCD27A300F427D227232FCD27A1000E :103ED000BA272808A9002708AA00AD27E527260841 :103EE000AB002508AC00CD27A600CD27A5002608ED :103EF0002B0603197C2F802F25082C060319932FDE :103F0000D7270313250803178E000313260803176A :103F10008C0083168C170C15DF27000000000C1195 :103F200083120313E527BF272908A8002A08A70042 :103F3000A80F9B2FA70FA10B692F232FBA27AD27FF :103F4000E527BF27232F1430D2271430D227003083 :103F5000D227232FCD27C427232F2708031DB92FAE :103F6000FC3028070318B92F2808083EA8001F3086 :103F7000A7000800CD27A800CD27A7000800260825 :103F8000D2272508D2270800831603139900A630EC :103F90009800831298171816080064008C1ECD2F05 :103FA0001A08080064000C1ED22F99000800270888 :103FB00003178F000313280803178D0008005530DE :103FC0008D00AA308D008C140800D72783168C171B :103FD0000C140000000083120C080313A600031742 :103FE0000E080313A5000800230803178D0083168D :0C3FF0008C130C1483120C08031308003F :02400E00723FFF :00000001FF

Finalmente es importante hacer una referencia a la distribucin de pines del PIC programado para realizar la conexin con el circuito a manejar a travs del microcontrolador y sus caractersticas suministradas por el fabricante.
Caractersticas Comunes: [p.1 Data Sheet] Procesador RISC de slo 35 instrucciones Toda las instrucciones tienen la misma duracin (1 ciclo) salvo los saltos que demoran dos ciclos 1 ciclo = 4 pulsos reloj Velocidad de operacin mxima 20 MHz (Cristal a usar para generar la seal de reloj) Hasta 8K x 14 words de FLASH Program Memory Hasta 368 x 8 bytes de Data Memory (RAM) Hasta 256 x 8 bytes de EEPROM para datos 14 fuentes de interrupcin seleccionables en forma independiente Stack de ocho niveles Tres modos de direccionamiento: Directo, indirecto y relativo Power-on Reset (POR) Power-up Timer (PWRT) Oscillator Start-up Timer (OST) Watchdog Timer (WDT) con oscilador interno RC Proteccin de cdigo programable medio cdigo o completo Modo SLEEP para ahorro de energa Fuente de reloj seleccionada por software Programacin en circuito (ICSP) In-Circuit Debugging utilizando dos pines de conexin Acceso a la memoria de programa desde el procesador en tiempo de ejecucin para una lectura y/o escritura de datos Voltaje de operacin desde 2.0V to 5.5V Capacidad de drenar/sumir corriente de 25 mA (FAN OUT/FAN IN) Consumo de energa: < 2 mA @ 5V, 4 MHz 20 uA @ 3V, 32 kHz < 1 uA en modo de reposo (sleep)

Representacin del plano esquemtico del circuito.

En el ICPROG, se debe seleccionar el archivo 16F877_20, y realizar la programacin. HS High Speed (20 MHz) CP OFF sin proteccin de cdigo, WRT habilita la escritura para que PROTON pueda realizar la programacin a travs de la transmisin serial. En PROTON se debe seleccionar el Microcode Loador, se compila y Programa (F10), teniendo energizado el montaje. Programador USB para el PIC 18F4550

El circuito propuesto debe tener comunicacin USB con la PC para la programacin BootLoader del PIC18F4550

El modo BootLoader permitea programar el dispositivo, se deben realizar las conexiones del oscilador, del conector USB, y los condensadores y Leds correspondientes. Investigar sobre los drivers de la PC para reconocer el dispositivo
MCHPUSB

18F4550_20.hex. :020000040000FA

:0400000082EF3EF05D :087CF00000000000000000008C :107D000080EF3EF0F29E400E7EEC3FF084EC3FF0C0 :107D1000F00AD8B48EEF3EF0CBEF3EF0A00E9BEC15 :107D20003FF095EC3FF0226EA00E9BEC3FF022500E :107D3000A10AD8B4D2EF3EF02250A20AD8B4E6EF9E :107D40003EF02250A30AD8B4EEEF3EF02250A40A2F :107D5000D8B418EF3FF02250A50AD8B42FEF3FF067 :107D60002250FF0AD8B4CBEF3EF02250F10AD8B42B :107D700035EF3FF02250F20AD8B452EF3FF02250D4 :107D8000A60AD8B41EEF3FF02250A70AD8B4F4EFE9 :107D90003EF091EF3EF0CD6AAB6AAC6A9E6AAF6A84 :107DA00078EF3EF06DEC3FF0C7EC3FF0286E95ECBD :107DB0003FF0246E281AD8B4E2EF3EF0CEEC3FF04C :107DC000C7EC3FF09BEC3FF091EF3EF06DEC3FF0E5 :107DD000C7EC3FF09BEC3FF091EF3EF06DEC3FF0D5 :107DE00058EC3FF0F6EF3EF06DEC3FF0000EEA6E1F :107DF000290EE96E080E216E95EC3FF0EE6E212EF5 :107E0000FCEF3EF0000EEA6E290EE96E080E216EC0 :107E1000A1EC3FF0EE50F56E0D00212E0AEF3FF081 :107E2000A1EC3FF0AEEC3FF022EF3FF091EF3EF0DF :107E30006DEC3FF058EC3FF022EF3FF06DEC3FF07F :107E400022EF3FF0A1EC3FF0040E216EB5EC3FF0C5 :107E500077EC3FF0212E26EF3FF091EF3EF06DECF6 :107E60003FF0BEEC3FF091EF3EF0220E9BEC3FF076 :107E70001F0E9BEC3FF0470E9BEC3FF0000E9BEC7F

:107E80003FF0800E9BEC3FF0000E9BEC3FF0000EAD :107E90009BEC3FF0030E9BEC3FF0080E9BEC3FF099 :107EA00091EF3EF095EC3FF07EEC3FF091EF3EF02D :107EB0002750D8A46CEF3FF02550D8A46CEF3FF0CA :107EC000F80E2624D8B06CEF3FF02650F00F266E47 :107ED0007C0E256E000E276E120095EC3FF0266E8C :107EE00095EC3FF0256E95EC3FF0276E1200245084 :107EF0009BEC3FF023509BEC3FF01200AF6EA60EC0 :107F0000AC6EAB8EAB881200300ECD6ECE6ACF6AEF :107F10009E90CD8004009EB093EF3FF09EAA8AEF22 :107F20003FF0AE501200CD90000C04009EAA95EFD9 :107F30003FF0AE50120004009EA89BEF3FF0AD6EE4 :107F400012002750F86E2550F76E2650F66E12007C :107F5000550EA76EAA0EA76EA6821200840EA66EFC :107F6000A8EC3FF00000A6941200A66AA68E0900B5 :107F7000F550246E0900F550236E1200A1EC3FF07D :107F8000940EA66EA8EC3FF00000A69412002650B6 :107F9000A96EA66AA69EA680A85012002650A96EB9 :107FA0002450A86EA66AA69EA684A8EC3FF0A6B2AE :087FB000D7EF3FF0A694120088 :020000040030CA :08000000E7FCFFEEFFFD9BFF92 :00000001FF
UNIVERSIDAD NACIONAL EXPERIMENTAL DE LAS FUERZAS ARMADAS INGENIERIA EN TELECOMUNICACIONES LABORATORIO DE MICROPROCESADORES-MICROCONTROLADORES PROF. CECILIA SANDOVAL RUIZ

ESTUDIO DEL PIC Objetivo: Estudio y manejo del PIC 16F87X 18F4550 para aplicaciones prcticas
Parte I._ Comentar la arquitectura y caractersticas generales del PIC 16F877 18F4550 segn sea el caso, en base a los datos suministrados por el fabricante [p.6 data sheet]

2. Investigar y comentar las caractersticas de los puertos, los registros asociados a ellos y la programacin en Lenguaje PicBasic para el manejo de los puertos (Explique a travs de Proton y GCBasic) Parte II._ Investigar acerca de las herramientas del sistema de desarrollo de programacin del PIC, PROTON IDE, GCBasic, KTechLab y KiCad, presentar un resumen con los aspectos ms importantes.

Prof. Cecilia Sandoval Ruiz Lab. De Microprocesadores Prctica 1: Manejo de Puertos de PIC y Tablas de Memoria - Manejo de Puertos (I: Dir y O: Datos del PIC). Manejo de instruccin TRIS. Objetivo: Accionamiento de motores DC, de paso servo a travs del PIC

1._ Investigar acerca de los puertos del investigacin en el datasheet del PIC16F87X (a) PORTA - TRISA Register (b) PORTB - TRISB Register (c) PORTC - TRISC Register (d) PORTD - TRISD Register (e) PORTE - TRISE Register

microcontrolador 16F87X 18F4550 [p.29data sheet]

2. Explicar detalladamente la configuracin de los puertos como entrada-salida, y las instrucciones para su manejo. Investigacin en la ayuda del software Proton Instrucciones en PICBasic que deben ser investigadas y ANALIZADAS High, Low, PulsIn, PulsOut, Counter, HPWM, Servo, Inkey Ejemplo: Interpretacin de la Instruccin PulsIn Variable_t = PulsIn pin, estado
encendido = PulsIn PORTB.1, High

La variable encendido guardar un factor para el clculo del tiempo en alto del pin especificado en este caso el pin 1 del puerto B (PORTB.1) Donde: t_encendido04 = encendido * 10us (para un cristal oscilador de 4 MHz ) t_encendido20 = encendido * 2us (para un cristal oscilador de 20 MHz ) Cul es el valor mximo de la variable encendido?, Qu tipo de variable debe ser definida?, Qu ocurre si se define como tipo byte? Comentarios del grupo referente a cada instruccin: ______________________________________________________________________________________ ______________________________________________________________________________________ _____________________________________________________________________________________ El anlisis debe quedar documentado en un archivo del grupo, que llamaremos asignacin colaborativa. 3._ Realizar un circuito en el simulador, en el cual empleen un PIC, conectar alimentacin al PIC del simulador, conectar el cristal oscilador de 20Mhz, conectar el teclado hexadecimal en el puerto B del PIC y un display 7 segmentos en el puerto C del PIC, en el puerto D conectar 4 leds en los bits menos significativos. Este circuito deber ser empleado para programar el PIC con el archivo .hex que se genera al compilar el archivo .basic diseado y as probar el funcionamiento del programa que se realizar en el laboratorio.

Microp602@hotm laboratorio

S-ar putea să vă placă și