Estructura De Un Programa En Mplab

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Estructura De Un Programa En Mplab as PDF for free.

More details

  • Words: 1,218
  • Pages: 10
2009 GRUPO ESTUDIANTIL INVENTRONICA Joel Oswaldo Campos Pérez

[CURSO BÁSICO DE PIC ESTRUCTURA DE UN PROGRAMA] En este segmento se describen las principales partes que conforman un código en ensamblador para PIC, se terminara editando un código ejemplo.

Curso básico de PIC

Estructura de un programa

JUEGO DE INSTRUCCIONES

Curso básico de microcontroladores – [email protected]

Página 2

Curso básico de PIC

Estructura de un programa

Estructura de un programa en ensamblador para PIC: ---------------------------------------------------------------------------------------------------------------------------

list p=16f877a #include El primer renglón define que PIC se usara, el segundo renglón es una librería 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 posición de memoria, facilitándonos la edición del programa. --------------------------------------------------------------------------------------------------------------------------__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF

Este renglón CONFIG se llama PALABRA DE CONFIGURACION, y esta formada por diferentes FUSIBLES. Estos FUSIBLES nos sirven para dar ordenes al programador de cómo debe configurar el PIC para su correcto funcionamiento. A continuación veamos para la función de cada FUSIBLE. CP

Código de Protección de programa, si lo habilitamos (ON) evita que otras personas puedan leer el programa contenido en el PIC. Generalmente lo pondremos a OFF.

WDT

Watch Dog Timer, o Temporizador Perro Guardián. Este temporizador resetea el PIC cada determinado tiempo para evitar enciclamientos por error en el programa. Preferentemente hay que apagarlo (OFF).

BODEN

Bit de Permiso para el Reseteo por Caída de Tensión.

PWRTE

Bit de Permiso para el Timer de conexión de alimentación. Se usa para resetear el PIC cada vez que se conecta la fuente de alimentación de nuestra aplicación.

OSC

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.

WRT

Permiso para escritura en Modo FLASH. Se usa cuando en nuestro programa accedemos a la memoria de datos EEPROM.

LVP

Voltaje de programación bajo. Si esta en ON permite programar el PIC con 5V, si esta en OFF programa el PIC con 14V, debemos ponerlo a OFF.

CPD

Código de Protección de Datos. Se usa para evitar que terceros lean lo que hemos escrito en la memoria EEPROM del PIC.

---------------------------------------------------------------------------------------------------------------------------

Curso básico de microcontroladores – [email protected]

Página 3

Curso básico de PIC CBLOCK ENDC

Estructura de un programa 0X20

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 posición 0x20 de la memoria (VER MAPA DE MEMORIA).

--------------------------------------------------------------------------------------------------------------------------ORG goto ORG

0 inicio 5

La línea 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 posición. 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  1 ;RP1  0

Estas dos líneas nos indican que nos movemos al banco 1 que es el banco para configurar los puertos de entrada y salida (ver hoja de Selección de bancos para configurar puertos ( in / out )). --------------------------------------------------------------------------------------------------------------------------movlw movwf

b’00000111’ ADCON1

; W  b’00000111’ ; ADCON1  W

En estas dos líneas estamos mandando a ADCON1 el número 00000111 para configurar todas las entradas analógicas del PIC como digitales (ver hoja de CONFIGURACION DE PINES ( Digitales / Analógicas) ). Nota, la b en b’00000111’ indica que el numero dentro de las comillas es un numero binario. --------------------------------------------------------------------------------------------------------------------------movlw movwf

b’11111111’ TRISA

; W  b’00000111’ ; 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 básico de microcontroladores – [email protected]

Página 4

Curso básico de PIC

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 1’s, asi que todos los pines del PORTA serán ENTRADAS.

--------------------------------------------------------------------------------------------------------------------------clrf

TRISB

; TRISB  b’00000000’

En este renglón estamos limpiando el TRISB, es decir, le estamos mandando puros 0’s. Lo cual quiere decir que estamos volviendo todos los pines del PORTB como SALIDAS.

--------------------------------------------------------------------------------------------------------------------------bcf bcf

STATUS,RP0 STATUS,RP1

;RP0  0 ;RP1  0

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

END

; PORTA,0 = 1 ? ; NO, entonces Ir a apagar ; SI, entonces PORTB,0  1 ; Ir a inicio_principal ; PORTB,0  0 ;Ir a inicio_principal

; FIN DEL PROGRAMA PARA EL COMPILADOR

Curso básico de microcontroladores – [email protected]

Página 5

Curso básico de PIC

Estructura de un programa

Esquema de un programa en ensamblador list p=16f877a #include __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF

CBLOCK ENDC

0X20

INICIO

ORG goto ORG

0 inicio 5

bsf bcf movlw movwf movlw movwf clrf bcf bcf

STATUS,RP0 STATUS,RP1 b’00000111’ ADCON1 b’11111111’ TRISA TRISB STATUS,RP0 STATUS,RP1

; Banco 1 para cofig. Puertos. ; ; Configuramos ; todos los pines como Digitales ; Configuramos ; PORTA como entradas ; Configuramos PORTB como salidas ; Regresamos al Banco 0 ;

PORTA,0 apagar PORTB,0 inicio_principal

; PORTA,0 = 1 ? ; NO, entonces Ir a apagar ; SI, entonces PORTB,0  1 ; Ir a inicio_principal

PORTB,0 inicio_principal

; PORTB,0  0 ;Ir a inicio_principal

Definir el PIC usado e incluir la librería.

Inicio

Inicio_principal btfss goto bsf goto apagar Bcf goto

END

Configurar FUSES

Definir variables

Configurar Puertos

Programa Principal

END

; FIN DEL PROGRAMA PARA EL COMPILADOR

Curso básico de microcontroladores – [email protected]

Página 6

Curso básico de PIC

Estructura de un programa

DIAGRAMA DE PINES PIC16F877A

Curso básico de microcontroladores – [email protected]

Página 7

Curso básico de PIC

Estructura de un programa

Selección de bancos para configurar puertos ( in / out )

MAPA DE MEMORIA:

El Banco 0 es el banco de trabajo, el Banco 1 es el banco de configuración de puertos

Curso básico de microcontroladores – [email protected]

Página 8

Curso básico de PIC

Estructura de un programa

CONFIGURACION DE PINES ( Digitales / Analógicas)

Los pines marcados tienen la función de canales analógicos, pero pueden ser configurados para ser i/o digitales.

Curso básico de microcontroladores – [email protected]

Página 9

Curso básico de PIC

Estructura de un programa

GRUPO ESTUDIANTIL INVENTRONICA

Aclaración de dudas respecto al tema tratado en este trabajo al correo: [email protected]

Curso básico de microcontroladores – [email protected]

Página 10

Related Documents