Autor Tema: Problema con contador 0 a 99 multiplexiado  (Leído 3084 veces)

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

Desconectado Chrisbaf

  • PIC16
  • ***
  • Mensajes: 178
Problema con contador 0 a 99 multiplexiado
« en: 21 de Mayo de 2009, 19:58:06 »
He hecho un pequeño programa el cual cuenta de 0 a 99 el programa va bien hasta que pasa por tercera vez por 55 regresa a 00 el  programa puede ser utilizado como un turnero , alguna sugerencia  :(

el codigo es el siguiente

include "bs2defs.bas"
@ DEVICE  INTRC_OSC_NOCLKOUT' oscilador 4
@ DEVICE  WDT_OFF '@ DEVICE  BOD_Off ' Brown-Out Detect conectado
@ DEVICE  MCLR_Off ' Master Clear Externo desconectado
@ DEVICE  LVP_Off ' Low-Voltage Programming desconectado
@ DEVICE  CPD_OFF ' Data Memory Code Protect desconectado
@ DEVICE  PROTECT_Off ' Program Code Protection conectado
x var byte
y var byte
cmcon = 7
porta  = 0
portb  = 0
trisb = 0
trisa =%0010010 
symbol timer  = porta.1
symbol tr1    = porta.0
symbol tr2    = porta.2
cont var byte
patron var BYTE                               
cont = 0
b1 = 0
b2 = 0

tr1 = 0
tr2 = 0 
INTCON =     %00100000
OPTION_REG = %00000111
TMR0 = 217
INTCON     = %10100000

ON INTERRUpt goto isr
b2 = 0                                         
control:
if timer = 1 then incre
goto control
incre
b2 = b2 + 1
pause 50                                   
goto control

DISABLE
                     
ISR:
TMR0 = 217

b1 = b2 dig 1
LOOKUP b1, [$3F, $06, $5B, $4F, $66, $6D, $7D, $07, $7F, $6F], patron

portb = patron       
tr1= 0
tr2= 1

pause 5
b1 = b2 dig 0
LOOKUP b1, [$3F, $06, $5B, $4F, $66, $6D, $7D, $07, $7F, $6F], Patron

portb = patron
tr2 = 0
tr1 = 1
pause 3

resume
enable
end

alguna sugerencia
« Última modificación: 21 de Mayo de 2009, 21:19:50 por Chrisbaf »

Desconectado Chrisbaf

  • PIC16
  • ***
  • Mensajes: 178
Re: Problema con contador 0 a 99 multiplexiado
« Respuesta #1 en: 21 de Mayo de 2009, 21:44:20 »
bueno  ya encontre el problema estaba en el ultimo dato de la tabla y otra que no estaba limitando el conteo ademas use el comamdo button aqui se los dejo
el programa corregido y donde utilizo interrupcion por tmr0 para que entre todos sigamos aprendiendo. seguro les sera de utilidad  ya que puede ser utilizado como un contador de eventos..Saludos 8)include "bs2defs.bas"
@ DEVICE  INTRC_OSC_NOCLKOUT' oscilador 4
@ DEVICE  WDT_OFF ' Watchdog Timer desconectado
@ DEVICE  PWRT_on ' Power-On Timer conectado
@ DEVICE  BOD_Off ' Brown-Out Detect desconectado
@ DEVICE  MCLR_Off ' Master Clear Externo desconectado
@ DEVICE  LVP_Off ' Low-Voltage Programming desconectado
@ DEVICE  CPD_OFF ' Data Memory Code Protect desconectado
@ DEVICE  PROTECT_Off ' Program Code Protection desconectado
x var byte
y var byte
cmcon = 7
porta  = 0
portb  = 0
trisb = 0
trisa =%0010010 
symbol timer  = porta.1
symbol tr1    = porta.0
symbol tr2    = porta.2
cont var byte
patron var BYTE                               
cont = 0
b1 = 0
b2 = 0

tr1 = 0
tr2 = 0 
INTCON =     %00100000
OPTION_REG = %00000111
TMR0 = 217
INTCON     = %10100000

ON INTERRUpt goto isr
reset:
b2 = 0                                         
control:
button timer ,1,255,0,b3,1,incre
goto control
incre
b2 = b2 + 1
pause 50   
if b2 >= 100 then   reset
                               
goto control

DISABLE
                     
ISR:
TMR0 = 217

b1 = b2 dig 1
LOOKUP b1, [$3F, $06, $5B, $4F, $66, $6D, $7D, $07, $7F, $67], patron

portb = patron       
tr1= 0
tr2= 1

pause 5
b1 = b2 dig 0
LOOKUP b1, [$3F, $06, $5B, $4F, $66, $6D, $7D, $07, $7F, $67], Patron

portb = patron
tr2 = 0
tr1 = 1
pause 3

resume
enable
end




 

anything