Autor Tema: Timer0 4 display 7 segmentos multiplexado en PicBasicPro  (Leído 3294 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado javier687

  • PIC10
  • *
  • Mensajes: 5
Timer0 4 display 7 segmentos multiplexado en PicBasicPro
« en: 02 de Abril de 2013, 23:14:48 »
Les dejo este material para revisar en el caso de mejoras, de seguro las tiene, me costo mucho trabajo llegar a esto, esta funcionando.

Es un monedero echo con un pic 16f873a.
con el pulsador incrementamos el conteo descendente de 60 en 60 minutos, al llegar a cero por el puerto Rb7 se escuchara un buzzer por 10 segundos y quedara en la espera del pulsador.
en espera aparecxe la leyenda ON en los display.
les dejo el hex y archivo de proteus para que lo revicen.

'TEMPORIZADOR PARA MONEDERO
'REESCRITO POR JAVIER SARACHO
'FECHA 2/4/13
'PIC BASIC PRO
'------------------------------------------------------------------------------
Include "P16F873A.inc"
Define      OSC 4         'DEFINO OSCILADOR EXTERNO
Define BUTTON_PAUSE 1000   'DEFINO DELAY PARA PULSADOR
'------------------------------------------------------------------------------
@_Config_INTRC_OSC_NOCLKOUT   'CONFIGURACIONES BASICAS
@_Config_WDT_OFF
@_Config_MCLRE_OFF
@_Config_CP_ON
@_Config_PWRTE_ON
@_Config_OST_ON
'------------------------------------------------------------------------------
TRISA=%111100            'DEFINO PUERTOS
TRISB=0   
TRISC=0
'------------------------------------------------------------------------------
PORTA=%111100            'ESTABLESCO EL ESTADO DE LOS PUERTOS
PORTB=0
PORTC=0
'------------------------------------------------------------------------------
ADCON1=%00001110         'DEFINO PUERTOS COMO DIGITALES
PCON=%00000001            'POWER CONTROL, POR-BOR(POWER ON RESET-BROWN OUT RESET)
OPTION_REG=%00000111      'DEFINO PRESCALER TIMER0
INTCON=%10100000         'HABILITO INTERRUPCIONES Y TIMER0
Symbol PUL=porta.3         
'-------------------------------------------------------------------------------
I var Byte               'Variables
d1 var Byte
d2 var Byte
d3 var Byte
M var Word
DATO var Byte[10]
AA var Byte
TIM var Word
'------------------------------------------------------------------------------
DATO[0]=63                     'Cargo en la memoria los numeros en binario
DATO[1]=6
DATO[2]=91
DATO[3]=79
DATO[4]=102
DATO[5]=109
DATO[6]=125
DATO[7]=7
DATO[8]=127
DATO[9]=103

Pause 500
'------------------------------------------------------------------------------
inicio:

   Button PUL,0,0,0,AA,1,Suma      'Pulsador para la suma de tiempo de 60' en 60'
   If M=0 Then I=0
   portb.7=1                  'Buzzer por 10 seg
   Pause 10000
   portb.7=0
   Call Esperar

Paso:
   For M = I to 0 step -1         'Conteo Regresivo
   Call Mostrar
   Next M

   Goto inicio

Mostrar:                     'Muestro en display 7 segmentos
   portc.7=1                  'Led deberia parpadear pero me agoto!
   d1=M DIG 0                  
   d2=M DIG 1
   d3=M DIG 2
   porta.0=1                  'Port A0, A1, habilitan display Catodo(-)
   portc=DATO[d1]               'Digito 1
   portb=DATO[d3]               'Digito 3
   Pause 10
   porta.0=0
   porta.1=1
   portc=DATO[d2]               'Digito 2
   portb=%01110110
   Pause 10
   porta.1=0
   
   Button PUL,0,0,0,AA,1,Suma1
         
   If TIM=915 Then
   TIM=0
   Return
   Endif
'-----------------------------------------------------------------------------
   ON INTERRUPT GOTO Mas         'Interrupcion Timer0
   INTCON=%10100000
   Disable
   Goto mostrar
   
Suma:
   I = I + 60
   Return
   
Suma1:
   M=M+61
   Return
'-----------------------------------------------------------------------------
Mas:                     'Salto de interrupcion, sumo 1 a TIM
   INTCON=%10100000         'Cuando TIM = 915 entoces son 59,965 seg
   portc.7=0
   TIM=TIM+1
   INTCON.2=0               'reinicio TMR0
   Enable                  'Activo las interrupciones
   Return
'------------------------------------------------------------------------------
Esperar:                  'Muestro en display -On-
   porta.0=1               
   portb=%00111111
   portc=%01000000
   Pause 5
   porta.0=0
   Pause 2
   porta.1=1
   portb=%01000000
   portc=%01010100
   Pause 5
   porta.1=0
   Pause 2
   Button PUL,0,0,0,AA,1,Suma   'Con el pulsador a 0 pongo mi contador TIM=0
   If PUL=0 Then Goto Paso      'Voy a Paso
   TIM=0
   Goto esperar            'Si no Espera
   
   End

Desconectado RockLee_89

  • PIC16
  • ***
  • Mensajes: 140
Re: Timer0 4 display 7 segmentos multiplexado en PicBasicPro
« Respuesta #1 en: 03 de Abril de 2013, 14:43:46 »
gracias por el aporte javier687  en algun tiempo libre le hecho un hojo ya que facil mente puede sacar algo para otra aplicacion

saludos

Desconectado javier687

  • PIC10
  • *
  • Mensajes: 5
Re: Timer0 4 display 7 segmentos multiplexado en PicBasicPro
« Respuesta #2 en: 03 de Abril de 2013, 15:08:57 »
ok, gracias a toda la comunidad de todopic!


 

anything