hola todos pues como siempre desarrollando un proyecto y se presentan problemas y mas para los que tenemos poca experiencia
estoy haciendo un reloj muy grande con rtc para que se vea desde lejos con una matriz de 11x17 y uso 5 registros 74164
3 para 17 columnas y 2 para 11 filas (pensaba utilizar 74595 pero no los conseguí
)la cosa es que no logro que los datos
serie salgan hacia los registros asi que decidi en practicar primero con una sola matrix 8x8 y dos registros uno para filas y otro para columnas ya busque en los foros pero no encontré algo util y en la web encontre un ejemplo en un blog y basado en eso lo intente de varias maneras pero tampoco
Esto es lo que tengo:
#include <16f886.h>
#fuses hs,nowdt,noprotect,noput
#use delay (clock=4M)
#byte portb=0x06
#byte trisb=0x86
#define datop pin_b3
#define clkp pin_b2
#define daton pin_b1
#define clkn pin_b0
int i,j;
byte valor,valorn;
byte const bitmask[8]={1,2,4,8,16,32,64,128};
byte const columnas[8]={0b00010000,0b00101100,0b01001100,0b01000000,0b01001100,0b00101100,0b00010000,0b00000000};
byte const filas[8]={0b000000001,0b00000010,0b00000100,0b00001000,0b00010000,0b00100000,0b01000000,0b10000000};
void main(){
set_tris_b(0b00000000);
while(true){ //ciclo infinito
valor=columnas
; //datos de columnas guardadas en variable "valor"
valorn=filas; //datos de filas guardadas en variable "valor"
for(j=0;j<8;j++){ //for para mandar los 8 bytes de filas y columnas a los registros
output_low(clkp); //clock del registro de las columnas en estado bajo
output_low(clkn); //clock del registro de filas en estado bajo
output_bit(datop,valor&bitmask[j]); //salida de datos hacia el registro de las columnas
output_bit(daton,valor&bitmask[j]); //salida de datos hacia el registro de las filas
delay_ms(30); //demora para carga de datos
output_high(clkp); //clock del registro de las columnas en estado alto
output_high(clkn); ////clock del registro de las filas en estado alto
i++; //incremento de variable i para pasar al siguiente byte de los array "columnas y filas"
}
}
}
lo que deberia hacer es poner en la matriz una cara asi pero solo enciende una columna incompleta
si me pudieran orientar que estoy haciendo mal u otra forma de mandar los datos a los registros por favor