Sunteți pe pagina 1din 18

MINISTERIO DE EDUCACION SUPERIOR INSTITUTO UNIVERSITARIO DE TECNOLOGIA AGRO INDUSTRIAL PROGRAMA DE FORMACION EN ELECTRICIDAD SAN CRISTOBAL ESTADO TACHIRA

DEPARTAMENTO: PNF Electricidad UNIDAD CURRICULAR: Automatizacin I TRIMESTRE: X

ESPECIALIDAD: Electricidad CODIGO: UNID/CREDITO: 03 PRACTICA N 1

PROGRAMACIN PIC-LENGUAJE C

OBJETIVOS: Programar entradas y salidas de microcontroladores usando lenguaje C Compilar y depurar los programas Simular y comprobar el funcionamiento.

MARCO TEORICO:
A continuacin se explicar brevemente sobre los microcontroladores, algunas caractersticas principales del PIC 16F84A, directivas de programacin en lenguaje C, para as llegar al desarrollo de pequeos proyectos y su simulacin.

Microcontroladores:
Un microcontrolador es un circuito integrado o chip que incluye en su interior las tres unidades funcionales de una computadora: CPU, Memoria y Unidades de E/S, es decir, se trata de un computador completa en un solo circuito integrado. Figura 1. Microcontroladores

Material preparado por: MSc. Ing. Carlos Camargo

C-4222/1

Un microcontrolador difiere de un microprocesador normal, debido a que es ms fcil convertirla en una computadora en funcionamiento, con un mnimo de chips externos de apoyo. La idea es que el chip se coloque en el dispositivo, enganchado a la fuente de energa y de informacin que necesite, y eso es todo. Un microprocesador tradicional no le permitir hacer esto, ya que espera que todas estas tareas sean manejadas por otros chips. Hay que agregarle los mdulos de entrada/salida (puertos) y la memoria para almacenamiento de informacin. Por ejemplo, un microcontrolador (Figura 2) tpico tendr un generador de reloj integrado y una pequea cantidad de memoria RAM y ROM/EPROM/EEPROM/FLASH, significando que para hacerlo funcionar, todo lo que se necesita son unos pocos programas de control y un cristal de sincronizacin. Los microcontroladores disponen generalmente tambin de una gran variedad de dispositivos de entrada/salida, como convertidores de analgico a digital, temporizadores, UARTs y buses de interfaz serie especializados, como I2C y CAN. Frecuentemente, estos dispositivos integrados pueden ser controlados por instrucciones de procesadores especializados. Los modernos microcontroladores frecuentemente incluyen un lenguaje de programacin integrado, como el Lenguaje C y BASIC que se utiliza bastante con este propsito. Figura 2. Estructura General de un Microcontrolador

Familia de Microcontroladores: Entre los PIC mas utilizados tenemos: PIC16F84 (Considerado obsoleto, pero imposible de descartar y muy popular) PIC16F84A (Buena actualizacin del anterior, algunas versiones funcionan a 20 MHz, compatible 1:1) La familia PIC16F87X y PIC16F87XA (los hermanos mayores del PIC16F84, con cantidad de mejoras incluidas en hardware. Bastante comn en proyectos de aficionados) Otros.

En la Figura 3 se representa el diagrama de bloques del PIC 16C84 del que podemos resaltar las siguientes Material preparado por: MSc. Ing. Carlos Camargo C-4222/2

caractersticas: Memoria de programa EEPROM de 1Kx14 bits Memoria de datos dividida en 2 reas: o rea RAM formada por 22 registros de propsito especfico (SFR) y 36 de propsito general (GPR). o rea EEPROM formada por 64 bytes. Recursos conectados al bus de datos: Puerto A de 5 bits <RA0:RA4>, Puerto B de 8 bits <RB0:RB7>, Temporizador con Preescaler (divisor) TMR0, etc. Figura 3. PIC16F84

Material preparado por: MSc. Ing. Carlos Camargo

C-4222/3

