disculpen señores tengo un problema con el publik que estoy haciendo el primero es cuando el vector letra le pongo q lo guarde en la rom que es la directiva const ya no me funciana cuando quemo el pic pero cuando guardo el valor en la ram q es int letra si funciona me gustaria q hay q hacer para guardarlo en la rom y q funciones de antemno gracias al q me pueda colaborar este es el codigo
Código:
#include <16F628a.h>
#use delay(clock=16000000)
#fuses NOWDT,HS,PUT,NOPROTECT,NOBROWNOUT,NOMCLR,NOLVP,NOCPD
#byte porta = 5
#byte portb = 6
int rotar,seg,nn1,nn,cont; // y para que tenga memoria de donde lleva la rotacion
int public,recorrido,trama,ancho; // nceros es 31 ntrama 1 nceros=8
int letra [50]={ // para el ejemplo era letra [4]
0b10011100,// 01
0b00100000,
0b10100000,// 01
0b00011000,
0b10000100,
0b01000100,
0b10000100,
0b10111000, //
0b00111000, //8
0b01000100,
0b01000100,
0b01111100,
0b01000100,
0b01000100,
0b01000100,
0b01000100,
0b01000100, //16
0b01000100,
0b01000100,
0b01000100,
0b01000100,
0b01000100,
0b01000100,
0b01111100,
0b01000000, //24
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01111000,
0b11000000, //32
0b11000000,
0b00000000,
0b11000000,
0b11000000,
0b11000000,
0b11000000,
0b11000000,
0b00000000, //40
0b10001000,
0b11001000,
0b10101000,
0b10011000,
0b10001000,
0b10001000,
0b10001000
};
void main() {
set_tris_a(0x00);
set_tris_b(0x00);
portb=0x00;
cont=0;
trama=0;
public=letra[nn];
while(true){
output_high(pin_a2); // * ---->resetea el 74ls164 poniendo todo en cero
delay_us(2); // *
output_low(pin_a2); //
public=letra[nn];
while(ancho<50){ // es 8 ancho
while(seg<20){ //seg=6
while(trama<8){ // ************
// *
// *
// *
recorrido=0x80&public; // *
if(recorrido==0x80){ // *
output_high(pin_a0);
// *
} // *
else{ // *
output_low(pin_a0); // *
}
//************* *
output_high(pin_a1); // reloj * *
delay_us(2); // * *
output_low(pin_a1); //************** *
if (trama<=0){
rotar=0x01; // desplazamiento para prender cada transistor
}
// *
if(cont==ancho){ // * el cont :me sirve para decir cuantos bit saco
if(cont>=8){ // *
nn=nn1; // *
} // *
nn++; // * de la fila por ej si en la primer pasada saco un bit
trama++; // * en la segunda pasada saco 2 bit de la fila y haci....
portb=rotar; // *
delay_ms(1); // *
output_high(pin_a2); // * ---->resetea el 74ls164 poniendo todo en cero
delay_us(2); // *
output_low(pin_a2); // *
portb=0x00; // *
cont=0; // *
rotar=rotar<<1; // *
public=letra[nn]; // *
}
else{
cont++;
public=public<<1;
switch(cont){
case 8:
nn1=nn;
nn=nn+8;
public=letra[nn];
break;
case 16:
nn=nn+8;
public=letra[nn];
break;
case 24:
nn=nn+8;
public=letra[nn];
break;
case 32:
nn=nn+8;
public=letra[nn];
break;
case 40:
nn=nn+8;
public=letra[nn];
break; // *
}
} // *
} // ************************
cont=0;
nn=0;
trama=0;
seg++;
public=letra[0];
}
seg=0;
ancho++;
}
ancho=0;
}
}
Última edición por un moderador: