Autor Tema: Ayuda con subrutina de retardo  (Leído 2546 veces)

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

Desconectado jfumanchero

  • PIC10
  • *
  • Mensajes: 4
Ayuda con subrutina de retardo
« en: 17 de Octubre de 2005, 16:20:00 »
Hola: Por favor, necesito si me pueden ayudar con una subrutina de retardo de 400ms para un display de 7 segmentos que debo controlar. Esta en mplab. Esta adjunto por si lo necesitan, asi me dicen lo que tengo que modificar.

Gracias

Desconectado integratecno

  • PIC10
  • *
  • Mensajes: 7
RE: Ayuda con subrutina de retardo
« Respuesta #1 en: 17 de Octubre de 2005, 17:07:00 »
Bueno... no encontre el adjunto, pero sugiero esta rutina que encontre por hay, espero te sirva:

timer                   movlw     d"200"    ; esto da 400 ms aprox
      movwf   var1          ;variable 1
cont1      movlw   d"220"
      movwf   var2          ;variable 2
cont2      nop
      nop
      nop
      nop
      nop
      nop
      decfsz   var2,f
      GOTO   cont2
      decfsz   var1,f
      GOTO   cont1
      return

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Ayuda con subrutina de retardo
« Respuesta #2 en: 17 de Octubre de 2005, 21:56:00 »
Esto te va a sacar del apuro. Genera subrutinas de tiempo en ensamblador, e incluso incluye el tiempo que tardas en llamarlas y regresar de ellas.

http://rapidshare.de/files/6422364/calcular_retardos.zip.html

Desconectado jfumanchero

  • PIC10
  • *
  • Mensajes: 4
RE: Ayuda con subrutina de retardo
« Respuesta #3 en: 18 de Octubre de 2005, 07:00:00 »
Muchas gracias por contestar tan rápido.
Acá les incluyo el programa.

#include p16f84.inc

status   equ   03h
porta    equ   05h
portb       equ   06h
trisa      equ   85h
trisb      equ   86h
pcl      equ   02h
cuenta   equ   0ch
retardo   equ   0dh
f      equ   1
w      equ   0
#define   banco0      bcf      status,RP0
#define   banco1      bsf      status,RP0

      org      00h
      goto      inicio

tabla      movwf   pcl
disp      retlw   40h
      retlw   79h
      retlw   24h
      retlw   30h
      retlw   19h
      retlw   12h
      retlw   02h
      retlw   78h
      retlw   00h
      retlw   10h

inicio   banco1
      bsf      trisa,0
      clrf      trisb
      banco0
      clrf      cuenta
muestra   movlw      disp
      addlw      cuenta
      call      tabla
      movwf      portb
      btfss      porta,0
      call      suma1
      goto      muestra
suma1      incf      cuenta,f
      movlw      0Ah
      subwf      cuenta,w
      btfsc      status,2
      clrf      cuenta
      call      rebote
espera   btfss      porta,0
      goto      espera
      return   
rebote   movlw      0ffh
      movwf      retardo
rebo      decfsz   retardo,f
      goto      rebo
      return
      end


Saludos

Desconectado jfumanchero

  • PIC10
  • *
  • Mensajes: 4
RE: Ayuda con subrutina de retardo
« Respuesta #4 en: 18 de Octubre de 2005, 07:01:00 »
Este es el mismo programa que modifique yo, pero como puedo saber si realmente funciona??

#include p16f84.inc

status      equ   03h
porta       equ   05h
portb      equ   06h
trisa      equ   85h
trisb      equ   86h
pcl         equ   02h
cuenta      equ   0ch
retardo      equ   0dh
f         equ   1
w         equ   0
contador1   equ 0fh
contador2   equ   1fh
contador3   equ 2fh
#define       banco0      bcf      status,5
#define      banco1      bsf      status,5

   
tabla   movwf   pcl
disp   retlw   40h
      retlw   79h
      retlw   24h
      retlw   30h
      retlw   19h
      retlw   12h
      retlw   02h
      retlw   78h
      retlw   00h
      retlw   10h

inicio            banco1
      bsf         trisa,0
      clrf      trisb
               banco0
      clrf      cuenta
muestra   movlw      disp
      addlw      cuenta
      call      tabla
      movwf      portb
      btfss      porta,0
      call      suma1
      goto      muestra
suma1   incf      cuenta,f
      movlw      0Ah
      subwf      cuenta,w
      btfsc      status,2
      clrf      cuenta
      call      rebote
delay   movlw      d"199"
      movwf      contador1
      movlw      d"111"
      movwf      contador2
      movlw      d"6"
      movwf      contador3
dly      decfsz      contador1,f
      goto      dly
      decfsz      contador2,f
      goto      dly
      decfsz      contador3,f
      goto      dly
      return
rebote   movlw      0ffh
      movwf      delay
rebo   decfsz      delay,f
      goto      rebo
      return
      end