Sunteți pe pagina 1din 18

Prof.

Luis Zurita Microcontroladores II



//***SENCILLO PROGRAMA QUE ACTIVA Y DESACTIVA DOS LEDS DE FORMA INTERMITENTE CADA 1 SEGUNDO***
#include<16f84A77.h>
#fuses XT,NOWDT,PUT,NOPROTECT
#USE delay(clock=4000000)
#use fast_io(B)

void main()
{
set_tris_B(0);
while (TRUE)
{
output_high(PIN_B0);
output_low(PIN_B1);
delay_ms(1000);
output_low(PIN_B0);
output_high(PIN_B1);
delay_ms(1000);
}
}




Prof. Luis Zurita Microcontroladores II

//***PROGRAMA PARA DEMOSTRAR EL USO DE EVALUAR VARIAS CONDICIONES EN UNA MISMA EXPRESIN***
#include <16F877.h>
#fuses XT,NOWDT,NOLVP,NOPROTECT
#use delay(clock=4000000)
#use fast_io(A)
#use fast_io(B)
void main (void){
set_tris_A(0x0f);
set_tris_B(0x00);
output_B(0);
while (true) {
if ((input(PIN_A0)==0) && (input(PIN_A1)==0) && (input(PIN_A2)==1)){
output_high(PIN_B0);
output_low(PIN_B1);}
else {
output_high(PIN_B1);
output_low(PIN_B0);}
}
}




Prof. Luis Zurita Microcontroladores II







Prof. Luis Zurita Microcontroladores II

/// Programa: CONTADOR DE 8 bits por el puerto B ///
///////////////////////////// DIRECTIVAS DE PREPROCESADO //////////////////////
/// libreria para el manejo del pic16f877a
#include <16F877A.h>
/// declara la frecuencia del cristal
#use delay(clock=4000000)
///configura los fusibles
/// XT es la configuracin del oscilador para 4 Mhz.
/// NOWDT deshabilita el Watch Dog Timer
/// NOPUT deshabilita le reseteo de power up timer
/// NOPROTECT deshabilita la proteccion del codigo del pic.
#fuses XT,NOWDT,NOPUT,NOPROTECT
/// asignamos a variable port_b el espacio memoria 0x06 que es la dir de port_b
#byte port_b=0x06
//////////////////////////GLOBALES//////////////////////////////////////////////
/// Estos parmetros son visibles desde todo el cdigo //
/// por eso se les llama globales ///
/// Al ser constantes, lo ms prctico es declararlas aqu. //
////////////////////////////////////////////////////////////////////////////////
int contador;

void main(){ // Principal //
set_tris_b(0); /// declaramos el puerto B como salidas
/// lo igualamos con cero para que tengamos un valor inicial
port_b=0;
/// bucle infinito para que las instrucciones que tiene siempre se ejecuten
contador=0x00;
while (true)
{
contador++;
/// activa todos los pins del puerto B



Prof. Luis Zurita Microcontroladores II

port_b=contador;
/// Retardo de 1 segundo
delay_ms(1000);
} /// fin de bucle while
} /// fin de funcin principal main











Prof. Luis Zurita Microcontroladores II

/// Programa: LEDs Parpadeando como el Auto fantstico ///
/// libreria para el manejo del pic16f877a
#include <16F877A.h>
///configura los fusibles
/// XT es la configuracin del oscilador para 4 Mhz.
/// NOWDT deshabilita el Watch Dog Timer
/// NOPUT deshabilita le reseteo de power up timer
/// NOPROTECT deshabilita la proteccion del codigo del pic.
#fuses XT,NOWDT,NOPUT,NOPROTECT
/// declara la frecuencia del cristal
#use delay(clock=4000000)
/// asignamos a variable port_b el espacio memoria 0x06 que es la dir de port_b
#byte port_b=0x06
void main() //Programa principal
{
set_tris_b(0); //Puerto B como salida
port_b=0x01;
while (true){ /// bucle infinito para que las instrucciones que tiene siempre se ejecuten
port_b=port_b<<1; //Rota un bit a la izquierda
if (port_b==0){ //Si llega a cero carga el valor inicial para rotar a la derecha
port_b=0b10000000; //y entra en el bucle de rotacin a la derecha
while (true){
port_b=port_b>>1; //Rota un bit a la derecha
if (port_b==0){ //Si llega a cero carga valor inicial
port_b=0x01; //y sale de este bucle regresando al bucle anterior
break;}
delay_ms(100);
}
}
delay_ms(100); // Retardo de 100 milisegundo
} // fin de bucle while
} // fin de funcion principal main


Prof. Luis Zurita Microcontroladores II









Prof. Luis Zurita Microcontroladores II

//***PROGRAMA QUE DEMUESTRA EL USO DEL CASE***
#include <16F84A.h>
#fuses XT,NOWDT,PUT,NOPROTECT
#use fast_io(A)
#use fast_io(B)
int DATOA=0;

void main (){
set_tris_a(0x1f);
set_tris_b(0x00);
output_b(0);
while (TRUE){
DATOA=input_a();
switch (DATOA){
case 0:
output_b(0b00000011);
break;
case 1:
output_b(0b00001100);
break;
case 2:
output_b(0b00000111);
break;
default:
output_b(0b00001111);
break;
}
}
}





