//VITAL '06
//Ejemplo que demuestra como conectar
//un pic a una memoria i2c y muestra resultados por lcd
#INCLUDE <16F628.H>
#fuses INTrc_io,NOWDT,NOBROWNOUT,NOPROTECT,NOPUT,NOLVP,NOMCLR //ordenes para el programador
#use delay (clock=4000000) //Fosc=4Mhz
#define EEPROM_SDA PIN_A0
#define EEPROM_SCL PIN_A1
//#define EEPROM_SIZE 1024
#define use_portb_lcd
#INCLUDE <2408.C>
#INCLUDE <lcd.c>
void main() {
char caracter[16];
char i,j=0;
//iniciamos lcd
lcd_init();
lcd_putc("\fIniciando...");
delay_ms(2000);
lcd_putc("\fIniciando...\n EEPROM");
init_ext_eeprom();
while(ext_eeprom_ready())
{
for (i=0;i<EEPROM_SIZE;i++)
{
if (i>15){
//desplazamos los caracteres a la izquierda
for (j=0;j<15;j++)
{
caracter[j]=caracter[j+1];
}
caracter[15]= read_ext_eeprom(i);
printf(lcd_putc, "\fLeido \n%s", caracter);
delay_ms(500);
}
else
caracter[i]= read_ext_eeprom(i);
}
}
}
#include<16F877A.h>
#use delay(clock=4000000)
#Byte PORTB = 0x006
#fuses XT,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP
//******Declaración de Funciones****************
char Teclado();
void main()
{
char Tecla;
setup_spi(spi_master |spi_h_to_l |spi_clk_div_16 );
set_tris_a(0x17);
set_tris_b(0x0F);
set_tris_c(0b11010111);
do
{
output_low(PIN_A4);
Tecla = 'F';
while(Tecla == 'F')
{
Tecla = Teclado();
}
while('F' != Teclado())
{
output_high(PIN_A4);
}
spi_write(Tecla);
}while(true);
}
char Teclado()//Función para leer el Teclado Hexa
{
PORTB = 0xFF;
delay_ms(10);
if((PORTB & 0xF0) > 0)
{
PORTB = 0x8F;
delay_ms(10);
switch(PORTB & 0x0F)
{
case 1:{return('*');}break;
case 2:{return('7');}break;
case 4:{return('4');}break;
case 8:{return('1');}break;
default:{}
}
PORTB = 0x4F;
delay_ms(10);
switch(PORTB & 0x0F)
{
case 1:{return('0');}break;
case 2:{return('8');}break;
case 4:{return('5');}break;
case 8:{return('2');}break;
default:{}
}
PORTB = 0x2F;
delay_ms(10);
switch(PORTB & 0x0F)
{
case 1:{return('#');}break;
case 2:{return('9');}break;
case 4:{return('6');}break;
case 8:{return('3');}break;
default:{}
}
PORTB = 0x1F;
delay_ms(10);
switch(PORTB & 0x0F)
{
case 1:{return('D');}break;
case 2:{return('C');}break;
case 4:{return('B');}break;
case 8:{return('A');}break;
default:{}
}
}
return('F');
}
#include<16F877A.h>
#use delay(clock=4000000)
#define use_portb_lcd = TRUE
#Byte PORTB = 0x006
#include<lcd.c>
#fuses XT,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP
void main()
{
int Tecla;
setup_spi(spi_slave | spi_h_to_l | spi_clk_div_16 | spi_ss_disabled );
set_tris_c(0b11011111);
lcd_init();
do
{
while(spi_data_is_in())
Tecla = spi_read();
lcd_gotoxy(1,1);
printf(lcd_putc,"Recibe: %c",Tecla);
}while(true);
}
spi_write(dato);
dato_devuelto = spi_read();
dato_recibido = spi_read(dato_a_mandar);
switch(variable_a_analizar)
{
case 0:{//esto se hace si variable_a_analizar vale cero}break;//el break siempre debe ir al final de cada caso.
case 2:{//esto se hace si variable_a_analizar vale uno}brak;
.
.
.
case n:{//n es el límite que Ud necesite}break;
default:{//esto se hace si no se dió ningún caso}//aca no se pone break
}