yo en principio tengo hecho un programa para contar y otro para temporizar por serparado pero no se juntarlos y hacer el resto XD
este es el de contar:
;CONTADOR DEL TMR0
;Oscilador de 4Mhz
;
List p=16f84a
include "p16f84a.inc"
CONTA1 equ 0x0C
CONTA2 equ 0x0D
;******DIRECCIONES********
org 0x00
goto INICIO
org 0x04
goto int_tmr0
org 0x05
;******SUBRUTINA********
tempo clrf CONTA1 ;pone a cero los contadores
clrf CONTA2
BUCLE decfsz CONTA1,F ;decrementa i guarda el valor en el mismo registro, cuando llega a cero salta la instrucción q lo precede
goto BUCLE ;ves a BUCLE
decfsz CONTA2,F ;decrementa i guarda el valor en el mismo registro, cuando llega a cero salta la instrucción q lo precede
goto BUCLE ;ves a BUCLE
return
int_tmr0 movlw 0x99
movwf PORTB
call tempo
call tempo
call tempo
call tempo
call tempo
bcf INTCON,T0IF
retfie
;******PROGRAMA********
INICIO bsf INTCON,GIE
bsf INTCON,T0IE
bsf STATUS,RP0
movlw b'11111'
movwf TRISA
clrf TRISB
movlw b'11110111'
movwf OPTION_REG
bcf STATUS,RP0
clrf TMR0
CUENTA movf TMR0,W
movwf PORTB
goto CUENTA
end
y aparte tengo el temporizador:
list p=PIC16F4A
;+++++++++++++ETIQUETAS+++++++++++++++++++++++
F equ 1
W equ 0
PORTA equ 0x05
PORTB equ 0x06
TRISA equ 0x85
TRISB equ 0X86
STATUS equ 0x03
RP0 equ 5
OPTION_REG equ 0x81
TMR0 equ 0x81
;+++++++++++++++DIRECCIONES+++++++++++++++++++
org 0x00
goto inicio
org 0x05
;++++++++++++++++PROGRAMA+++++++++++++++++++++
inicio bsf STATUS, RP0
movlw 0x1f
movwf TRISA
clrf TRISB
movlw 0xf7
movwf OPTION_REG
clrf TMR0
cuenta movf TMR0,W
movwf PORTB
goto cuenta
end
Estos los he usado en programa s que he ido haciendo pero ahora tenia esta idea del velocimetro pero me falta pulirla jajajaaj