Está en la página 1de 6

***********************PRACTICA 1 ROTACION DE LEDS *************************

#include <16F877A.h>
/* PIC16F4A */
#fuses XT,NOWDT,NOPROTECT,PUT
#fuses BROWNOUT /* Fusibles (lo mas comun) */
#use delay (clock=4000000)
/* Ajuste retardos */
#use fast_io(b)
/* Opcional */
#use standard_io(c)
/* Opcional */
#byte port_b= 0x06

void main()
{
int i;
port_b=1;
set_tris_b(0x00);
disable_interrupts(GLOBAL);
while (true)
{
for(i=1;i<=4;i++)
{
rotate_left(&port_b,1);
delay_ms(500);
}
}

******************************************************

***********

PRACTICA lcd ****************************

//------Directivas para el compilador-------#include <16f877a.h>


//PIC utilizado
#fuses XT,NOWDT,NOPROTECT,NOLVP
//Configuramos los fuses
#use delay (clock=4000000)
//Oscilador a 4Mhz
#use fast_io(b)
//Optimizamos E/S del PORTB
#use fast_io(c)
//Optimizamos E/S del PORTC
#byte portb= 0x06
//#define use_portb_lcd TRUE
#INCLUDE "lcd.c"
//Incluyo

/* flecha \ / */
int const caracter0_direccion[8]={0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47};
int const caracter0_datos[8]={0b00000,0b10000,0b11000,0b11100,0b01110,0b00111,0b00011,0b00001};
int const caracter1_direccion[8]={0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f};
int const caracter1_datos[8]={0b00001,0b00011,0b00111,0b01110,0b11100,0b11000,0b10000,0b10000};
/*Mueco*/
int const caracter2_direccion[8]={0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57};
int const caracter2_datos[8]={0b01110,0b01010,0b01110,0b00100,0b11111,0b00100,0b01010,0b10001};

void main() {
int contador;
set_tris_a(0x0);
set_tris_b(0x0);
lcd_init();
for(contador=0;contador<8;contador++)
{
lcd_send_byte(0,caracter0_direccion[contador]);
lcd_send_byte(1,caracter0_datos[contador]);
lcd_send_byte(0,caracter1_direccion[contador]);
lcd_send_byte(1,caracter1_datos[contador]);
lcd_send_byte(0,caracter2_direccion[contador]);
lcd_send_byte(1,caracter2_datos[contador]);
lcd_send_byte(0,0x80);
do
{
for(contador=1;contador<16;contador++)
{
lcd_gotoxy(contador,1);
Lcd_putc(0);
Lcd_putc(0);
Lcd_putc(0);
Lcd_putc(2);
//Lcd_putc(3);

//modo comando
// modo dato
//modo comando
// modo dato
//modo comando
// modo dato

//delay_ms(2000);
lcd_gotoxy(contador,2);
Lcd_putc(1);
Lcd_putc(1);
Lcd_putc(1);
delay_ms(1000);
Lcd_putc ("\f");
}
delay_cycles(1);
}while(TRUE);
}

*************************PRACTICA TECLADO MATRICIAL ***********************


#include <16F877A.h>
/// PIC16F877A
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP,BROWNOUT /// Fusibles (lo mas comun)
#use delay (clock=4000000)
// SENAL DE Reloj
#use delay (clock=4000000,restart_wdt)
//
#use fast_io(b)
// Opcional
#use standard_io(c)
#byte portb= 0x06
#byte portd= 0x08
//rg 0x1F00, 0x1FFF {}

//para proteger el cdigo//del cargador

void main()
{
set_tris_b(0b11110000);
set_tris_d(0x00);
disable_interrupts(GLOBAL); //todas las interrupciones desactivadas
//portb = 0x00;
//portd = 0x00;
do
{
/***** 1 4 7 * ****/
output_high(PIN_b0);
if(input(PIN_b7))
{
output_d(0b11111001);
delay_ms(200);
output_d(0x00);
}
if(input(PIN_b6))
{
output_d(0b10011001);
delay_ms(200);
output_d(0x00);
}
if(input(PIN_b5))
{
output_d(0b11111000);
delay_ms(200);
output_d(0x00);
}
if(input(PIN_b4))
{
output_d(0b10110110);
delay_ms(200);
output_d(0x00);

}
output_low(PIN_b0);
/****************************/
/* 2 5 8 0 */
//
portb = 0b00100000;
output_high(PIN_b1);

if(input(PIN_b7))
output_d(0b10100100);
delay_ms(200);
output_d(0x00);

}
{

if(input(PIN_b6))
output_d(0b10010010);
delay_ms(200);
output_d(0x00);

}
{

if(input(PIN_b5))
output_d(0b10000000);
delay_ms(200);
output_d(0x00);

}
{

if(input(PIN_b4))
output_d(0b11000000);
delay_ms(200);
output_d(0x00);

}
output_low(PIN_b1);
/*******************************/
/**** 3 6 9 H ***/
output_high(PIN_b2);
if(input(PIN_b7))
{
output_d(0b10110000);
delay_ms(200);
output_d(0x00);
}
if(input(PIN_b6))
{
output_d(0b10000010);
delay_ms(200);
output_d(0x00);
}
if(input(PIN_b5))
{
output_d(0b10011000);
delay_ms(200);
output_d(0x00);
}

if(input(PIN_b4))
{
output_d(0b10001001);
delay_ms(200);
output_d(0x00);
}
output_low(PIN_b2);
/********************/
/* A B C D */
output_high(PIN_b3);
if(input(PIN_b7))
{
output_d(0b100001000);
delay_ms(200);
output_d(0x00);
}
if(input(PIN_b6))
{
output_d(0b10000000);
delay_ms(200);
output_d(0x00);
}
if(input(PIN_b5))
{
output_d(0b11000110);
delay_ms(200);
output_d(0x00);
}
if(input(PIN_b4))
{
output_d(0b11000000);
delay_ms(200);
output_d(0x00);
}
output_low(PIN_b3);
}while (true);
}
}

También podría gustarte