Encendido De Leds Controlado Por Botones Con Microcontrolador
Enviado por Pilo270991 • 3 de Febrero de 2014 • 442 Palabras (2 Páginas) • 314 Visitas
INSTITUTO TECNOLÓGICO DE LÁZARO CÁRDENAS
INGENIERÍA ELECTRÓNICA
APLICACIONES DE MICROCONTROLADORES
Práctica 1:
Encendido de leds controlado por botones
ALUMNO: MARTÍNEZ ALATORRE MIGUEL ÁNGEL
NÚMERO DE CONTROL: 10560589
GALLO SÁNCHEZ JULIO CÉSAR
Cd. Lázaro Cárdenas, Michoacán a 03 de febrero de 2014
LISTA DE MATERIAL
• 1 Protoboard.
• 1 Entrenador PIC18F4550.
• 8 Leds.
• 8 Resistencias de 330 Ω.
• 2 Push botons.
• 2 Resistencias de 4.7 kΩ.
• Cable para conexiones.
EXPLICACIÓN
Se hará un programa en lenguaje C para el microcontrolador PIC18F4550, en el cual haya 8 leds, configurados como salidas, inicialmente apagados y dos botones “UP” y “DOWN”, configurados como entradas, como se muestra en la figura 1. Cuando se presione “UP”, deberá encenderse el led conectado al bit menos significativo del puerto B y conforme se siga presionando “UP” ir ascendiendo hacia el bit más significativo de dicho puerto. Cuando se presione “DOWN”, deberá apagarse el último led que se encendió, hasta quedar todos apagados.
Figura 1. Circuito empleado para obtener la salida deseada en los leds, controlada por los botones como entradas.
OBJETIVO
Aprender a usar los puertos digitales del microcontrolador PIC18F4550 como entradas y salidas, además de conocer algunos códigos usados especialmente para el mismo y recordar los usados en el lenguaje C.
DESARROLLO
Realizaremos 2 soluciones diferentes para esta práctica.
Solución 1:
/* Este programa sirve para probar las instrucciones de manejo de puertos digitales en C.
Realizó: Martínez Alatorre Miguel Ángel */
/*Configuración del PIC18F4550*/
#include"18f4550.h" // Incluye la librería del PIC18F4550 que contiene las
// definiciones de los periféricos.
#use delay(clock=48000000) // Ajusta la velocidad de la CPU a 48 MHz.
#build(reset=0x02000,interrupt=0x02008) // Se asigna la dirección de inicio del vector reset y de las interrupciones en general.
#org 0x0000, 0x1FFF { } // Se declara el área de FLASH para nuestro programa.
// Zona para la declaración de variables y constantes globales.
unsigned int c, cont = 0;
/* Programa principal */
void main(void){
set_tris_b(0x00);
output_b(0xff);
output_c(0xff);
for( ; ; ){ // Ciclo infinito con for.
c = input_c() & 0x03;
if(c == 0){
output_b(0xff);
...