- PINES Y FUNCIONES Los PUERTOS son el puente entre el microcontrolador y el mundo exterior. Son lneas digitales que trabajan entre cero y cinco voltios y se pueden configurar como entradas o como salidas. El PIC 16F84 tiene dos puertos. El puerto A con 5 lneas y el puerto B con 8 lneas. Cada pin se puede configurar como entrada o como salida independiente programado por un par de registros diseados para tal fin. En ese registro un "0" configura el pin del puerto correspondiente como salida y un "1" lo configura como entrada. - PUERTO A RA0 = Pin de Entrada/Salida (TTL). RA1 = Pin de Entrada/Salida (TTL). RA2 = Pin de Entrada/Salida (TTL). RA3 = Pin de Entrada/Salida (TTL). RA4/TOCKI = Pin de Entrada/Salida o entrada de Reloj Externo para el TMR0, cuando este pin se configura como salida es de tipo Open Drain (ST), cuando funciona como salida se debe conectar a Vcc (+5V) a travs de una resistencia( pruebe con PULL-UP). - PUERTO B RB0/INT = Pin de Entrada/Salida o entrada de interrupcin externa. (TTL/ST). RB1 = Pin de Entrada/Salida (TTL). RB2 = Pin de Entrada/Salida (TTL). RB3 = Pin de Entrada/Salida (TTL). RB4 = Pin de Entrada/Salida con Interrupcin por cambio de Flanco (TTL). RB5 = Pin de Entrada/Salida con Interrupcin por cambio de Flanco (TTL). RB6 = Pin de Entrada/Salida con Interrupcin por cambio de Flanco (TTL/ST). RB7 = Pin de Entrada/Salida con Interrupcin por cambio de Flanco (TTL/ST). Material preparado por: MSc. Ing. Carlos Camargo C-4222/4

- PINES ADICIONALES MCLR = Pin de Reset del Microcontrolador (Master Clear). Se activa (el pic se resetea) cuando tiene un "0" lgico en su entrada. Vss = Ground o Tierra VDD = Fuente Positiva (+5V) OSC2/CLKOUT = Entrada del Oscilador del Cristal. Se conecta al Cristal o Resonador en modo XT (Oscilador de Cristal). En modo RC (Resistencia-Condensador), este pin acta como salida el cual tiene 1/4 de la frecuencia que entra por el pin OCS1/CLKIN. OSC1/CLKIN = Entrada del Oscilador del Cristal / Entrada de reloj de una Fuente Externa. El Puerto B tiene Internamente unas resistencias de pull-up conectadas a sus pines (sirven para fijar el pin a un nivel de cinco voltios), su uso puede ser habilitado o deshabilitado bajo control del programa. Todas las resistencias de pull-up conectan o desconectan a la vez. La resistencia de pull-up es desconectada automticamente en un pin si este se programa como salida. El pin RB0/INT se puede configurar por software para que funcione como interrupcin externa. El pin RA4/TOCKI del puerto A puede ser configurado como un pin de entrada/salida como se mencionaba anteriormente o como entrada del temporizador/contador. Cuando este pin se programa como entrada digital, funciona como un disparador de Schmitt (Schmitt trigger, ST), esto quiere decir que puede reconocer seales un poco distorsionadas y llevarlas a niveles lgicos (cero y cinco voltios). Cuando se usa como salida digital se comporta como colector abierto, por lo tanto se debe poner una resistencia de pull-up (resistencia externa conectada a un nivel lgico de cinco voltios). Como salida, la lgica es inversa: un "0" escrito al pin del puerto entrega en el pin un "1" lgico. FUSIBLES DE CONFIGURACION El PIC 16F84 posee cinco fusibles, cada uno de los cuales es un bit. Estos fusibles se pueden programas para seleccionar varias configuraciones del dispositivo: tipo de oscilador, proteccin de cdigo, habilitacin del circuito de vigilancia y el temporizador al encendido. Cuando se programa la proteccin del cdigo, el contenido de cada posicin de la memoria no se puede leer completamente, de tal manera que el cdigo del programa no se puede reconstruir. Adicionalmente, todas las posiciones de memoria del programa se protegen contra la reprogramacin. Una vez protegido el cdigo, el fusible de proteccin solo puede ser borrado (puesto a 1) si se borra toda la memoria del programa y la de datos.

Material preparado por: MSc. Ing. Carlos Camargo

C-4222/5

