Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

25/12/2011 #1


Reloj digital, es correcto?
Estaba con la idea de simular en proteus un reloj digital con un display lcd y programado desde pic basic pro. Buscando en la web encontre el que les adjunto, el tema es que el codigo ejecuta un monton de IF/ENDIF y luego de todo esto hace una pausa de 1000 milisegundos (1 segundo) antes de volver a ejecutar el bucle principal nuevamente.

Mi duda es: es esta la forma correcta de hacerlo? No se produce retraso por la demora que se tiene en ejecutar todo el bucle principal? Porque me imagino que ademas del segundo de espera se debe ir sumando el tiempo que tarda en recorrer todo el bucle y se debe juntar mucho error.

En caso de que no sea la forma correcta necesitaria que me orienten sobre como manejar el tiempo minimizando el error.

Código PHP:
'%%%%%%%%%%%%%%%%%%%%%%%%%%%% MICROCONTROLADORES PIC %%%%%%%%%%%%%%%%%%%%%%%%%%%%%

'
AUTOR BRYAM HUAMANCHUMO BACA
'LABORATORIO # 08d : RELOJ DIGITAL PROGRAMABLE

DEFINE LCD_DREG  PORTD
DEFINE LCD_DBIT  0
DEFINE LCD_RSREG PORTE
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG  PORTE
DEFINE LCD_EBIT 1

ADCON1 = %0000010

TRISD = 0

X VAR BYTE
Y VAR BYTE
Z VAR BYTE
D VAR BYTE
F VAR BYTE
M VAR BYTE
A VAR WORD

Minutos VAR PORTB.0
Hora VAR PORTB.1
Dia VAR PORTB.2
Fecha VAR PORTB.3
Mes VAR PORTB.4
Anio VAR PORTB.5

TRISB.0 = 1
TRISB.1 = 1
TRISB.2 = 1

X = 0
Y = 0
Z = 0
D = 0

Inicio:

For A = 2000 TO 2050         '
Año

For 0 TO 11              'Mes         

For F = 1 TO 31              '
Numero de dias de Mes               
  
For 0 TO 23              'Hora

 D = D + 1                   '
Día 
 
 
IF 7 Then
             
    D 
0
             
 
EndIF 
 
   For 
0 TO 59           'Minutos
        
      For Z = 0 TO 59        '
Segundos
         
         
IF Minutos 1 Then
         
             Y 

             
             
IF 60 Then
             
             Y 
0
             
             
EndIF  
         
         EndIF
         
         IF 
Hora 1 Then
         
            X 
1
            
            
IF 24 Then
             
             X 
0
             
            
EndIF 
          
         EndIF
         
         IF 
Dia 1 Then
         
            D 
1
            
            
IF 7 Then
             
             D 
0
             
            
EndIF 
          
         EndIF
         
         IF 
0 Then
      
           
IF >= AND <= 11 Then 
            
              LCDOut $FE
,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," AM/LUN "
  
           
EndIF
            
           IF 
11 AND <= 23 Then
            
              LCDOut $FE
,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," PM/LUN "
               
           
EndIF
         
         EndIF
         
         IF 
1 Then
      
           
IF >= AND <= 11 Then 
            
              LCDOut $FE
,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," AM/MAR "
  
           
EndIF
            
           IF 
11 AND <= 23 Then
            
              LCDOut $FE
,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," PM/MAR "
               
           
EndIF
         
         EndIF
       
         IF 
2 Then
      
           
IF >= AND <= 11 Then 
            
              LCDOut $FE
,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," AM/MIE "
  
           
EndIF
            
           IF 
11 AND <= 23 Then
            
              LCDOut $FE
,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," PM/MIE "
               
           
EndIF
         
         EndIF
       
         IF 
3 Then
      
           
IF >= AND <= 11 Then 
            
              LCDOut $FE
,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," AM/JUE "
  
           
EndIF
            
           IF 
11 AND <= 23 Then
            
              LCDOut $FE
,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," PM/JUE "
               
           
EndIF
         
         EndIF
         
         IF 
4 Then
      
           
IF >= AND <= 11 Then 
            
              LCDOut $FE
,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," AM/VIE "
  
           
EndIF
            
           IF 
11 AND <= 23 Then
            
              LCDOut $FE
,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," PM/VIE "
               
           
EndIF
         
         EndIF
         
         IF 