Prof. Luis Zurita Microcontroladores II









Prof. Luis Zurita Microcontroladores II

//***PROGRAMA DE UN CONTADOR SENCILLO DE DOS CIFRAS ASCENDENTES***
#include <16f877.h>
#fuses XT,NOWDT,PUT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use fast_io(A)
#use fast_io(B)
int UNI=0,DEC=0;
void mostrar(){
output_low(PIN_B1);
output_low(PIN_B2);
output_a(UNI);
output_high(PIN_B1);
output_low(PIN_B2);
delay_ms(5);
output_low(PIN_B1);
output_low(PIN_B2);
output_a(DEC);
output_low(PIN_B1);
output_high(PIN_B2);
delay_ms(5);
output_low(PIN_B2);
}
void mostrar1(){
output_low(PIN_B1);
output_low(PIN_B2);
output_a(UNI);
output_high(PIN_B1);
output_low(PIN_B2);
delay_ms(5);
}
void main ( ) // Programa principal
{
set_tris_B(0x01);
set_tris_A(0);


Prof. Luis Zurita Microcontroladores II

while (1)
{
if (bit_test (PORTB,0)==0)
{
if (DEC==0){
mostrar1();}
else{
mostrar();}
delay_ms(5);
if (bit_test (PORTB,0)==1) {
if (UNI>=9){
UNI=0;
if (DEC>=9){
DEC=0;}
else{
DEC=DEC+1;}
}
else {
UNI=UNI+1;
}

}

}

else if (DEC==0){
mostrar1();}
else
{
mostrar();
}
}
}




Prof. Luis Zurita Microcontroladores II









Prof. Luis Zurita Microcontroladores II

//***PROGRAMA DEL ESTACIONAMIENTO EN LENGUAJE C***
#include <16f877.h>
#fuses XT,NOWDT,PUT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use fast_io(A)
#use fast_io(B)
int UNI=0,DEC=0;


void mostrar(){ //Funcin para mostrar datos en los displays con multiplexacin
output_low(PIN_B0);
output_low(PIN_B1);
output_a(UNI);
output_high(PIN_B0);
output_low(PIN_B1);
delay_ms(5);
output_low(PIN_B0);
output_low(PIN_B1);
output_a(DEC);
output_low(PIN_B0);
output_high(PIN_B1);
delay_ms(5);
output_low(PIN_B1);
}
void main ( ) // Programa principal
{
set_tris_B(0b11110000);
set_tris_A(0);
while (true)
{
if(input(PIN_B4)==0) //Pregunta si se activ la entrada 1
{


Prof. Luis Zurita Microcontroladores II

mostrar();
delay_ms(5);
if(input(PIN_B4)==1){
if (UNI>=9){
UNI=0;
if (DEC>=4){
DEC=5;
output_high(PIN_B3); //Led NOHAYCUPO=0n
output_low(PIN_B2); //Led HAYCUPO=0ff
}
else{
DEC=DEC+1;}
}
else {
if (DEC==5){
DEC=5;
output_high(PIN_B3); //Led NOHAYCUPO=0n
output_low(PIN_B2);} //Led HAYCUPO=0ff
else{
UNI=UNI+1;}
}

}

}
else if(input(PIN_B5)==0) //Pregunta si se activ la entrada 2
{
mostrar();
delay_ms(5);
if(input(PIN_B5)==1){
if (UNI>=9){
UNI=0;


Prof. Luis Zurita Microcontroladores II

if (DEC>=4){
DEC=5;
output_high(PIN_B3);
output_low(PIN_B2);
}
else{
DEC=DEC+1;}
}
else {
if (DEC==5){
UNI=0;
DEC=5;
output_high(PIN_B3);
output_low(PIN_B2);}
else{
UNI=UNI+1;}
}

}

}
else if(input(PIN_B6)==0) //Pregunta si se activ la salida 1
{
mostrar();
delay_ms(5);
if(input(PIN_B6)==1){
if (UNI<=0){
UNI=9;
if (DEC<=0){
DEC=0;
UNI=0;}
else{


Prof. Luis Zurita Microcontroladores II

DEC=DEC-1;
output_high(PIN_B2); //Led HAYCUPO=0n
output_low(PIN_B3); //Led NOHAYCUPO=off
}
}
else {
UNI=UNI-1;
output_high(PIN_B2); //Led HAYCUPO=0n
output_low(PIN_B3); //Led NOHAYCUPO=off
}

}

}
else if(input(PIN_B7)==0) //Pregunta si se activ la salida 2
{
mostrar();
delay_ms(5);
if(input(PIN_B7)==1){
if (UNI<=0){
UNI=9;
if (DEC<=0){
DEC=0;
UNI=0;}
else{
DEC=DEC-1;
output_high(PIN_B2);
output_low(PIN_B3);
}
}
else {
UNI=UNI-1;


Prof. Luis Zurita Microcontroladores II

output_high(PIN_B2);
output_low(PIN_B3);
}

}

}
else
{
mostrar();
}
}
}




Prof. Luis Zurita Microcontroladores II

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