Programacin de Microcontroladores (PIC) Si queremos realizar la programacin de los microcontroladores PIC en un lenguaje como el C, es preciso utilizar un compilador de C. Dicho compilador nos genera archivos en formato Intel-hexadedimal (codigo maquina), que es el necesario para programar (utilizando un programador de PIC) un microcontrolador de 6, 8, 18 40 patillas. El compilador de C que vamos a utilizar es el PCW de la casa CCS Inc. A su vez, el compilador lo integraremos en un entorno de desarrollo integrado (IDE) que nos va a permitir desarrollar todas y cada una de las fases que se compone un proyecto, desde la edicin hasta la compilacin pasando por la depuracin de errores. La ltima fase, a excepcin de la depuracin y retoques hardware finales, ser la simulacin con Proteus. Al igual que el compilador de Turbo C, ste "traduce" el cdigo C del archivo fuente (.C) a lenguaje mquina para los microcontroladores PIC, generando as un archivo en formato hexadecimal (.HEX). Adems de ste, tambin genera otros seis ficheros. Es importante resaltar que el alumno maneja las instrucciones de lenguaje C vistas en la unidad curricular Computacin I, por lo tanto aqu explicaremos solo las instrucciones, las libreras y directivas propias de los microcontroladores. DIRECTIVAS DEL PREPROCESADOR #BYTE Identificador = X El identificador referenciar un objeto en la posicin de memoria x(un byte), donde x puede ser una constante u otro identificador. Ejemplos: #byte status = 3 #byte puerto_b = 6 #byte puerto_a = 5 Puede usar instrucciones como: puerto_b=0; puerto_b++; --puerto_a; Pone a cero todo el puerto B Incrementa el contenido del puerto B Decrementa en una unidad el puerto A.

DIRECTIVAS DEL C STANDAR #DEFINE Identificador CADENA Se utiliza simplemente para reemplazar el Identificador (ID) con CADENA Ejemplo: #define BITS 8 #define rotar(x) (x<<4) a=a+BITS; // Es lo mismo que a=a+8; Material preparado por: MSc. Ing. Carlos Camargo C-4222/6

a=rotar(a); // Es lo mismo que a=(a<<4); #INCLUDE "Nombre_Fichero" Esta directiva hace que el compilador incluya en el ARCHIVO fuente el texto que contiene el archivo especificado en <Nombre_Fichero>.Si el nombre del fichero se incluye entre los smbolos '< >' el compilador busca el fichero en el directorio INCLUDE. Si se pone entre comillas dobles " " el compilador busca primero en el directorio actual o directorio de trabajo y si no lo encuentra, entonces lo busca en los directorios INCLUDE del compilador. Ejemplo: #include <16F84a.H> ESPECIFICACIN DE DISPOSITIVOS #DEVICE CHIP Esta directiva define al compilador la arquitectura hardware utilizada. Esto determina la memoria RAM y ROM as como el juego de instrucciones. Para los chips (uC's, memorias, etc) con ms de 256 bytes de RAM se puede seleccionar entre punteros de 8 o 16 bits. Para usar punteros de 16 bits hay que aadir *=16 despus del nombre del chip (uC, memoria, ...) o en una nueva lnea despus de la declaracin del chip. Se puede obtener informacin sobre un dispositivo con el programa PICCHIPS. Ejemplos: #device PIC16C67 *=16 #device PIC16f84 #FUSES opciones Esta directiva define qu fusibles deben activarse en el dispositivo cuando se programe. Esta directiva no afecta a la compilacin; sin embargo, esta informacin se pone en el archivo de salida. Si los fusibles necesitan estar en formato Parallax, hay que agregar PAR en opciones. Utilizar la utilidad PICCHIPS para determinar qu opciones son vlidas para cada dispositivo. La opcin SWAP tiene la funcin especial de intercambiar, los bytes alto y bajo de los datos que no son parte del programa, en el archivo Hex. Esta informacin es necesaria para algunos programadores de dispositivos. Algunas de las opciones ms usadas son:

LP, XT, HS, RC (Oscilador externo utilizado) WDT, NOWDT (active o desactiva el temporizador perro guardin), si esta activado hay que Resetearlo

con restart_wdt(); en puntos clave del programa, para impedir el Reset de PIC cuando este se desborda.

PROTECT, NOPROTECT (Activa o desactiva la proteccin del cdigo: protegido. El programa no se puede leer, evitando copias, tampoco se puede sobre escribir. Adems evita que pueda ser accedida la EPROM de datos. Si se trata de modificar este parmetro una vez grabado el PIC se borra la EPROM.)

