#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
}
}
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.Ayuda tengo j. Problema con el registro tengo una programación que ocupa un bitmask pero no logro hacer que se salgan los datos del puerto b y los datos del registro al mismo tiempo
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:Código: [Seleccionar]#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.
Ayuda tengo j. Problema con el registro tengo una programación que ocupa un bitmask pero no logro hacer que se salgan los datos del puerto b y los datos del registro al mismo tiempo
era una tontería estaba cambiando el orden en el for :D me vine a dar cuenta despues de poner la duda :mrgreen: ...Podrías compartir tu codigo
Ya subí los archivosCitarAyuda tengo j. Problema con el registro tengo una programación que ocupa un bitmask pero no logro hacer que se salgan los datos del puerto b y los datos del registro al mismo tiempo
Si te explicas mejor y ademas provees el codigo va a ser posible ayudarte.