Está en la página 1de 5

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO

FACULTAD DE INGENIERIA

DIVISION DE INGENIERIA EN ELECTRONICA

MICROCONTROLADORES 1
PRÁCTICA #18: SEMAFORO CON LENGUAJE C
CAJA NEGRA

PROFESORA: JUDITH JIMENEZ MORENO

ALUMNOS:
ERICK QUEZADA JUAREZ

Diciembre 2018
Introducción
El PIC16F84 es un microcontrolador a 8 bits de la familia PIC perteneciente a la
Gama Media (según la clasificación dada a los microcontroladores por la misma
empresa fabricante) Microchip. Se trata de uno de los microcontroladores más
populares del mercado actual, ideal para principiantes, debido a su arquitectura de
8 bits, 18 pines, y un conjunto de instrucciones amigable para memorizar y fácil de
entender, internamente consta de:
Memoria Flash de programa (1K x 14 bits).
Memoria RAM (68 registros x 8 bits).
Un temporizador/contador (timer de 8 bits).
Un divisor de frecuencia.
Varios puertos de entrada-salida (13 pines en dos puertos, 5 pines el puerto A y 8
pines el puerto B).
Manejo de interrupciones (de 4 fuentes).
Perro guardián (watchdog).
Bajo consumo.
Frecuencia de reloj externa máxima 10MHz. (Hasta 20MHz en nuevas versiones).
La frecuencia de reloj interna es un cuarto de la externa, lo que significa que con un
reloj de 20Mhz, el reloj interno sería de 5Mhz y así pues se ejecutan 5 Millones de
Instrucciones por Segundo (5 MIPS)
No posee conversores analógicos-digital ni digital-analógicos.
Pipe-line de 2 etapas, 1 para búsqueda de instrucción y otra para la ejecución de la
instrucción (los saltos ocupan un ciclo más).
Repertorio de instrucciones reducido (RISC), con tan solo 35 instrucciones distintas.
4 tipos distintos de instrucciones, orientadas a byte, orientadas a bit, operación entre
registros, de salto.
Material y equipo

Un PIC16F84A
Capacitores de 22pF (x2) y 100nF.
Un cristal de cuarzo a 4 MHz
Cable delgado
Tablilla protoboard
Fuente de poder
Osciloscopio
Desarrollo de la practica
Para el desarrollo de esta practica se realiza el siguiente programa para poder
controlar los leds de la caja negra y poder utilizarlos como un semáforo.
El problema que se presento fue de que un led rojo no servia por lo que se
pensaba que el programa estaba mal después de hacer las pruebas correcta se
concluyo que el led rojo de la caja negra no servia

Programa en c
</ br>

</ br>
</ br>#include pic 16f84a//
#fuses xt,nowdt, noprotect, //fusibles
#use delay (clock=4000000) // Criztal de 4Mhz
#byte portb=0x06 // Declaramos que usaremos el puerto B
#byte trisb=0x086int a, memoria=0; //Declaramos dos variablesvoid main()
//funcion principal
{
SET_TRIS_A(0xFF); //Declaramos el puerto A como entradas
set_tris_b(0x00); //Declaramos el puerto B como salidas
portb=0x00; //Inicializamos el puerto B con las salidas en 0
while(true) // Aqui se queda ciclado el programa
delay_ms(1);{if(input(PIN_A0)==1) //Si el pin A0 es = 1 guardamos el estado con
memoria
{
memoria=memoria+1; // Utilizamos una memoria para saber que se presiono el
boton
}
if(memoria==1) //SI la memoria se activa =1 entra al if
{
do
{
output_high(PIN_B5);//On verde 1
output_high(PIN_B0);//On rojo 2
delay_ms(500); //ciclo de verde y rojo
output_low(PIN_B5);// Off verde 1
for(a=1;a<=4;a++)//parpadeo verde 1
{
delay_ms(100);
output_high(PIN_B5);// parpadeo verde 1
delay_ms(100);
output_low(PIN_B5);// parpadeo verde 1
}
output_high(PIN_B4);// encenndido amarillo 1
delay_ms(500);
output_low(PIN_B4);//apagado amarillo 1
output_high(PIN_B3);// encendido rojo 1
output_high (PIN_B2);// encendido verde 2
output_low(PIN_B0);// apagado rojo 2
delay_ms(1000);
output_low(PIN_B2);//apagado verde 2
{
for(a=1;a<=4;a++)//parpadeo de verde 2
{
delay_ms(100);
output_high(PIN_B2);// verde 2
delay_ms(100);
output_low(PIN_B2);// verde 2
}
output_high(PIN_B1);// encendido amarillo
delay_ms(500);
output_low(PIN_B1);// apagado amarillo 2
output_low(PIN_B3);// apagado rojo 1
}
}
while(true);
}
}
}

También podría gustarte