PUT, NOPUT (Activa el temporizador Power Up Timer el cual retrasa 72ms la puesta en marcha Reset Material preparado por: MSc. Ing. Carlos Camargo C-4222/7

que se produce al conectar la alimentacin al PIC para garantizar la estabilidad de la tensin aplicada. Ejemplo: #fuses INTRC,NOWDT (Indica que el Pic usar el reloj interno, adems desactiva el perro guardin)

Nota: Es importante resaltar que estos fusibles deben ser declarados a la hora de grabar definitivamente el PIC. En la simulacin que abordaremos en esta prctica por comodidad generalmente no los definimos, ya que algunos no afectan la simulacin o los configuramos en el simulador. LIBRERAS INCORPORADAS #USE DELAY (CLOCK=frecuencia) Esta directiva indica al compilador la frecuencia del procesador, en ciclos por segundo, a la vez que habilita el uso de las funciones DELAY_MS() y DELAY_US(). Opcionalmente podemos usar la funcin restart_WDT() para que el compilador reinicie el WDT durante el retardo. Ejemplos: #use delay (clock=20000000) #use delay (clock=32000, RESTART_WDT) #USE FAST_IO (puerto) Esta directiva afecta al cdigo que el compilador generar para las instrucciones de entrada y salida. Este mtodo rpido de hacer I/O ocasiona que el compilador realice I/O sin programar el registro de direccin. El puerto puede ser A-G. Ejemplo: #use fast_io(A) FUNCIONES DE I/O DISCRETA set_tris_a(value) set_tris_b(value) Estas funciones permiten escribir directamente los registros tri-estado para la configuracin de los puertos. Esto debe usarse con FAST_IO() y cuando se accede a los puertos de I/O como si fueran memoria, igual que cuando se utiliza una directiva #BYTE. Cada bit de value representa una patilla. Un '1' indica que la patilla es de entrada y un '0' que es de salida. Ejemplo: set_tris_a( 0x00 ); // pone todas la Ao-A4, como salidas de datos. set_tris_b( 0x0f ); // pone B0, B1, B2 y B3 como entradas; B4, B5, B6 y B7, como salidas, en un PIC 16c84 set_tris_b(0b00001111); // pone B0, B1, B2 y B3 como entradas; B4, B5, B6 y B7, como salidas. Se pueden usar instrucciones para salida de datos y entrada de datos como (standard_io(puerto): #use estandard_io(puerto); output_bit(PIN_B4,1); input((PIN_B0); puerto A o B #use fixed_io(b_outputs=PIN_B0,PIN_B1.PIN_Bn) //Pone a 1 RB4

//Lee el pin RB0 //Pone PIN_B0 a 1 //Pone PIN_B1 a 0 C-4222/8

output_a(x); muestra por el Puerto A el valor de la variable x. output_high(PIN_B0); output_low(PIN_B1);

Material preparado por: MSc. Ing. Carlos Camargo

FUNCIONES DE RETARDOS DELAY_MS(time) Esta funcin realiza retardos del valor especificado en time. Dicho valor de tiempo es en milisegundos y el rango es 0-65535. Para obtener retardos ms largos as como retardos 'variables' es preciso hacer llamadas a una funcin separada; vase el ejemplo siguiente. Es preciso utilizar la directiva #use delay(clock=frecuencia) antes de la llamada a esta funcin, para que el compilador sepa la frecuencia de reloj. Ejemplos: #use delay (clock=4000000) // reloj de 4MHz delay_ms( 2 ); // retardo de 2ms void retardo_segundos(int n) { // retardo de 'n' segundos; 0 <= n => 255 for (; n!=0; n--) delay_ms( 1000 ); // 1 segundo } DELAY_US(time) Esta funcin realiza retardos del valor especificado en time. Dicho valor es en microsegundos y el rango va desde 0 a 65535. Es necesario utilizar la directiva #use delay antes de la llamada a esta funcin para que el compilador sepa la frecuencia de reloj. Ejemplos: #use delay(clock=20000000) delay_us(50); int espera = 10; delay_us(espera);

Otras directivas las pueden consultar en el MANUAL DE USUARIO DELCOMPILADOR PCW DE CCS.

PRE-LABORATORIO:
1.-Revisar el marco terico. 2.-Revisar las instrucciones del Lenguaje C). (IF, DoWhile(), While(), x++, --x,arreglos, entre otras). 3.- Investigar sobre la estructura interna del PIC16F84. 4.- Analizar los programas del laboratorio.

