Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructura de Un Programa en MPLAB
Estructura de Un Programa en MPLAB
Estructura de un programa
JUEGO DE INSTRUCCIONES
Pgina 2
Estructura de un programa
list p=16f877a #include <p16f877a.inc> El primer rengln define que PIC se usara, el segundo rengln es una librera que contiene los nombres de los registros especiales del pic, tales como PORTA, PORTB, STATUS, TRISA etc. Para podernos referir a stos por sus nombres en lugar de su posicin de memoria, facilitndonos la edicin del programa.
--------------------------------------------------------------------------------------------------------------------------__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
Este rengln CONFIG se llama PALABRA DE CONFIGURACION, y esta formada por diferentes FUSIBLES. Estos FUSIBLES nos sirven para dar ordenes al programador de cmo debe configurar el PIC para su correcto funcionamiento. A continuacin veamos para la funcin de cada FUSIBLE. CP Cdigo de Proteccin de programa, si lo habilitamos (ON) evita que otras personas puedan leer el programa contenido en el PIC. Generalmente lo pondremos a OFF. Watch Dog Timer, o Temporizador Perro Guardin. Este temporizador resetea el PIC cada determinado tiempo para evitar enciclamientos por error en el programa. Preferentemente hay que apagarlo (OFF).
Bit de Permiso para el Reseteo por Cada de Tensin. Bit de Permiso para el Timer de conexin de alimentacin. Se usa para resetear el PIC cada vez que se conecta la fuente de alimentacin de nuestra aplicacin. Define que tipo de oscilador se usara. RC es para Capacitor y resistencia, XT es para cristal de 4Mhz, HS para cristales mayores a 4Mhz. Permiso para escritura en Modo FLASH. Se usa cuando en nuestro programa accedemos a la memoria de datos EEPROM.
WDT
BODEN PWRTE
OSC
WRT
LVP
Voltaje de programacin bajo. Si esta en ON permite programar el PIC con 5V, si esta en OFF programa el PIC con 14V, debemos ponerlo a OFF. Cdigo de Proteccin de Datos. Se usa para evitar que terceros lean lo que hemos escrito en la memoria EEPROM del PIC.
CPD
---------------------------------------------------------------------------------------------------------------------------
Pgina 3
Estructura de un programa
Los registros o variables que se usaran se declaran entre estos dos renglones, el 0X20 indica que usaremos los espacios disponibles para registros a partir de la posicin 0x20 de la memoria (VER MAPA DE MEMORIA).
La lnea ORG 0 (Origen 0) es el VECTOR DE RESET, lo cual quiere decir que siempre que se resetee, o se encienda el PIC, el programa se comenzara a ejecutar a partir de esta posicin. El goto inicio y debajo el ORG 5 nos indica que hemos saltado el ORG 4 que es el vector de interrupciones, este vector ORG 4 no se usara por el momento. --------------------------------------------------------------------------------------------------------------------------A partir de aqu comenzamos con el programa. Como siempre, lo primero es configurar los puertos de entrada y salida: Inicio bsf bcf STATUS,RP0 STATUS,RP1 ;RP0 ;RP1 1 0
Estas dos lneas nos indican que nos movemos al banco 1 que es el banco para configurar los puertos de entrada y salida (ver hoja de Seleccin de bancos para configurar puertos ( in / out )). --------------------------------------------------------------------------------------------------------------------------movlw movwf b00000111 ADCON1 ; W b00000111 ; ADCON1 W
En estas dos lneas estamos mandando a ADCON1 el nmero 00000111 para configurar todas las entradas analgicas del PIC como digitales (ver hoja de CONFIGURACION DE PINES ( Digitales / Analgicas) ). Nota, la b en b00000111 indica que el numero dentro de las comillas es un numero binario. --------------------------------------------------------------------------------------------------------------------------movlw movwf b11111111 TRISA ; W b00000111 ; TRISA W
En estos dos renglones estamos mandando el numero binario 11111111 al registro TRISA. El registro TRISA configura los pines del PORTA como entrada o salida. Si a un bit del TRISA le mandamos un 1 entonces el mismo bit pero del PORTA ser ENTRADA, si a un bit del TRISA le Curso bsico de microcontroladores robo-sapiens@hotmail.com Pgina 4
Estructura de un programa
mandamos un 0 entonces el mismo bit pero del PORTA ser SALIDA. En este caso todos los bits de TRISA les hemos mandado 1s, asi que todos los pines del PORTA sern ENTRADAS.
En este rengln estamos limpiando el TRISB, es decir, le estamos mandando puros 0s. Lo cual quiere decir que estamos volviendo todos los pines del PORTB como SALIDAS.
En estos dos renglones estamos mandando un 0 al RP0 y 0 al RP1 para posicionarnos en el Banco 0, que es el banco de trabajo, pues hemos terminado de configurar los puertos en el Banco 1.
--------------------------------------------------------------------------------------------------------------------------Ya configurados los puertos como digitales y configurado cuales son entradas y salidas comenzamos con nuestro programa principal: Inicio_principal btfss PORTA,0 goto apagar bsf PORTB,0 goto inicio_principal apagar Bcf PORTB,0 goto inicio_principal
; PORTA,0 = 1 ? ; NO, entonces Ir a apagar ; SI, entonces PORTB,0 1 ; Ir a inicio_principal ; PORTB,0 0 ;Ir a inicio_principal
END
Pgina 5
Estructura de un programa
CBLOCK ENDC ORG goto ORG Inicio bsf bcf movlw movwf movlw movwf clrf bcf bcf 0 inicio 5
0X20
INICIO
Configurar FUSES
Definir variables
Configurar Puertos
; PORTA,0 = 1 ? ; NO, entonces Ir a apagar ; SI, entonces PORTB,0 1 ; Ir a inicio_principal ; PORTB,0 0 ;Ir a inicio_principal
Programa Principal
END
END
Pgina 6
Estructura de un programa
Pgina 7
Estructura de un programa
MAPA DE MEMORIA:
Pgina 8
Estructura de un programa
Los pines marcados tienen la funcin de canales analgicos, pero pueden ser configurados para ser i/o digitales.
Pgina 9
Estructura de un programa
Pgina 10