5 Then
      
           
IF >= AND <= 11 Then 
            
              LCDOut $FE
,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," AM/SAB "
  
           
EndIF
            
           IF 
11 AND <= 23 Then
            
              LCDOut $FE
,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," PM/SAB "
               
           
EndIF
         
         EndIF
         
         IF 
6 Then
      
           
IF >= AND <= 11 Then 
            
              LCDOut $FE
,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," AM/DOM "
  
           
EndIF
            
           IF 
11 AND <= 23 Then
            
              LCDOut $FE
,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," PM/DOM "
               
           
EndIF
         
         EndIF
         
         IF 
Fecha 1 Then

              F 

             
              
IF 32 Then
             
              F 
1
             
              
EndIF
   
         EndIF   
            
         IF 
Mes 1 Then

              M 

             
              
IF 12 Then
             
              M 
0
             
              
EndIF
   
         EndIF
        
         IF 
AND AND <= 32 Then
         
            
IF 32 Then
         
            F 
1
            
            
EndIF
         
            
LCDOut $FE,$C0," ",DEC2 F," ENE DEL ",DEC4 A
         
         
EndIF 
         
         IF 
AND AND <= 29 Then
         
            LCDOut $FE
,$C0," ",DEC2 F," FEB DEL ",DEC4 A
         
            
IF 29 Then
         
            F 
1
            
            M 

              
            
EndIF
           
         EndIF 
         
         IF 
AND AND <= 32 Then
         
            
IF 32 Then
         
            F 
1
            
            
EndIF
         
            
LCDOut $FE,$C0," ",DEC2 F," MAR DEL ",DEC4 A
   
         
EndIF 
         
         IF 
AND AND <= 31 Then
         
            
IF 31 Then
         
            F 
1
            
            M 
4
            
            
EndIF
         
            
LCDOut $FE,$C0," ",DEC2 F," ABR DEL ",DEC4 A
         
         
EndIF 
         
         IF 
AND AND <= 32 Then
         
            
IF 32 Then
         
            F 
1
            
            
EndIF
         
            
LCDOut $FE,$C0," ",DEC2 F," MAY DEL ",DEC4 A
      
         
EndIF 
         
         IF 
AND AND <= 31 Then
         
            
IF 31 Then
         
            F 
1
            
            M 
6
            
            
EndIF
         
            
LCDOut $FE,$C0," ",DEC2 F," JUN DEL ",DEC4 A
         
         
EndIF 
         
         IF 
AND AND <= 32 Then
         
            
IF 32 Then
         
            F 
1
            
            
EndIF
         
            
LCDOut $FE,$C0," ",DEC2 F," JUL DEL ",DEC4 A
        
         
EndIF 
         
         IF 
AND AND <= 32 Then
         
            
IF 32 Then
         
            F 
1
            
            
EndIF
         
            
LCDOut $FE,$C0," ",DEC2 F," AGO DEL ",DEC4 A
        
         
EndIF 
         
         IF 
AND AND <= 31 Then
         
            
IF 31 Then
         
            F 
1
            
            M 
9
            
            
EndIF
         
            
LCDOut $FE,$C0," ",DEC2 F," SET DEL ",DEC4 A
         
         
EndIF 
         
         IF 
AND AND <= 32 Then
         
            
IF 32 Then
         
            F 
1
            
            
EndIF
         
            
LCDOut $FE,$C0," ",DEC2 F," OCT DEL ",DEC4 A
    
         
EndIF
         
         IF 
10 AND AND <= 31 Then
         
            
IF 31 Then
         
            F 
1
            
            M 
11
            
            
EndIF
         
            
LCDOut $FE,$C0," ",DEC2 F," NOV DEL ",DEC4 A
         
         
EndIF 
          
         IF 
11 AND AND <= 32 Then
         
            
IF 32 Then
         
            F 
1
            
            
EndIF
         
            
LCDOut $FE,$C0," ",DEC2 F," DIC DEL ",DEC4 A
     
         
EndIF 
         
         IF 
Anio 1 Then

              A 

             
              
IF 2051 Then
             
              A 
2000
             
              
EndIF
   
         EndIF
                                 
         
Pause 1000
 
      Next Z
          
   Next Y 
 
Next X

Next F

Next M

Next A
     
GoTo Inicio 
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.