Hola!

Registrándote te conviertes en bakuno, lo cual te permitirá publicar, discutir, compartir y contactar en privado a otros bakunos.

Regístrame ya!

cambio de pic asignado en programa ayuda!!

kamo-kun

Becerro
Desde
30 Oct 2010
Mensajes
19
hola m gustaria q me pudiesen ayudar encontre un codigo en c para programar una matriz de led 8x8 pero en el programa el pic es el 16f88 el cual no puedo conseguir y lo sustituire x el 16f84 el caso es q al cambiar el pic asignado en el programa es el siguiente:

Microcontrolador: PIC16F88 Oscilador: Interno - 8 MHz **
** Lenguaje: CCS C **
** **
*************************************************************************/

#include <16f88.h> // Tipo de microcontrolador
#fuses INTRC_IO,MCLR // Oscilador interno, MCLR activo <--aki me da error
#fuses NOPUT,NOBROWNOUT // Sin Brownout reset ni Power up timer<-aki =
#use fast_io(all) // La configuración de los puertos solo se hace al principio.
#use delay(clock=8M) // Velocidad del oscilador interno 8 MHz

#define Load PIN_B0 // Load (STCP ambos integrados) B0
#define Clk PIN_B1 // Clock (SHCP ambos integrados) B1
#define dClm PIN_B2 // Data para las columnas (DS integrado 1) BC2
#define dLin PIN_B3 // Data para las lineas (DS integrado 2) B3

char Memoria[96]; // 96 Bytes para la memoria (0 - 95)
char Visor[8]; // 8 para el visor (8 columnas)

int1 flag; // Flags de control
int1 flag2;
int indx; // Indice donde almacenará las nuevas columnas.
int line; // Linea que a mostrar.
int time; // Variables para el control de
int ptime; // la velocidad de desplazamiento.
int t; // Variable auxiliar.

void CargaMem(char Ascii);
void GuardaClm(char c);

#int_rtcc
void isr(){
int Mul=128; // Cada vez que ocurre la interrupcion
if(++line>7)Line=0; // selecciona la siguiente linea, si se pasa de 7 vuelve a 0.

if(++ptime>5){ // Suma 1 a ptime. Si se pasa de 20
ptime=0; // lo pone en 0 y suma 1 a time.
if(++time>200){ // Si se pasa de 200
time=0; // lo pone en 0
Flag=true; // y activa el flag.
}
}


for(t=0;t<8;t++){ // Bucle 0 - 7 (Lineas)

output_bit(dLin,!(Visor[Line]&Mul)); // dLin es seteado con el valor
// del bit de la fila actual.
if (Line==t)output_high(dClm); // Si Line es igual a t
// activa el bit correspondiente
else output_low(dClm); // a la columna, sino lo desactiva.

output_low(Clk); //
output_high(Clk); // Rota el contenido interno del 74HC595.

Mul>>=1; // Divide la mascara que compara con Visor[] (128,64,32...)
}
output_low(Load);
output_high(Load);// El contenido interno del integrado pasa a las salidas.

}
void main(){
int k;
set_tris_a(0x00);
set_tris_b(0x00);
for (k=0;k<8;k++){
Visor[k]=0;
}
for (k=0;k<96;k++){
Memoria[k]=0;
} // Limpia la memoria y el visor

flag=true; // Activo el flag para que cargue la memoria

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Configuración del Timer0
enable_interrupts(int_rtcc); // Interrupcion por Timer0
enable_interrupts(global); // Interrupciones globales

do{
if (Flag){ // Si el flag está activado
flag2=true; // Activa el flag2

for (k=0;k<8;k++){ // Pasa el contenido de las primeras 8
visor[k]=Memoria[k]; // columnas en memoria al visor
}

for (k=0;k<95;k++){ // Rota el contenido de toda la memoria
Memoria[k]=Memoria[k+1];// a la izquierda 1=1+1, 2=2+1, n=n+1...

if (Memoria[k]!=0){Flag2=false;} // Si hay alguna columna que no
// esté vacía desactiva el flag2
}
Memoria[95]=0; // Limpia la ultima columna de la memoria

if (Flag2){ // Si flag2 está activo
indx=7; // a partir de la columna 7
CargaMem("PICROBOT"); // escribe PICROBOT
}
Flag=false; // Desactiva el flag

}
}while (true); // Bucle infinito


}

void GuardaClm(char c){
if (indx<94){
Memoria[indx]=c; // Guarda la columna en la ubicación actual de memoria
indx++; // y aumenta el indice
}

el compilador es el pic c compiler (pcw)
 
El primer error te da ya que el 16f84 no cuenta con oscilador interno, por lo que deberas cambiar por una configuracion por un oscilador externo con cristal.
 
El primer error te da ya que el 16f84 no cuenta con oscilador interno, por lo que deberas cambiar por una configuracion por un oscilador externo con cristal.

si me pudieses corregir en el codigo muchas gracias y al block no le entendi muy bien xD
 
si me pudieses corregir en el codigo muchas gracias y al block no le entendi muy bien xD

no amigo andas mal si quieres que hagan el trabajo por ti, primero debes ver las diferencias entre cada micro, en este caso y como lo menciono adrianmb uno tiene un oscilador interno y otro no, por lo cual al que no lo tienes debes agregarle en la configuracion externa (circuito) un xtal, el codigo que marca error concerniente a esto debes eliminarlo y segundo checar los pines de entrada y salida para que haya una compatibilidad, ademas de eso no creo que haya mas problemas, asi que agarra los datasheets de cada microcontrolador y ponte a leer!
 
Volver
Arriba