Hola, estoy intentando hacer un cartel de leds y el caracter a ingresar lo estoy representando como un array 8x8, he creado una función llamada datos que toma como parámetro dicho array n0 y lo recorra de tal manera que cuando encuentre un 1 lo mande al pin A1 (al registro de desplazamiento) al igual que con el cero, esto mediante las funciones c() y u(). Pero al probar en el proteus el micro no hace nada.
Como sé solo lo básico de C, no se en qué me estoy equivocando, anteriormente haciendo esto sin arrays me había funcionado.
Aquí les dejo el código y el diseño:
#include <16f88.h> //Invoco el microcontrolador que necesito
#FUSES INTRC, NOWDT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO, MCLR, NOBROWNOUT, CCPB3 //pendiente
#use delay(clock=4000000)
#byte cartel=0x06 //PuertoB va hacia la matriz de leds
#byte reg=0x05 //PuertoA va hacia el registro data y clock
unsigned int i=0,j=0,lim=0;
unsigned int salB[8]={1,2,4,8,16,32,64,128};
int1 n0[8][8]={{1,0,0,0,0,0,0,1}, //array para dibujar un cero
{1,0,1,1,1,1,0,1},
{1,0,1,1,1,1,0,1},
{1,0,1,1,1,1,0,1}
{1,0,1,1,1,1,0,1}
{1,0,1,1,1,1,0,1}
{1,0,1,1,1,1,0,1}
{1,0,0,0,0,0,0,1}};
void u() //funcion para mandar un pulso de reloj a clock y un 1 al data del registro
{
bit_clear(reg,0); delay_us(1);
bit_set(reg,1);
bit_set(reg,0); delay_us(1);
}
void c() //funcion para mandar un pulso de reloj a clock y un 0 al data del registro
{
bit_clear(reg,0); delay_us(1);
bit_clear(reg,1);
bit_set(reg,0); delay_us(1);
}
void datos(a[8][8]) //la funcion que dibuja en el cartel
{
for (i=0;i++;i<=7)
{
for (j=0;j++;j<=7)
{
if (a[i][j]==1)
{
bit_clear(reg,0); delay_us(1);
bit_set(reg,1);
bit_set(reg,0); delay_us(1);
}
if (a[i][j]==0)
{
bit_clear(reg,0); delay_us(1);
bit_clear(reg,1);
bit_set(reg,0); delay_us(1);
}
cartel=salB[i];
delay_ms(1);
cartel=0x00;
}
}
}
void main(void)
{
setup_oscillator(OSC_4MHZ|OSC_INTRC);
set_tris_b(0x00);
set_tris_a(0x00);
cartel=0x00;
while(true)
{
datos(n0); //aqui invoco la funcion datos
}
}
lo que hace este código es dibujar un cero en la matriz de leds.
El micro manda los datos por las filas y el registro a las columnas de derecha a izquierda.
Gracias de antemano.