Autor Tema: Ayuda con el siguiente codigo en C  (Leído 3522 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kilopondio

  • PIC12
  • **
  • Mensajes: 89
Ayuda con el siguiente codigo en C
« en: 16 de Octubre de 2008, 12:23:02 »
El querido Vszener ha tenido la gentileza de cederme este codigo para una aplicacion que tengo que calza como un guante sin mencionar que el codigo esta muy bien explicado y se entiende pero tengo el problema que no lo puedo compilar ya que al hacerlo el puntero del mouse se detiene al comienzo de la rutina "main" y me dice "...A numeric value must appear here" .... y me volvi loco para quitarlo sin ningun éxito.

Yo estoy usando el CCS version 4.033 y él uso el V3.236.¿Sera ese el problema o hay algun fallo semantico por ahi?.

Lo he copiado exactamente como esta en el post y lo revise dos veces.

Lo he tratado de ubicar a Vszener pero no he tenido suerte para que me de una mano con este codigo que reitero esta excelente.

¿Me pueden ayudar entre todos?.

Muchas gracias a Vszener y todos los demas colisteros.


Kilopondio





VsZeNeR'05
// 15/Noviembre/05
//
// Programa: Interrupcion debido a cambio de estado del portb <4:7>
// Version: 0.0
//
// Dispositivo: PIC 16F648A Compilador: CCS vs3.236
// Entorno IDE: MPLAB IDE v7.22 Simulador: Proteus 6.7sp3
//
// Notas: Este programa muestra como funciona la interrupcion de cambio de estado de
// algunos de los pines <4:7> del portb. Mientras no se pulse ningun boton,
// ilumina 4 led's de forma consecutiva y viceversa, cuando se produce un
// cambio de estado en algunos de los pines del port b <4:7> genera interrupcion.
// Se ha programado de tal forma que sepa diferenciar que pin genera la interrupcion.
// Interrupcion:
// B4 -> Se produce la secuencia de iluminacion 1 vez
// B5 -> Se produce la secuencia de iluminacion 2 veces
// B6 -> Se produce la secuencia de iluminacion 3 veces
// B7 -> Se produce la secuencia de iluminacion 4 veces
// Conexiones: A0 -> led
// A1 -> led
// A2 -> led
// A3 -> led
// B0 -> led
// B4 -> boton
// B5 -> boton
// B6 -> boton
// B7 -> boton
//////////////////////////////////////////////////////////////////////////////////

#include <16f648a.h> //pic a utilizar
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP //ordenes para el programador
#fuses INTRC //oscilador interno
#use delay (clock=4000000) //Fosc=4Mhz
#use standard_io(a)
#use fast_io(b)
#byte port_b=0x06 //declaracion del puerto b

///DECLARACION DE FUNCIONES GLOBALES
void led(void); //funcion que ejecuta la iluminacion del porta dada la interrupcion

///DECLARACION DE VARIABLES GLOBALES
int last_b; //variable de almacenar el estado del portb

///LLAMADA FUNCION INTERRUPCION
#INT_RB
void IntPortB4_7( )
{
char cont=0; //contador para la iluminacion de la interrupcion
byte changes; //variable que almacena que pin a realizado la interrupcion

output_high(PIN_B0); //indicador interrupcion on

changes = last_b ^ port_b; //changes<-pin que genera la interrupcion

last_b = port_b; //last_b=como estaba el portb antes de interrupcion

if (bit_test(changes,4 )&& !bit_test(last_b,4)) //¿PIN_B4 genera interrupcion?
led( ); //SI -> ejecuta 1 vez funcion led()
if (bit_test(changes,5)&& !bit_test (last_b,5)){ //¿PIN_B5 genera interrupcion?
do{ //SI -> ejecuta 2 veces funcion led()
led( );
cont++;
}while(cont<2);
}
if (bit_test(changes,6)&& !bit_test (last_b,6)){ //¿PIN_B6 genera interrupcion?
do{ //SI -> ejecuta 3 veces funcion led()
led( );
cont++;
}while(cont<3);
}
if (bit_test(changes,7)&& !bit_test (last_b,7)){ //¿PIN_B7 genera interrupcion?
do{ //SI -> ejecuta 4 veces funcion led()
led( );
cont++;
}while(cont<4);
}

cont=0; //reset variable cont
output_low(PIN_B0); //indicador interrupcion off
}

///PROGRAMA
void main(void)
{
char led_on=0b0001; //led a iluminar

set_tris_b (0b11111110); //portb entrada menos pin B0 es salida

enable_interrupts(int_rb); //activar interrupcion rb4:7
enable_interrupts(GLOBAL); //activar interrupciones

do{ //bucle...

do{ //iluminacion hacia izquierda
output_a(led_on);
rotate_left(&led_on,1);
delay_ms(300);
}while(bit_test(led_on,3)==0);

do{ //iluminacion hacia derecha
output_a(led_on);
rotate_right(&led_on,1);
delay_ms(300);
}while(bit_test(led_on,0)==0);
last_b = input_b( );
}while(TRUE); //...infinito
}
///FUNCION QUE EJECUTA LA SECUENCIA DE ILUMINACION DEBIDO A INTERRUPCION POR EL PORTB4:7
void led(void)
{
signed char i; //variable indice
int leds[2]={0b1001,0b0110}; //led's

for(i=0;i<2;i++){ //led's on fuera-dentro
output_a(leds[ i ]); //ilumino led's correspondientes
delay_ms(150);
}
for(i=1;i>-1;i--){ //led's on dentro-fuera
output_a(leds[ i ]); //ilumino led's correspondientes
delay_ms(150);
}
}
« Última modificación: 16 de Octubre de 2008, 17:07:25 por kilopondio »

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: AYUDA CON ESTE GRAN CODIGO!!!!
« Respuesta #1 en: 16 de Octubre de 2008, 16:54:25 »
porfavor lea las reglas del foro, estas colocando un titulo que no sugiere mucho sobre el contenido de tu post, y ademas esta en mayuculas.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado kilopondio

  • PIC12
  • **
  • Mensajes: 89
Re: AYUDA CON ESTE GRAN CODIGO!!!!
« Respuesta #2 en: 16 de Octubre de 2008, 17:06:17 »
Micro_cadaver......a buen entendedor...pocas palabras....Creo que fui lo suficientemente explicito teniendo en cuenta que si haces un click puedes ver lo que hay dentro.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Ayuda con el siguiente codigo en C
« Respuesta #3 en: 16 de Octubre de 2008, 17:14:33 »
Hola.

A mi me compilo sin ningun problema. CCS v4.057 (PCM v.4.073)

Saludos
El papel lo aguanta todo

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: AYUDA CON ESTE GRAN CODIGO!!!!
« Respuesta #4 en: 16 de Octubre de 2008, 17:39:17 »
Micro_cadaver......a buen entendedor...pocas palabras....Creo que fui lo suficientemente explicito teniendo en cuenta que si haces un click puedes ver lo que hay dentro.

Hola kilopondio! El tema es q por algo hay reglas en el foro... si no tendriamos q estar haciendo click en cada hilo para saber lo q hay dentro y no es la idea :S
Ademas se busca tener algo bien indexado para quienes usen el buscador del foro ;)
Saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: AYUDA CON ESTE GRAN CODIGO!!!!
« Respuesta #5 en: 16 de Octubre de 2008, 19:44:37 »
Micro_cadaver......a buen entendedor...pocas palabras....Creo que fui lo suficientemente explicito teniendo en cuenta que si haces un click puedes ver lo que hay dentro.