LABORATORIO:PARTE EXPERIMENTAL
Material preparado por: MSc. Ing. Carlos Camargo C-4222/9

EJERCICIO Nro.1 Lo primero es crear un proyecto en Lenguaje C y luego simular con Proteus, como se indica a continuacin: 1.- Editar y compilar el proyecto: 1.1.- Arranque del programa. En INICIO-Programas, seleccionar PIC-C- PIC-C COMPILER 1.2.- En la barra de men, seleccionar FILE-NEW Source - File 1.3.- En la siguiente ventana, dar un nombre y guardar. (se recomienda crear una carpeta nueva) 1.4.- Editar el programa siguiente: /* Programa que hace titilar el Led RB7 cada 1ms*/ #include <16f84a.h> #byte puerto_b=06 main() { set_tris_b(0x00); puerto_b=0; do{ delay_us(1000); delay_us(1000); }while(true); /*Retarde 1ms*/ /*Espera 1ms*/ /*Repetir Siempre*/ bit_set(puerto_b,7); /*Pone a 1 la salida RB7*/ bit_clear(puerto_b,7); /*Pone a 0 la salida RB7*/ } /*Fin del Programa*/ 1.5.- Para compilar. Seleccionar en la barra de men la opcin: Compile o F9. 1.6.- Corregir hasta obtener cero errores. 1.7.- Guardar. 2.- Simular con PROTEUS. Proteus es una herramienta que nos facilita la simulacin de nuestros proyectos en microcontroladores. A continuacin se indica el procedimiento para simular el proyecto anterior: 2.1.- Procedimiento de Arranque del programa: - Inicio -> Programas -> Proteus 6 Professional -> ISIS 6 Professional. - La forma corta es dar doble click en el icono del programa ubicado en el escritorio. Para simular un circuito, elegimos todos los componentes, luego los pegamos en el rea de trabajo, configuramos los valores y conectamos todos los dispositivos, por ultimo simulamos, como se indica a
Material preparado por: MSc. Ing. Carlos Camargo C-4222/10

/* tipo de PIC utilizado*/ /*Direccin Puerto B, trabaja con puerto_b=x*/

#use delay(clock=4000000) /*Reloj 4Mhz*/

/*Configurar Puerto B como Salida*/ /*Todas las salidas del puerto B a cero*/

continuacin. 2.2.- Dar un click en el botn Pick Devices localizado en la parte izquierda de la pantalla debajo de la pantalla de exploracin del diagrama para abrir la forma del mismo nombre. 2.3- En la ventana Libraries (Parte superior izquierda) buscar la Category Microprocessor ICs, y dar un click sobre ella. 2.3.- En la ventana Derecha (Results) elegir el componente PIC16F84a dando doble click sobre el nombre. Se puede observar que en la ventana DEVICES aparece el nombre del componente elegido. Si es el nico componente que se va a elegir se puede cerrar la forma Pick Devices, pero si es necesario ms de uno, se puede continuar eligiendo los componentes necesarios para nuestro diseo. 2.4.- En la Category Optoelectronics y Sub-Category LEDs, dar doble click sobre el componente LED-RED. 2.5.- Cerrar la Forma Pick Devices en el botn estndar. (La cruz en la esquina superior derecha) 2.6.- Dar un click en la palabra PIC16F84a de la ventana DEVICES y observar que aparece el componente en la pantalla de exploracin del circuito. 2.7.- Explorar las funciones de orientacin del componente, parte inferior izquierda de la pantalla.

Aqu seleccione los componentes

Aqu seleccione la tierra y Puesta a VCC

Dar click para simular

Material preparado por: MSc. Ing. Carlos Camargo

C-4222/11

