You are on page 1of 9

LABORATORIO DE DISEO MECATRNICO

Introduccin Eugenio Yime Rodrguez 1. Objetivo:

En este laboratorio el estudiante realizar el primer proyecto con PICs. 2. Equipos necesarios:

Computador de escritorio. 3. 3.1. Pasos a seguir Creacin de un nuevo proyecto a) Cree un nuevo proyecto en MPLAB con el nombre leds. El cdigo del proyecto es el siguiente.
/* Include segun el microcontrolador */ #include <p18f2431.h> /* configuracion de los registros */ #include "config_p18f2431.h" /* programa principal */ void main(void){ /* configurar como entradas/salidas digitales */ ANSEL0=0x00; /* puerto A todos son entrada */ TRISA=0xFF; /* puerto B todos son salidas */ TRISB=0X00; /* valor inicial del puerto B */ /* salidas a cero, leds apagados */ LATB=0x00; /* ciclo eterno ... */ while(1){ /* leer el puero RA0 */ if (PORTAbits.RA0 == 1){ /* pin RA0 en 5V, apagar los leds */ LATB = 0x00; } else { /* pin RA0 en 0V, prender los leds */ /* prender los puertos RB0 a RB3 */ LATB = 0x01; Delay10KTCYx(10); LATB = 0x03; Delay10KTCYx(10); LATB = 0x07; Delay10KTCYx(10); LATB = 0x0F; Delay10KTCYx(10); } /* end if */ } /* end while */ } /* end main */

LABORATORIO DE DISEO MECATRNICO


Introduccin Eugenio Yime Rodrguez b) Agregue al proyecto los archivos p18f2431.h y config_p18f2431.h. Este ltimo es la configuracin del PIC, es decir,
#ifndef __CONFIG_18F2431__ /* Configuration settings available for processor 18F2431 */ /* Oscillator Selection: OSC = LP OSC = XT OSC = HS OSC = RC2 OSC = EC OSC = ECIO OSC = HSPLL OSC = RCIO OSC = IRCIO OSC = IRC OSC = RC1 OSC = RC */ #pragma config OSC = XT /* Fail-Safe Clock Monitor Enable: FCMEN = OFF FCMEN = ON */ #pragma config FCMEN = OFF /* Internal/External Switch-Over: IESO = OFF IESO = ON */ #pragma config IESO = OFF /* Power-up Timer: PWRTEN = ON PWRTEN = OFF */ #pragma config PWRTEN = OFF /* Brown-out Reset: BOREN = OFF BOREN = ON */ #pragma config BOREN = OFF /* Brown-out Voltage: BORV = 45 BORV = 42 BORV = 27 BORV = 20 */ #pragma config BORV = 20

LP XT HS External RC, RA6 is CLKOUT EC, RA6 is CLKOUT EC, RA6 is I/O HS-PLL Enabled External RC, RA6 is I/O Internal RC, RA6 & RA7 are I/O Internal RC, RA6 is CLKOUT, RA7 is I/O External RC, RA6 is CLKOUT External RC, RA6 is CLKOUT

Disabled Enabled

Disabled Enabled

Enabled Disabled

Disabled Enabled

4.5V 4.2V 2.7V 2.0V

LABORATORIO DE DISEO MECATRNICO


Introduccin Eugenio Yime Rodrguez

/* Watchdog Timer: WDTEN = OFF WDTEN = ON */ #pragma config WDTEN = OFF /* Watchdog Timer Enable Window: WINEN = ON WINEN = OFF */ #pragma config WINEN = OFF /* Watchdog Postscaler: WDPS = 1 WDPS = 2 WDPS = 4 WDPS = 8 WDPS = 16 WDPS = 32 WDPS = 64 WDPS = 128 WDPS = 256 WDPS = 512 WDPS = 1024 WDPS = 2048 WDPS = 4096 WDPS = 8192 WDPS = 16384 WDPS = 32768 */ #pragma config WDPS = 32768 /* Timer1 Oscillator MUX: T1OSCMX = OFF T1OSCMX = ON */ #pragma config T1OSCMX = ON /* High-Side Transistors Polarity: HPOL = LOW HPOL = HIGH */ #pragma config HPOL = HIGH /* Low-Side Transistors Polarity: LPOL = LOW LPOL = HIGH */ #pragma config LPOL = LOW /* PWM output pins Reset state control: PWMPIN = ON PWMPIN = OFF