AYUDA CON ESTE GRAN CODIGO!!!!

entiendo que necesitas ayuda.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado bruxx

  • PIC10
  • *
  • Mensajes: 7
Re: Ayuda con el siguiente codigo en C
« Respuesta #6 en: 16 de Octubre de 2008, 20:08:20 »
Toma el codigo compilado, te mando el .hex . Me tomo menos de un minuto con el compilador CCS.
 :mrgreen: Suerte.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Ayuda con el siguiente codigo en C
« Respuesta #7 en: 16 de Octubre de 2008, 22:42:21 »
Micro_cadaver......a buen entendedor...pocas palabras....Creo que fui lo suficientemente explicito teniendo en cuenta que si haces un click puedes ver lo que hay dentro.

¿Ah, si? ¿O sea que tenemos que hacer un click por cada usuario al que se le de la gana poner el título que quiera?¿pensás que sos el único que publica acá?
A mi ese click me cuesta tiempo. Y si sumas el tiempo de todos los hacen ese click porque no saben de que trata tu duda, para ingresar y darse cuenta de que no pueden colaborar o no les interesa, eso suma mucho. Un foro es la suma de muchos. Y pretendemos mantenerlo organizado un poco.

Respetá las reglas del foro.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado kilopondio

  • PIC12
  • **
  • Mensajes: 89
Re: Ayuda con el siguiente codigo en C
« Respuesta #8 en: 17 de Octubre de 2008, 08:12:06 »
Gracias a todos por darme una mano.Evidentemente hay algo que puse mal o alguna coma o parentesis que debe estar dando vueltas por ahi que no me di cuenta.

Saludos y buen fin de semana!.


Kilo

Desconectado DarkVect

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 302
Re: Ayuda con el siguiente codigo en C
« Respuesta #9 en: 17 de Octubre de 2008, 08:31:53 »
Si es un problema de una coma, () o similar, es IMPOSIBLE detectarlo en un código que no está identado tal y como lo posteas.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Ayuda con el siguiente codigo en C
« Respuesta #10 en: 17 de Octubre de 2008, 17:10:46 »
Hola.

Creo que te fallo el copy - paste  :D porque a mi me compilo sin errores, copiandolo directamente del post y sin hacerle retoques.

Saludos
El papel lo aguanta todo

Desconectado kilopondio

  • PIC12
  • **
  • Mensajes: 89
Re: Ayuda con el siguiente codigo en C
« Respuesta #11 en: 18 de Octubre de 2008, 08:20:40 »
Si y tal vez unas copas antes de ver el codigo  :D.

Saludos pa' todos.

Kilo

Desconectado kilopondio

  • PIC12
  • **
  • Mensajes: 89
Re: Ayuda con el siguiente codigo en C
« Respuesta #12 en: 18 de Octubre de 2008, 08:23:01 »
Gracias Bruxx por asistirme con tu valiosa ayuda.

Que tengas buen fin de semana igula que todos!!!


Kilo   :)