TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: carper en 08 de Mayo de 2014, 22:47:11
-
hoola a todos! pasa que quiero almacenar datos booleanos 0 o 1 en una matriz declarada como booleana pero al ingresar datos como ste:
100001 100001
010010 100001
001100 imprime esto 100001
010010 100001
100001 100001
lo que quiero saber si es posible ingresar 0os o 1os a una matriz booleana? tambien pensaba ingresarlos mediante codigo asm despues de aprende...rlo...
-
la variable mínima es de 8 bits, si quieres hacer un arreglo de booleanos, podrías hacer un vector de enteros y modificar cada bit de cada entero, así tendrías el equivalente a una matriz de 8xn
-
muestra el código donde ocurre el problema, yo he trabajado con arreglos de booleanos sin problemas
-
me paso por la cabeza lo de modificar enteros equivalenetes:
129 -> 10000001
66 -> 01000010 e ingresarlos. Me consumiria mucho mas tiempo de todos modos el trozo (codigo de prueba) es este:
#include <16F628A.h>...
//FUNCTIONS--------------------
void configPuerto(void);
void carga();
void bitToM(short boo);
void mostrar();
signed int ii,jj;
short mat[8][16], bit = 0;
void main(void){
configPuerto();
printf("start\r");
printf("loading... \r");
carga();
mostrar();
}
void carga(){
for(ii = 0; ii < 8; ii++){
for(jj = 0; jj < 16; jj++){
if(ii%3 == 0 && jj%2 == 0){
bitToM(1);
}else{
bitToM(0);
}
}
}
}
void bitToM(short boo){
//funcion alternativa donde pudo haber posible error pero no!
mat[ii][jj] = boo;
}
void mostrar(){
for(ii = 0; ii < 8; ii++){
for(jj = 0; jj < 16; jj++){
printf("%d ",mat[ii][jj]);
}
printf("\r");
}
}
void configPuerto(void){
TRISA = 0x00;
TRISB = 0X00;
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
}
mm... hasta ahora no se me ocurrio alguna forma de poder ingresar datos booleanos?
-
pues el código compila sin errores, debe ser que hay algo con la lógica a la hora de guardar los bits