TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: jfumanchero 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
-
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
-
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
-
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
-
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