Disabled Enabled

Enabled Disabled

1:1 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256 1:512 1:1024 1:2048 1:4096 1:8192 1:16384 1:32768

Active Inactive

Active low Active high

Active low Active high

Enabled Disabled

LABORATORIO DE DISEO MECATRNICO


Introduccin Eugenio Yime Rodrguez
*/ #pragma config PWMPIN = OFF /* MCLR Enable: MCLRE = OFF MCLRE = ON */ #pragma config MCLRE = OFF /* Stack Overflow Reset: STVREN = OFF STVREN = ON */ #pragma config STVREN = ON /* Low Voltage Programming: LVP = OFF LVP = ON */ #pragma config LVP = ON /* Background Debugger Enable: DEBUG = ON DEBUG = OFF */ #pragma config DEBUG = ON /* Code Protection Block 0: CP0 = ON CP0 = OFF */ #pragma config CP0 = OFF /* Code Protection Block 1: CP1 = ON CP1 = OFF */ #pragma config CP1 = OFF /* Code Protection Block 2: CP2 = ON CP2 = OFF */ #pragma config CP2 = OFF /* Code Protection Block 3: CP3 = ON CP3 = OFF */ #pragma config CP3 = OFF /* Boot Block Code Protection:

Disabled Enabled

Disabled Enabled

Disabled Enabled

Enabled Disabled

Enabled Disabled

Enabled Disabled

Enabled Disabled

Enabled Disabled

LABORATORIO DE DISEO MECATRNICO


Introduccin Eugenio Yime Rodrguez
CPB = ON CPB = OFF */ #pragma config CPB = OFF /* Data EEPROM Code Protection: CPD = ON CPD = OFF */ #pragma config CPD = OFF /* Write Protection Block 0: WRT0 = ON WRT0 = OFF */ #pragma config WRT0 = OFF /* Write Protection Block 1: WRT1 = ON WRT1 = OFF */ #pragma config WRT1 = OFF /* Boot Block Write Protection: WRTB = ON WRTB = OFF */ #pragma config WRTB = OFF /* Configuration Register Write Protection: WRTC = ON WRTC = OFF */ #pragma config WRTC = OFF /* Data EEPROM Write Protection: WRTD = ON WRTD = OFF */ #pragma config WRTD = OFF /* Table Read Protection Block 0: EBTR0 = ON EBTR0 = OFF */ #pragma config EBTR0 = OFF /* Table Read Protection Block 1: EBTR1 = ON EBTR1 = OFF */ #pragma config EBTR1 = OFF Enabled Disabled

Enabled Disabled

Enabled Disabled

Enabled Disabled

Enabled Disabled

Enabled Disabled

Enabled Disabled

Enabled Disabled

Enabled Disabled

LABORATORIO DE DISEO MECATRNICO


Introduccin Eugenio Yime Rodrguez
/* Boot Block Table Read Protection: EBTRB = ON EBTRB = OFF */ #pragma config EBTRB = OFF #endif

Enabled Disabled

c) Compile el proyecto. d) Abra Proteus y cree un proyecto con la siguiente configuracin,

e) Ejecute la simulacin en Proteus f) Observe y describa el comportamiento. 3.2. Explicacin del cdigo

LABORATORIO DE DISEO MECATRNICO


