Mis saludos
Quisiera que me ayuden con esto, para empezar la compilación en MPLAB ide v8.86 esta bien.
La configuración como dice es 96 bytes de memoria.
Por lo que leí este pic da para muchos más bytes, y es por eso que quiero ponerle al maximo de bytes de memoria que me pueda permitir este pic, puesto que quiero almacenar mas caracteres.
Intenté configurarlo, pero no tuve exito al compilarlo. Qué modificaciones le podría hacer para que me resulte.
Es una matriz 8x8 , PIC16F88
Gracias.
Quisiera que me ayuden con esto, para empezar la compilación en MPLAB ide v8.86 esta bien.
La configuración como dice es 96 bytes de memoria.
Por lo que leí este pic da para muchos más bytes, y es por eso que quiero ponerle al maximo de bytes de memoria que me pueda permitir este pic, puesto que quiero almacenar mas caracteres.
Intenté configurarlo, pero no tuve exito al compilarlo. Qué modificaciones le podría hacer para que me resulte.
Es una matriz 8x8 , PIC16F88
Gracias.
Código:
#include <16f88.h> // Tipo de microcontrolador
#fuses INTRC_IO,MCLR // Oscilador interno, MCLR activo
#fuses NOPUT,NOBROWNOUT // Sin Brownout reset ni Power up timer
#use fast_io(a) // La configuración de los puertos solo se hace al principio.
#use delay(clock=8M) // Velocidad del oscilador interno 8 MHz
#define Load PIN_B0 // Load (STCP ambos integrados) B0
#define Clk PIN_B1 // Clock (SHCP ambos integrados) B1
#define dClm PIN_B2 // Data para las columnas (DS integrado 1) BC2
#define dLin PIN_B3 // Data para las lineas (DS integrado 2) B3
char Memoria[96]; // 96 Bytes para la memoria (0 - 95)
char Visor[8]; // 8 para el visor (8 columnas)
int1 flag; // Flags de control
int1 flag2;
int indx; // Indice donde almacenará las nuevas columnas.
int line; // Linea a mostrar.
int time; // Variables para el control de
int ptime; // la velocidad de desplazamiento.
int t; // Variable auxiliar.
void CargaMem(char Ascii);
void GuardaClm(char c);
#int_rtcc // This function is called every time
void isr(){
int Mul=128; // Cada vez que ocurre la interrupcion
if(++line>7)Line=0; // selecciona la siguiente linea, si se pasa de 7 vuelve a 0.
if(++ptime>5){ // Suma 1 a ptime. Si se pasa de 20
ptime=0; // lo pone en 0 y suma 1 a time.
if(++time>200){ // Si se pasa de 200
time=0; // lo pone en 0
Flag=true; // y activa el flag.
}
}
for(t=0;t<8;t++){ // Bucle 0 - 7 (Lineas)
output_bit(dLin,!!(Visor[Line]&Mul)); // dLin es seteado con el valor
// del bit de la fila actual.
if (Line==t)output_high(dClm); // Si Line es igual a t
// activa el bit correspondiente
else output_low(dClm); // a la columna, sino lo desactiva.
output_low(Clk); //
output_high(Clk); // Rota el contenido interno del 74HC595.
Mul>>=1; // Divide la mascara que compara con Visor[] (128,64,32...)
}
output_low(Load);
output_high(Load);// El contenido interno del integrado pasa a las salidas.
}
void main(){
int k;
set_tris_a(0x00);
set_tris_b(0x00);
for (k=0;k<8;k++){
Visor[k]=0;
}
for (k=0;k<96;k++){
Memoria[k]=0;
} // Limpia la memoria y el visor
flag=true; // Activo el flag para que cargue la memoria
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Configuración del Timer0
enable_interrupts(int_rtcc); // Interrupcion por Timer0
enable_interrupts(global); // Interrupciones globales
do{
if (Flag){ // Si el flag está activado
flag2=true; // Activa el flag2
for (k=0;k<8;k++){ // Pasa el contenido de las primeras 8
visor[k]=Memoria[k]; // columnas en memoria al visor
}
for (k=0;k<95;k++){ // Rota el contenido de toda la memoria
Memoria[k]=Memoria[k+1];// a la izquierda 1=1+1, 2=2+1, n=n+1...
if (Memoria[k]!=0){Flag2=false;} // Si hay alguna columna que no
// esté vacía desactiva el flag2
}
Memoria[95]=0; // Limpia la ultima columna de la memoria
if (Flag2){ // Si flag2 está activo
indx=12; // a partir de la columna 7
CargaMem("ROBOT JIC"); // escribe
}
Flag=false; // Desactiva el flag
}
}while (true); // Bucle infinito
}
void GuardaClm(char c){
if (indx<94){
Memoria[indx]=c; // Guarda la columna en la ubicación actual de memoria
indx++; // y aumenta el indice
}
}
void CargaMem(char ascii){ // Carga la memoria con el caracter deseado
switch (ascii){
case('A'):
GuardaClm(0b01111100);
GuardaClm(0b01111110);
GuardaClm(0b00010001);
GuardaClm(0b00010001);
GuardaClm(0b01111110);
GuardaClm(0b01111100);
break;
case('B'):
GuardaClm(0b01111111);
GuardaClm(0b01111111);
GuardaClm(0b01001001);
GuardaClm(0b01001001);
GuardaClm(0b01111111);
GuardaClm(0b00110110);
break;
case('C'):
GuardaClm(0b00111110);
GuardaClm(0b01111111);
GuardaClm(0b01000001);
GuardaClm(0b01000001);
GuardaClm(0b01100011);
GuardaClm(0b00100010);
break;
case('E'):
GuardaClm(0b01111111);
GuardaClm(0b01111111);
GuardaClm(0b01001001);
GuardaClm(0b01001001);
GuardaClm(0b01000001);
GuardaClm(0b01000001);
break;
case('G'):
GuardaClm(0b00111110);
GuardaClm(0b01111111);
GuardaClm(0b01000001);
GuardaClm(0b01001001);
GuardaClm(0b01111001);
GuardaClm(0b00110010);
break;
case('I'):
GuardaClm(0b01000001);
GuardaClm(0b01000001);
GuardaClm(0b01111111);
GuardaClm(0b01111111);
GuardaClm(0b01000001);
GuardaClm(0b01000001);
break;
case('J'):
GuardaClm(0b00100001);
GuardaClm(0b01100001);
GuardaClm(0b01111111);
GuardaClm(0b00111111);
GuardaClm(0b00000001);
GuardaClm(0b00000001);
break;
case('O'):
GuardaClm(0b00111110);
GuardaClm(0b01111111);
GuardaClm(0b01000001);
GuardaClm(0b01000001);
GuardaClm(0b01111111);
GuardaClm(0b00111110);
break;
case('P'):
GuardaClm(0b01111111);
GuardaClm(0b01111111);
GuardaClm(0b00001001);
GuardaClm(0b00001001);
GuardaClm(0b00001111);
GuardaClm(0b00000110);
break;
case('R'):
GuardaClm(0b01111111);
GuardaClm(0b01111111);
GuardaClm(0b00001001);
GuardaClm(0b00011001);
GuardaClm(0b01111111);
GuardaClm(0b01100110);
break;
case('S'):
GuardaClm(0b00100110);
GuardaClm(0b01101111);
GuardaClm(0b01001001);
GuardaClm(0b01001001);
GuardaClm(0b01111011);
GuardaClm(0b00110010);
break;
case('T'):
GuardaClm(0b00000011);
GuardaClm(0b00000001);
GuardaClm(0b01111111);
GuardaClm(0b01111111);
GuardaClm(0b00000001);
GuardaClm(0b00000011);
break;
case('U'):
GuardaClm(0b00111111);
GuardaClm(0b01111111);
GuardaClm(0b01000000);
GuardaClm(0b01000000);
GuardaClm(0b01111111);
GuardaClm(0b00111111);
break;
}
GuardaClm(0b00000000);
}
Última edición por un moderador: