Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Codigo de Micro

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

PRACTICA # 1

Realizar un contador desde el 0 hasta el 9 en el display de 7 segmentos con un delay de 200 ms


de retarde por cada número a mostrar el código tiene que ser un ciclo.

Para utilizar otro micro controlador solo hay que cambiar la línea de cabecera que ubica al
micro controlador.

Código del programa

#include <16f877.h>

#fuses hs, nowdt

#use delay (clock=8000000)

#use fast_io (d)

void main()//cuerpo del programa

set_tris_d(0b00000000);

output_d(0xff);

while(true)

output_d(0b01000000); //0

delay_ms(200); //

output_d(0b01111001); //1

delay_ms(200);

output_d(0b00100100);//2

delay_ms(200);

output_d(0b00110000); //3

delay_ms(200);

output_d(0b00011001); //4

delay_ms(200);

output_d(0b00010010); //5

delay_ms(200);

output_d(0b00000010); //6

delay_ms(200);

output_d(0b00111000); //7

delay_ms(200);
output_d(0b00000000); //8

delay_ms(200);

output_d(0b00011000); //9

delay_ms(200);

PRACTICA # 2

Configuraremos los puerto b y c como salida y iniciamos os pines c0 y c1 en bajo al ingresar en


el bucle enviaremos las señales de los puertos en hexadecimal para evitar confusiones.

En el que iniciaremos en el que envíen los números al decodificador desde 00 hasta el 10 el


contador tendrá 200 ms de retardo para cada número mostrado y después que llegue al
número 10 se apaguen durante 200 ms luego se iniciara nuevamente.

Código del programa

#include <16f877.h>

#fuses hs, nowdt

#use delay (clock=8000000)

void main()//cuerpo del programa

set_tris_b(0b00000000); //

output_low(pin_c0); //

output_low(pin_c1);

while(true)

output_high(pin_c0);

output_high(pin_c1);

//configuraremos los puertos como hexadecimal para no tener mucha confusión

output_b(0x00);//

delay_ms(200);

output_b(0x01);//
delay_ms(200);

output_b(0x02);//

delay_ms(200);

output_b(0x03);//

delay_ms(200);

output_b(0x04);//

delay_ms(200);

output_b(0x05);//

delay_ms(200);

output_b(0x06);//

delay_ms(200);

output_b(0x07);//

delay_ms(200);

output_b(0x08);//

delay_ms(200);

output_b(0x09);//

delay_ms(200);

output_b(0x10);//

delay_ms(200);

output_low(pin_c0); //

output_low(pin_c1);

delay_ms(200);

PRACTICA # 3

Utilizaremos arreglos con la función for.

Antes del void main se definirá una variable para el arreglo que contenga once números y los
colocamos en hexadecimal desde 0 hasta 10 y otra variable que sirva como contador.
Empezamos el void main declaramos puerto b y c como salidas luego al ingresar al bucle se
encienden los pines c0 y c1 habilitar los decodificadores entonces ingresan a la función FOR la
cual empezara a contar desde el 0 hasta el 10 enviando los pulsos necesarios en cada
decodificador con un delay de 1000 ms y después que terminen se apagaran durante 1000 ms
y volverá a contar desde cero.

Código del programa

#include <16f877.h>

#fuses hs, nowdt

#use delay (clock=8000000)

int8 reloj[11] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,};

int8 i ;

void main()//cuerpo del programa

set_tris_b(0x00);

set_tris_c(0x00);

while(true)

output_high(pin_c0);

output_high(pin_c1);

for(i=0;i<=11;i++)

output_b(reloj[i]);

delay_ms(1000);

output_low(pin_c0);

output_low(pin_c1);

delay_ms(1000);

} }

El resultado de la práctica debe ser el mismo al de la practica 2.

PRACTICA # 4
Utilizaremos las funciones FOR e IF ELSE

Generar un programa que muestre un contador del uno al 10 en un display de segmentos

Tendremos una condicionante: que si el numero mostrado en el display de 7 segmentos

Es par el puerto d envié altos desde el d0 a d7 y si es impar envié bajos desde d0 a d7.

Todo con un delay de 200 ms. y que luego se apague todo durante 500 ms

Código del programa

#include <16f877.h>

#fuses hs, nowdt

#use delay (clock=8000000)

int8 reloj[11] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,};

int8 i, e=0;

void main()//cuerpo del programa

set_tris_b(0x00);

set_tris_d(0x00);

while(true)

output_high(pin_e1);

output_high(pin_e2);

for(i=0;i<11;i++)

e=e+1;

output_b(reloj[i]);

if( e%2 == 0) //condicionante si es par

output_d(0x00);

else

output_d(0xff);

}
delay_ms(200);

output_low(pin_e1);

output_low(pin_e2);

delay_ms(500);

También podría gustarte