Introduccin Eugenio Yime Rodrguez La primera seccin del cdigo contiene los archivos (llamados utilizando un include) para las definiciones de las funciones a utilizar, las definiciones del microcontrolador utilizadas por C18 y la configuracin del microcontrolador acorde con nuestros requerimientos.
/* Include segun el microcontrolador */ #include <p18f2431.h> /* configuracion de los registros */ #include "config_p18f2431.h"

El archivo config_p18f2431.h es autoexplicativo, por lo que se recomienda su lectura. Las siguientes lneas de cdigo estn relacionadas con la configuracin de los pines del microcontrolador. El registro ANSEL0 est relacionado con la configuracin del puerto A, los otros registros de este puerto son: PORTA, LATA, TRISA, ANSEL0 y ANSEL1. Tanto ANSEL0 como ANSEL1 definen si los pines del puerto se comportan como entrada/salida digital o como entrada anloga. La definicin de ANSEL0 y ANSEL1 es.
/* configurar como entradas/salidas digitales */ ANSEL0=0x00; /* puerto A todos son entrada */ TRISA=0xFF; /* puerto B todos son salidas */ TRISB=0X00; /* valor inicial del puerto B */ /* salidas a cero, leds apagados */ LATB=0x00;

Si el bit relativo con el puerto es 0 se considera que el pin es entrada/salida digital por el contrario si es 1 se considera que es entrada anloga. El registro TRISA se encarga de definir la direccin de pin configurado como entrada/salida digital. Si el bit es 1 se considera el pin como entrada digital y si es 0 el pin es una salida digital. El registro LATA se encarga de sefinir la salida de un pin configurado como salida digital. Un 1 significa que el pin emite un voltaje de 5V, un cero hace que el pin se coloqu en 0V. El registro PORTA por otro lado contiene la entrada de un pin configurado como entrada digital. Un 1 significa que al pin le llegan 5V, un cero es que el pin se encuentra a 0V. El puerto B por otro lado, se configura con los registro PORTB, LATB yTRISB. Como el pin no tiene entradas anlogas no posee un registro ANSEL.

LABORATORIO DE DISEO MECATRNICO


Introduccin Eugenio Yime Rodrguez

LABORATORIO DE DISEO MECATRNICO


Introduccin Eugenio Yime Rodrguez
/* ciclo eterno ... */ while(1){ /* leer el puero RA0 */ if (PORTAbits.RA0 == 1){ /* pin RA0 en 5V, apagar los leds */ LATB = 0x00; } else { /* pin RA0 en 0V, prender los leds */ /* prender los puertos RB0 a RB3 */ LATB = 0x01; Delay10KTCYx(10); LATB = 0x03; Delay10KTCYx(10); LATB = 0x07; Delay10KTCYx(10); LATB = 0x0F; Delay10KTCYx(10); } /* end if */ } /* end while */

En esta seccin del cdigo se ingresa a un bucle eterno, definido por un while(1), el cual hace que todas las instrucciones que siguen a continuacin se repitan de forma indefinida. Esto es comn en la programacin de microcontroladores, algo diferente a los programas en PC. La lgica del programa consiste en la lectura del pin RA0 donde se encuentra ubicado un pulsador. Si el pin esta activo significa que el pulsador no se ha presionado, por lo que no procede con la encendida de los leds. Cuando se presione el pulsador, el voltaje del pin RA0 baja a 0V y comienza el proceso de encendido de los leds usando el registro LATB. Para que el usuario vea cmo cambian los leds se utiliza la funcin de demora Delay10KTCYx la cual hace que se demore diez mil ciclos de reloj del PIC por cada valor ingresado, es decir en el caso de Delay10KTCYx(10) se demora 100.000 ciclos de reloj. 3.3. Actividad Independiente a Realizar

Modifique el programa de manera que los LEDs prendan y apaguen de forma secuencial. Posteriormente que sean dos frecuencias de encendido y apagado, una cuando el botn no est presionado y otra cuando se presione.

You might also like