UNIVERSIDAD NACIONAL EXPERIMENTAL DE LAS FUERZAS ARMADAS INGENIERIA EN TELECOMUNICACIONES LABORATORIO DE MICROPROCESADORES-MICROCONTROLADORES PROF.CECILIA SANDOVAL RUIZ PRACTICA DE INTRODUCCION A LA PROGRAMACIÓN DE PIC 16F87X ó 18F4550 OBJETIVO: Introducir la metodología para el desarrollo de las practicas de programación de PIC Objetivos específicos para la realización de la programación de un microcontrolador se debe cumplir con: • Manejo de la arquitectura del PIC (general y especifica de acuerdo al objetivo general de práctica) • Descripción básica del entorno de desarrollo de programación del PIC • Metodología del diseño (sintaxis del programa, simulación, 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 instrucción y facilitará el análisis de la simulación, detección 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 tamaño reducido. Es un sistema digital cerrado, contiene una RAM de poca capacidad interna (bytes), Memoria de programa pequeña (algunos KB), No se requiere de decodificadores de E/S o de memoria, Orientados a operaciones de E/S, Costo de desarrollo e implementación reducido, Muy fáciles y sencillos de utilizar, Circuitos simples y tendencia a la modularidad, por lo general dan cabida a un sólo programa y el soporte de tareas múltiples (de existir), es limitado, Dos o tres modos de direccionamiento. El diagrama de bloques interno del PIC genérico (16F87x) se muestra a continuación [p.5 data sheet ] donde se encuentra la instrucción que se está realizando. portB. un ensamblador. la capacidad de memoria es de 32KB. tenemos que éste presenta un bus de instrucciones de 16 bits. Java o el que se empleará en el laboratorio Basic (Basic-JDM). Adicionalmente se recomienda simularlo para corregir posibles detalles de programación. lo que corresponde a una memoria de programa FLASH de 16 bits a diferencia de la serie 16F87X que presenta un ancho de instrucción de 14 bits. una unidad de procesamiento constituida por la ALU y sus registros.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. En cuanto al sistema de desarrollo este debe comprender un editor en el lenguaje de programación del PIC. para funciones especificas. un conjunto de puertos I/O (portA. la resolución del convertidor A/D es de 10 bits. el respectivo registro de instrucciones. así mismo módulos periféricos al CPU. C. 2048 Bytes de RAM y 256 Bytes de memoria EEPROM. el diagrama de bloques interno del PIC corresponde al mostrado en la figura. sea este Assembler. 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. un compilador. separada de una memoria de programa FLASH de 14 bits. En el caso de la arquitectura del PIC 18F4550. que maneja la sintaxis del lenguaje Basic. A continuación abordaremos un diseño en el software Proton. el cual apunta a la instrucción a realizar en el próximo ciclo. 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. . un contador de programa. Pascal. para mas detalles consultas las especificaciones técnicas del dispositivo en la hoja de datos. una interface de programación. que permita transferir el programa al microcontrolador y ejecutarlo y depurarlo. esto permite observar que el microcontrolador esta ideado como un circuito programable de aplicaciones especificas respecto al microprocesador. entiéndase 16384 direcciones en la memoria de programa. portC). detalla las direcciones para cada campo [p. guarda la dirección de retorno en stack PORTNombre_del_puerto. al simular Simulation Start. se podrá observar cada una de las instrucciones en los campos Last y Next Instruction. luego se compila y ensambla. este crea el archivo en assembler. tanto en los registros de funciones especificas (SFRs) como en los registro de propósito general (GPRs). se encuentre activado (on) y una resta para el caso de C apagado (off). salida pines 0 a 7 del puerto B) 2.hex con formato hexadecimal (el cual se puede simular en PIC Simulator) 4.Byte (1-byte integers in the range 0 to 255) . un archivo. también se verá el contador de programa PC. en el cual se escogió el pin 3 del puerto C del micro PIC 16F877 para ser la variable de selección C (supóngase a un microswitch). Se carga el programa diseñado File Load Program. permite observar paso a paso las instrucciones. lo que sucede en la memoria de datos RAM. 0 or 1) .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 programación del PIC Bit (1-bit. se debe guardar con extensión . allí se ha seleccionado el pin 18 (RC3) encendido (on) a fin de seleccionar suma. Simulación del programa diseñado El PIC SIMULATOR. el resultado de la operación será mostrado a través de un puerto del microcontrolador. el mapa de registros de la memoria RAM de los PIC 16F876 y 16F877.bas.Numro_del pin ‘especificar un pin del puerto OUTPUT dir ‘instrucción para escribir de la dirección especificada del puerto END finaliza el programa Una vez que se tiene el programa en Basic (Proton). y el registro acumulador (W register). Editar el programa de acuerdo a la Sintaxis en Basic: Declaración 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.Metodología de programación: 1. Planteamiento del diseño: Se requiere un programa para efectuar una suma en caso de que el microswitch C. en la barra principal del PIC Simulator Tool ver microcontrolador.11data sheet]. se puede seleccionar la vista del PIC. Diagrama de flujo del programa: 3.535) Set de Instrucciones del programa diseñado Dim var As tipo ‘sentencia para declarar variables INPUT dir ‘instrucción para leer de la dirección especificada del puerto If cond Then sentencia1 Else sentencia2 End If ‘instrucción para probar condiciones GoSub Nombre_del _subprograma ‘Permite ir a la dirección del subprograma. en la inicialización de las variables los valores 37h y 0Fh serán almacenadas en A y B respectivamente.3 'leer el pin 3 del puerto C c=PORTC.Word (2-byte integers in the range 0 to 65. estas serán almacenadas en los . (CRITERIOS: entrada pin 3 del puerto C.asm. será transferido al registro correspondiente PORTB en la dirección 006h. presenta un manual de referencia para el set de instrucciones PIC BASIC COMPILER. con el programador JDM Programmer la interface corresponde al software IC-PROG 105D. 2. el Proton tiene Proteus Simulador de PIC en modo DEMOS. este puede ser consultado para verificar la correcta sintaxis de las instrucciones a la hora de realizar un programa. el contenido de estas variables será posteriormente operado y el resultado en B (ver figura). así mismo presenta un conjunto de ejemplos útiles para las prácticas propuestas en el laboratorio PIC Simulator IDE Getting Started Page 5.ASM. Programar. emplear el comando de programación para ejecutar la programación del PIC seleccionado.HEX o . . de los registros de funciones especificas (SPRs).registros de propósito general (GPRs) en la fila derecha. un ejemplo. del puerto B. en este paso es importante definir el hardware de programación. Etapa de programación del PIC. PIC Simulator. y compilar y programar F10. para así emplear la interface de programación apropiada. al seleccionar RC3 en OFF. en código hexadeximal o ensamblador . Implementación del programa a través del PIC El proceso de implementación consiste en configurar el programador en el Proton IDE Lite. en el menú de ajustes se selecciona el dispositivo PIC 16F877 Abrir el programa fuente. 3. direcciones 21h y 22h. en e menú de abrir archivo. Seleccionar el dispositivo. en el cual se debe: 1. luego este se colocará en los pines RB0 …RB7. como se puede observar en la simulación. se efectúa la resta respectiva. 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 través de la interfase de PROTON IDE . RX de PIC. un bootloader sobre la memoria de programa que sirva de soporte para realizar las programaciones en caliente. es importante mencionar que para ello debe cargarse inicialmente un firmware. 3. la Pines del PIC 16F877 : Los componentes que integran la interfaz de programación son:(Pin 1) corresponde a MCLR_L / VPP • Un (01) circuito integrado convertidor RS232/TTL ST232. Investigar el concepto de FIRMWARE Buscar y explicar el firmware para programación de PIC Explicar a nivel de arquitectura este proceso. • Un (01) pulsador (NO) para reset • Una (01) resistencia de 100 ohm . de manera de poder reprogramar el PIC directamente en el montaje.7 k ohms. (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. 2. 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.Construcción del programador por TX • • • • • • • 16-button keypad LCD (graphic or alphanumeric) LEDs (4x red. 1. es decir. en la cual se intercambiará información con la memoria de programa desde los pines TX. after which you can start programming your target device over a serial connection.hex.hex. you need to ensure that the bootloader firmware has been programmed onto the target microcontroller using a hardware programmer.hex files. Alternatively. MicroCode Loader will be unable to communicate with the target microcontroller. MicroCode Loader comes with a number of pre-compiled *.hex file matches the clock speed of your target microcontroller. For example. Default fuse settings are embedded in the firmware *. MicroCode Loader will be unable to program your *. :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 . You need to make sure that the bootloader *. then you need to use the firmware file called 16F876_20. if you are using a 18F876 on a development board running at 20 MHz. 16F876_20.Programming the Loader Firmware Before using MicroCode Loader. ready for programming into the target microcontroller. If you require additional bootloader files. You should certainly never select the code protect fuse. you can purchase pre-programmed microcontrollers from Mecanique.hex file. If the code protect fuse is set. You should not normally change these default settings. The loader firmware files can be found in the MCLoader folder. This is a one off operation.hex file. If you don't do this. please contact Mecanique. located in your main IDE installation folder. HS High Speed (20 MHz) CP OFF sin protección de código. se debe seleccionar el archivo 16F877_20.1 Data Sheet] • Procesador RISC de sólo 35 instrucciones • Toda las instrucciones tienen la misma duración (1 ciclo) salvo los saltos que demoran dos ciclos 1 ciclo = 4 pulsos reloj • Velocidad de operación máxima 20 MHz (Cristal a usar para generar la señal 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 interrupción seleccionables en forma independiente • Stack de ocho niveles • Tres modos de direccionamiento: Directo. Características Comunes: [p. En PROTON se debe seleccionar el Microcode Loador. teniendo energizado el montaje. se compila y Programa (F10). 4 MHz 20 uA @ 3V. En el ICPROG. WRT habilita la escritura para que PROTON pueda realizar la programación a través de la transmisión serial. Programador USB para el PIC 18F4550 .Finalmente es importante hacer una referencia a la distribución de pines del PIC programado para realizar la conexión con el circuito a manejar a través del microcontrolador y sus características suministradas por el fabricante.5V • Capacidad de drenar/sumir corriente de 25 mA (FAN OUT/FAN IN) • Consumo de energía: < 2 mA @ 5V. 32 kHz < 1 uA en modo de reposo (sleep) Representación del plano esquemático del circuito. y realizar la programación. indirecto y relativo • Power-on Reset (POR) • Power-up Timer (PWRT) • Oscillator Start-up Timer (OST) • Watchdog Timer (WDT) con oscilador interno RC • Protección de código programable medio código o completo • Modo SLEEP para ahorro de energía • Fuente de reloj seleccionada por software • Programación en circuito (ICSP) • In-Circuit Debugging utilizando dos pines de conexión • Acceso a la memoria de programa desde el procesador en tiempo de ejecución para una lectura y/o escritura de datos • Voltaje de operación desde 2.0V to 5. y los condensadores y Leds correspondientes.hex. del conector USB. se deben realizar las conexiones del oscilador. Investigar sobre los drivers de la PC para reconocer el dispositivo MCHPUSB 18F4550_20. :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 .El circuito propuesto debe tener comunicación USB con la PC para la programación BootLoader del PIC18F4550 El modo BootLoader permitea programar el dispositivo. _ Comentar la arquitectura y características generales del PIC 16F877 ó 18F4550 según sea el caso.6 data sheet] . en base a los datos suministrados por el fabricante [p. CECILIA SANDOVAL RUIZ ESTUDIO DEL PIC Objetivo: Estudio y manejo del PIC 16F87X ó 18F4550 para aplicaciones prácticas Parte I.: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. Manejo de Puertos (I: Dir y O: Datos del PIC). los registros asociados a ellos y la programación en Lenguaje PicBasic para el manejo de los puertos (Explique a través de Proton y GCBasic) Parte II. Prof. Investigar y comentar las características de los puertos. Manejo de instrucción TRIS. de paso ó servo a través del PIC .2. De Microprocesadores Práctica 1: Manejo de Puertos de PIC y Tablas de Memoria . GCBasic. PROTON IDE. KTechLab y KiCad. presentar un resumen con los aspectos más importantes._ Investigar acerca de las herramientas del sistema de desarrollo de programación del PIC. Cecilia Sandoval Ruiz Lab. Objetivo: Accionamiento de motores DC. conectar el cristal oscilador de 20Mhz. Servo. HPWM.1) Donde: t_encendido04 = encendido * 10us (para un cristal – oscilador de 4 MHz ) t_encendido20 = encendido * 2us (para un cristal – oscilador de 20 MHz ) ¿Cuál es el valor máximo de la variable encendido?. Investigación en la ayuda del software Proton Instrucciones en PICBasic que deben ser investigadas y ANALIZADAS High.TRISB Register (c) PORTC . ¿Qué ocurre si se define como tipo byte? Comentarios del grupo referente a cada instrucción: ______________________________________________________________________________________ ______________________________________________________________________________________ _____________________________________________________________________________________ El análisis debe quedar documentado en un archivo del grupo. que llamaremos asignación colaborativa. conectar alimentación al PIC del simulador. 3. Explicar detalladamente la configuración de los puertos como entrada-salida.1. Este circuito deberá ser empleado para programar el PIC con el archivo . High La variable encendido guardará un factor para el cálculo del tiempo en alto del pin especificado en este caso el pin 1 del puerto B (PORTB.TRISE Register microcontrolador 16F87X ó 18F4550 [p. Inkey Ejemplo: Interpretación de la Instrucción PulsIn Variable_t = PulsIn pin.TRISC Register (d) PORTD .TRISA Register (b) PORTB .basic diseñado y así probar el funcionamiento del programa que se realizará en el laboratorio.TRISD Register (e) PORTE . conectar el teclado hexadecimal en el puerto B del PIC y un display 7 segmentos en el puerto C del PIC. Counter. PulsIn.1. Low._ Investigar acerca de los puertos del investigación en el datasheet del PIC16F87X (a) PORTA . y las instrucciones para su manejo._ Realizar un circuito en el simulador.hex que se genera al compilar el archivo . PulsOut. en el puerto D conectar 4 leds en los bits menos significativos. en el cual empleen un PIC. ¿Qué tipo de variable debe ser definida?.29data sheet] 2. estado encendido = PulsIn PORTB. Microp602@hotm laboratorio .