Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
void CONF_PUERTOS(void)
{
//76543210
TRISC = 0b10000100; // Configura los pines 7 Entrada RX
// y el pin 6 salida TX
TRISD = 0; // Bus de datos de la LCD
TRISA = 0x00; // puerto A de salida
ADCON1 = 0x06; //Puerto A digital
}
//----------------------------------
void BORRAR_BASURA(void)
{
LATD = LATE = LATA = 0;
PORTA = 0x00; // Limpia puerto A
}
//----------------------------------
void CONF_LCD(void)
{
__delay_ms(20); // delay 20 ms
PORTD=0x30; // VALOR DE INICIALIZACION
enable();
__delay_ms(5); // delay 5 ms
PORTD=0x30; // VALOR DE INICIALIZACION
enable();
__delay_ms(1); // delay 1 ms
PORTD=0x30; // VALOR DE INICIALIZACION
enable();
PORTD=0b00111000; // Function set 8 bits - 2 lineas - 5*8
enable();
PORTD=0b00001000; // display off
enable();
PORTD=0b00000001; // display clear
enable();
PORTD=0b00000110; // entry mode set - incrementa la posicion del cursor
enable();
PORTD=0b00001100; // display on/off control - LCD on - cursor on - blink o
ff
enable();
}
//...................enable....................................
void enable (void)
{
PORTAbits.RA2=1; // enable en alto
__delay_ms(1);
PORTAbits.RA2=0; // enable en bajo
}
//...................dato....................................
void dato_LCD(unsigned char dato)
{
PORTAbits.RA1=0; //R/W en 0
PORTAbits.RA0=1; //RS en 1 (envia dato)
PORTD=dato; //dato a publicar
enable();
__delay_ms(2); //tiempo de ejecucion
}
//...................instruccion..................................
void ins_LCD(unsigned char dato)
{
PORTAbits.RA1=0; //R/W en 0
PORTAbits.RA0=0; //RS en 0 (envia instruccion)
PORTD=dato; //dato a publicar
enable();
__delay_ms(2); //tiempo de ejecucion
}
void write(unsigned char tam){
unsigned char i;
for(i=0;i<tam;i++){
dato_LCD(buffer[i]);
}
}
//----------------------------------
void CONF_USART(void)
{
TXSTA = 0b00100110;
RCSTA = 0b10010000;
SPBRG = 12; // Tasa de Transmisin 19200 bps
}
//----------------------------------
void RECIBIR(void)
{
if(PIR1bits.RCIF ==1)
{
PORTCbits.RC0=1;
VARIABLE = RCREG;
PIR1bits.RCIF = 0;
}
}
//----------------------------------
void CONTAR_DATOS(void){
if(VARIABLE==212){
A++;
}
if(VARIABLE==213){
B++;
}
if(VARIABLE==214){
C++;
}
if(VARIABLE==215){
D++;
}
if(VARIABLE==216){
E++;
}
if(VARIABLE==217){
F++;
}
if(VARIABLE==218){
G++;
}
if(VARIABLE==219){
H++;
}
}
void mostrar (void){
ins_LCD(128);
sprintf(buffer, "%d",A);
write(strlen(buffer));
sprintf(buffer, " %d",B);
write(strlen(buffer));
sprintf(buffer, " %d",C);
write(strlen(buffer));
sprintf(buffer, " %d",D);
write(strlen(buffer));
ins_LCD(192);
sprintf(buffer, "%d",E);
write(strlen(buffer));
sprintf(buffer, " %d",F);
write(strlen(buffer));
sprintf(buffer, " %d",G);
write(strlen(buffer));
sprintf(buffer, " %d",H);
write(strlen(buffer));
}
void fin (void){
if(S>=1001){
PORTCbits.RC1=0;
PORTCbits.RC0=0;
S=0;
ins_LCD(1);
mostrar();
while(1){}
}
}