2.8.- Comenzando por la izquierda presionar cada uno de los botones de orientacin. 2.9.- En el cuadro de texto se puede introducir un ngulo pero slo acepta valores de (0, +/-90, +/180, +/-270), por lo que es mejor manejar la orientacin por medio de los botones. Este mismo cuadro de texto muestra el ngulo actual obtenido al presionar los botones. 2.10.- Dejar el componente en la posicin inicial. 2.11.- Con el componente seleccionado dar un click en el rea de trabajo, con lo que se logra colocar el componente en el rea de trabajo. 2.12.- Repetir el procedimiento anterior con el componente LED. 2.13.- Configurar los componentes de la siguiente manera. a.- Dar un click con el botn derecho sobre el componente PIC16F84. Notar que su contorno cambia a rojo. b.- Dar un click ahora con el botn izquierdo para abrir la forma Edit Component. c.- Modificar el campo archivo del programa compilado .HEX, indicndole el programa que usted compilo en la carpeta que fue guardado, Modificar el valor del campo frecuencia a 4MHz. d.- Presionar el botn OK. 2.14.- Realizar la conexin de los componentes de la siguiente forma: a.- Colocar el puntero del mouse en el extremo superior del pin RB7 de PIC. Aparece una cruz en el extremo de la flecha. b.- Dar un click para habilitar la conexin por medio de cable. c.- Desplazar el mouse (desaparece la cruz) hasta el extremo superior del componente LED y lograr que vuelva a aparecer la cruz en el extremo de la flecha. d.- Dar otro click para realizar la conexin. 2.15.- Conectar el smbolo de Tierra, dar un clic a la herramienta Terminal (Ubicado en la Barra de herramientasl), seleccionar GROUND. 2.16.- Probar el funcionamiento del circuito presionando el botn play que se encuentra en la parte inferior de la pantalla.

Material preparado por: MSc. Ing. Carlos Camargo

C-4222/12

2.17.- Guardar el circuito. a.- Seleccionar la herramienta Save current design. b.- Dar un click en el botn crear una nueva carpeta y darle un nombre. c.- En el campo Nombre de archivo nombrar al archivo como Ejercicio 1. dar un click en el botn guardar o presionar la tecla ENTER.

EJERCICIO Nro. 2 1.- Compilar el siguiente Programa. Contador del 0 al 9 cada 0,5s y vuelta a empezar. La cuenta se mostrar en Led a travs del puert B. #include <16f84a.h> //pic a utilizar #use delay (clock=4000000) // Clock=4Mhz #use stanard_io(B) //Puerto B (trabaja con la funcin output_b) main() { int c=0; // deeclaro contador como entero( 1 byte) e inicializado en cero set_tris_b(0x00); do{ //Repetir... //muestra por puerto b digitos 0-9 //portb como salida //disable_interrupts(GLOBAL); //todas las interrupciones desactivadas output_b(c); c++; if(c>9) { c=0; } }while(TRUE); } //...infinito //SI -> vuelve a empezar(digito 0)

delay_ms(500); //incremento contador para visualizar siguiente digito //ya se ha mostrado el digito 9?

Material preparado por: MSc. Ing. Carlos Camargo

C-4222/13

2. Simular con PROTEUS


1 5 1 6 O 1 LI S / K CC N 4 MR C L O 2 LO S / KU CC T

U 1
P 1F A I 68 C 4

R / 0K A TC 4 I

R /N BI T 0

R B 7

R B 6

R B 5

R B 4

R B 3

R B 2

R B 1

R A 3

R A 2

R A 1 1 8 1 7

1 3

1 2

1 1

1 0

R 7
30 0

R 6
30 0

R 5
30 0

R 4
30 0

R 3
30 0

R 2
30 0

R A 0

R 1
30 0

3.- Modifique el programa para contar hasta 64. 4.- Analizar las instrucciones utilizadas, comparar output_b(x) con puerto_b=x. EJERCICIO 3 1.- Compilar el siguiente Programa. Contador ascendente/descendente en binario. Sobre los 8 leds de salida conectados a la puerta B del PIC16F84A se visualizar, en binario el nmero de pulsos aplicados por la entrada RA1. RA0 determina si la cuenta es ascendente (a "1") o descendente. Adems se contempla la eliminacin del efecto rebote- que produce la apertura y cierre del contacto del interruptor que genera los pulsos. Eliminando dicho efecto mediante temporizacin por software. #include <16f84a.h> #use delay(clock=4000000,RESTART_WDT) #byte puerto_a = 5 #byte Puerto_b = 6 void main() { SET_TRIS_A(0x1F);

Material preparado por: MSc. Ing. Carlos Camargo

C-4222/14

SET_TRIS_B(0x00); Puerto_b = 0; while(1) { do { restart_wdt(); // resetear WDT // Esperar flanco ascendente

} while(input(PIN_A1)); delay_ms(20); do { restart_wdt(); } while(!input(PIN_A1)); delay_ms(20); if(input(PIN_A0)) Puerto_b++; else

// Esperar flanco descendente

OSC2/CLKOUT OSC1/CLKIN

MCLR

Puerto_b--; } // Cierre de while(1)


RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT

15 16

U?
PIC16F84A

} // Cierre de void main()

2. Simular con PROTEUS

13 12 11 10 9 8 7 6

3 2 1 18 17

RA4/T 0CKI RA3 RA2 RA1 RA0

R1

R2
300

R3
300

R?
300

R4
300

R5
300

R6
300

R7
300

R8

Material preparado por: MSc. Ing. Carlos Camargo

C-4222/15

Bienvenido al maravilloso mundo de la microelectrnica programable. Suerte

POST LABORATORIO A continuacin se presentan una serie de proyectos, los cuales sern asignados por el profesor. Cada proyecto debe llevar su respectivo: diagrama de flujo, esquema elctrico y programacin en lenguaje c.

1. Elabore un proyecto que permita titilar dos (2) LED (RA3,RA4), cada

2ms.

2. Elabore un proyecto que permita leer 4 entradas digitales BCD por el puerto A y luego mostrarlas por el puerto B en un Display BCD 7segmentos. Si la cuenta es mayor a 6 debe titilar el un LED en RA4. 3. Elabore un proyecto que permita leer 4 entradas digitales BCD por el puerto B y luego mostrarlas por el puerto A en un Display Hex. Si la cuenta es mayor a 9 debe titilar el un LED en RA4. 4. Elabore un proyecto que permita leer 4 entradas digitales por el puerto B y luego mostrarlas por el puerto A en LED. Si la cuenta es mayor a 5 debe titilar el un LED en RA4.
Material preparado por: MSc. Ing. Carlos Camargo C-4222/16

5. Elabore un proyecto que permita leer 4 entradas digitales por el puerto A si el valor es superior a 9 emitir un sonido de 1khz, por el PIN_A4, durante un seg. 6. Elabore un proyecto que permita leer 4 entradas digitales BCD por el puerto B y luego mostrarlas por el puerto A en un Display Hex. Si la cuenta es mayor a 9 emitir un sonido de alarma de 3Khs en RA4, durante 500 ms. 7. Contador Anillo. Sobre los 5 leds de salida conectados al puerto A se visualizar, en binario, el contador anillo de 5 etapas:10000-01000-0010000010-00001-10000-01000-00100-00010-00001(USAR OPERADOR >>) 8. Realizar el programa para controlar un semforo, utilizar el elemento que se encuentra en Proteus librera miscellaneus componente TRAFFICS LIGHTS. Usar los puertos: RB0,RB1,RB2-RA2,RA3,RA4. 9. Realizar un proyecto que genere en un LED conectado en la lnea de salida A4, del PIC, una onda cuadrada simtrica de un Khz. 10 Realizar un proyecto que genere en un LED conectado en la lnea de salida A4, del PIC, una onda cuadrada asimtrica, que durante 0.5seg saque nivel alto y durante 1.30 seg. nivel bajo. 11. Realizar un programa que genere en un LED conectado en la lnea de salida A4, del PIC, una onda cuadrada simtrica de 1Khz, si una entrada digital en el pin A0, esta en bajo 10Khz, si esta en alto. 12. Disear un dado electrnico. Alimentar un contador programado en el PIC 1-6 ascendente y descendente 6-1, con un generador de pulsos a travs de un pulsador en RA0, desplegando en un Display 7Seg. El valor aleatorio 1-6 cada vez que se active y desactive el pulsador. 13 Disear un dado electrnico. Disear un contador programado en el PIC 1-6 ascendente y descendente 6-1, cada vez que se active y desactive un pulsador en RA0, se debe desplegar en un Display 7Seg. el valor aleatorio 16 que tenga en ese momento el contador.

Material preparado por: MSc. Ing. Carlos Camargo

C-4222/17

BIBLIOGRAFA MANUAL DE USUARIO DELCOMPILADOR PCW DE CCS .www.cursos.ucv.cl/eie48700/referencias/CCS_C_Manual.pdf http://html.rincondelvago.com/microcontrolador-pic-16f84.html M. Jos M Angulo U. (2007). Microcontroladores <<PIC>> Diseo prctico de aplicaciones. Mc Graw Hil

ELABORADO POR: MSc. Ing. Carlos Camargo


-

VIGENCIA:

Octubre 2010

Material preparado por: MSc. Ing. Carlos Camargo

C-4222/18

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