Autor Tema: Corrección  (Leído 4547 veces)

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

Desconectado cinera

  • PIC10
  • *
  • Mensajes: 6
Corrección
« en: 24 de Abril de 2011, 17:08:07 »
me podeis decir que estoy haciendo mal estoy empezando en esto y me e quedado pillado aki

 'pic16f628a contador ascendente y descendente dos pulsadores,un decodificador 7447 y un display 7 seg

cmcon=7
trisb=%11110000 ;hace salidas sólo los bits más bajos de Puerto B
numero VAR BYTE ;crea la variable número con valor 255
bot VAR portb.4  ;nombre para el puerto B.4
bot2 var portb.5
encerar:
numero = 0 ;carga con cero a la variable número

display:

portb=numero ;sacar por el puerto b el contenido de número

IF bot=0 THEN aumentar
if bot2=0 then disminuir
GOTO display ;ir a display

aumentar:
IF bot=0 THEN aumentar ; si el botón sigue pulsado encerrar en aumentar
PAUSE 200 ;esperar 0,2 segundos
IF numero=9 THEN encerar ;si número es =9 encerar número =0
numero=numero + 1
GOTO display ;ir a display


disminuir:
if bot2=0 then disminuir
pause 200
if numero=9 then encerar
numero=numero-1
goto display
end
« Última modificación: 27 de Abril de 2011, 08:17:12 por dogflu66 »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: correpcion
« Respuesta #1 en: 25 de Abril de 2011, 13:16:11 »
¿En este lenguaje esto significa?
IF bot=0 THEN aumentar => IF bot=0 THEN goto aumentar
¿o significa esto otro?
IF bot=0 THEN aumentar => IF bot=0 THEN gosub aumentar

Saludos desde Granada, España.

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: correpcion
« Respuesta #2 en: 25 de Abril de 2011, 14:18:17 »
Si mal no recuerdo, es la segunda opcion, funciona como un gosub que en la funcion aumentar  debe in un return al final de la misma.


cinera creo que estas utilizando mal los gosub prueba utilizando el goto, aunque segun lei no se donde, no es recomendable.


saludos

Pd. modifica el titulo de tu tema, corrección es la palabra correcta  ;-).
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: correpcion
« Respuesta #3 en: 25 de Abril de 2011, 14:45:08 »
No se usan los Gotos para evitar esto, porque esto solo lo entiende quien lo ha hecho:

y si son gosub, pues no debe de funcionar nunca, porque se llena la pila del micro rápidamente y pierde el control.
Gosub/Return se utiliza en parejas, por tantos Gosub tiene que haber otros tantos Return.
De todas formas le estoy echando un vistazo.
« Última modificación: 25 de Abril de 2011, 21:20:12 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: correpcion
« Respuesta #4 en: 25 de Abril de 2011, 20:43:44 »
A ver si esto te sirve:
Código: vb.net
  1. 'Pic16f628a contador ascendente y descendente dos pulsadores,un decodificador 7447 y un display 7 seg
  2. CMCON = 7
  3. TRISB = %11110000  'Hace salidas sólo los bits más bajos de puerto b
  4. Dim numero As Byte  'Crea la variable número con valor indeterminado
  5. Symbol bot = PORTB.4  'Nombre para el puerto b.4
  6. Symbol bot2 = PORTB.5
  7. numero = 0  'Asigna valor a la variable numero
  8. main:  'Rutina principal
  9.         PORTB = numero  'Asigna numero al puerto
  10.         If bot = 0 Then Gosub aumentar  'Botón pulsado salto con retorno a rutina aumentar
  11.         If bot2 = 0 Then Gosub disminuir  'Botón pulsado salto con retorno a rutina decrementar
  12. Goto main  'Genera lazo infinito rutina principal
  13. End                                              
  14. aumentar:
  15.         While bot = 0  'Mientras el botón está pulsado
  16.         Wend
  17.         WaitMs 10  '200  'Pausa
  18.         If numero < 9 Then numero = numero + 1  'Incrementa y limite superior
  19. Return                                            
  20. disminuir:
  21.         While bot2 = 0  'Mientras el botón está pulsado
  22.         Wend
  23.         WaitMs 10  '200 'Pausa
  24.         If numero > 0 Then numero = numero - 1  'Decrementa y limite inferior
  25. Return                                            
  26. 'End

Poner pantalla completa y máxima resolución para ver la simulación del programa:
« Última modificación: 25 de Abril de 2011, 20:56:08 por dogflu66 »
Saludos desde Granada, España.

Desconectado cinera

  • PIC10
  • *
  • Mensajes: 6
Re: Corrección
« Respuesta #5 en: 26 de Abril de 2011, 19:01:37 »
pues mira no se porque me pasara esto lo tengo igual que tu con el microcode studio-pic basic pro y me da estos errores no se no entiendo y mira que le estoy dando vueltas seguire intentandolo pero de todas maneras muchas gracias


ERROR Line 4: Syntax error. (prueba4.pbp)
ERROR Line 7: Syntax error. (prueba4.pbp)
ERROR Line 9: Bad expression. (prueba4.pbp)
ERROR Line 17: Syntax error. (prueba4.pbp)
ERROR Line 18: Bad expression. (prueba4.pbp)
ERROR Line 18: Bad expression or missing THEN. (prueba4.pbp)
ERROR Line 18: IF without a matching ENDIF. (prueba4.pbp)
ERROR Line 23: Redefiniton of LABEL waitms. (prueba4.pbp)
ERROR Line 23: Syntax error. (prueba4.pbp)
ERROR Line 24: Bad expression. (prueba4.pbp)
ERROR Line 24: Bad expression or missing THEN. (prueba4.pbp)
ERROR Line 24: IF without a matching ENDIF. (prueba4.pbp)
« Última modificación: 28 de Abril de 2011, 05:29:03 por dogflu66 »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Corrección
« Respuesta #6 en: 27 de Abril de 2011, 04:20:59 »
Si copiaste el ejemplo tal como lo dejé, es normal que no funcione, porque el código está para el Basic del Pic Simulator Ide (PSI).
« Última modificación: 28 de Abril de 2011, 05:28:22 por dogflu66 »
Saludos desde Granada, España.


 

anything