Está en la página 1de 3

Objetivo

Hacer un programa que calculara el periodo


Cdigo
list p=16F877,f=INHX8M ;Tipo de procesador.
include "P16F877.INC" ;Definiciones de registros internos.
PERIODO_H equ 0x20
PERIODO_L equ 0x21
CAP_TEMP_H equ 0x22
CAP_TEMP_L equ 0x23
N_FLANCO equ 0x24
W_TEMP equ 0x25
STATUS_TEMP equ 0x26

org 0x00
goto inicio
org 0x04
goto inter
org 0x15

inicio clrf PERIODO_H
clrf PERIODO_L
clrf CAP_TEMP_H
clrf CAP_TEMP_L
clrf N_FLANCO

clrf PORTB
clrf PORTD
bsf STATUS, RP0
clrf TRISB
clrf TRISD
bsf TRISC,RC2
bsf PIE1,CCP1IE
bcf STATUS,RP0
clrf TMR1L
clrf TMR1H
movlw b'00110001'
movwf T1CON
movlw b'11000000'
movwf INTCON
movlw b'00000101'
movwf CCP1CON
loop movf PERIODO_H,w
movwf PORTB
movf PERIODO_L,w
movwf PORTD
goto loop
movwf W_TEMP
swapf STATUS,w
inter movwf W_TEMP
swapf STATUS,w
movwf STATUS_TEMP
clrf STATUS
btfss PIR1,CCP1IF
btfsc N_FLANCO,0
goto medir
movf CCPR1L,w
movwf CAP_TEMP_L
movf CCPR1H,w
movwf CAP_TEMP_H
incf N_FLANCO,f
swapf STATUS_TEMP,w
movwf STATUS
swapf W_TEMP,f
swapf W_TEMP,w
bcf PIR1,CCP1IF

retfie
medir movf CAP_TEMP_H,w
subwf CCPR1L,w
movwf PERIODO_L
btfss STATUS,C
incf CAP_TEMP_H
movf CAP_TEMP_H,w
subwf CCPR1H,w
movwf PERIODO_H
bcf PIR1,CCP1IF
swapf STATUS_TEMP,w
movwf STATUS
swapf W_TEMP,f
SWaPF W_TEMP,w
retfie
end
simulacin
resultados

También podría gustarte