📄 ejem_31.asm
字号:
; EJEMPLO 31
; Autor: Mikel Etxebarria
; (c) Ingenier韆 de Microsistemas Programados S.L.
; www.microcontroladores.com
; Bilbao 2006
;
;Los m骴ulos CCPx. Modo de Comparaci髇.
;
;El TMR1 cuenta tantos pulsos externos como se indique mediante los interruptores conectados a
;RA5-RA0 del laboratorio PIC'School. Cada vez que se alcanza el valor fijado, la salida RB0
;cambia de estado.
List p=16F876A ;Tipo de procesador
include "P16F876A.INC" ;Definiciones de registros internos
;Ajusta los valores de la palabra de configuraci髇 durante el ensamblaje:
;protecci髇 de c骴igo y datos=OFF, LVP=OFF, WDT=OFF y OSC=XT
__config _CP_OFF&_CPD_OFF&_LVP_OFF&_WDT_OFF&_XT_OSC
org 0x00 ;Vector de RESET
goto Inicio
org 0x04 ;Vector de interrupci髇
goto Inter
org 0x05
;Programa de tratamiento de la interrupci髇 que provoca el m骴ulo CCP1 cada vez que el TMR1
;cuenta tantos pulsos externos como los prefijados mediante las entradas RA5-RA0.
Inter bcf PIR1,CCP1IF ;Repone el flag del m骴ulo CCP1
bcf T1CON,TMR1ON ;TMR1 en Off
clrf TMR1L
clrf TMR1H ;Puesta a 0 del TMR1
movlw b'00000001'
xorwf PORTB,F ;RB0 cambia de estado
bsf T1CON,TMR1ON ;TMR1 en On
retfie
;Programa principal
Inicio clrf PORTB ;Desconecta salidas
clrf PORTA
bsf STATUS,RP0 ;Selecciona banco 1
movlw b'00000110'
movwf ADCON1 ;Puerta A E/S digitales
clrf TRISB ;Puerta B se configura como salida
movlw b'00111111'
movwf TRISA ;Puerta A entradas
movwf TRISC ;RC0 entrada
bsf PIE1,CCP1IE ;Habilita interrupci髇 del m骴ulo CCP1
bcf STATUS,RP0 ;Selecciona banco 0
;El TMR1 act鷄 en el modo contador de pulsos externos sensible al flanco ascendente y con
;un preescaler de 1:1. Estos pulsos pueden ser suministrador por el generador del laboratorio
movlw b'00000010'
movwf T1CON ;TMR1 en Off
movlw b'11000000'
movwf INTCON ;Habilita interrupciones
;El m骴ulo CCP1 act鷄 en modo de comparaci髇 e interrupci髇 al coincidir
movlw b'00001010'
movwf CCP1CON ;M骴ulo CCP en modo comparaci髇
clrf CCPR1H ;Puesta a 0 de la parte alta del valor a comparar
clrf TMR1L
clrf TMR1H ;Puesta a 0 del TMR1
bsf T1CON,TMR1ON ;TMR1 en On, comienza a contar
Loop clrf CCPR1H ;Pone a 0 la parte alta del valor a comparar
movf PORTA,W
andlw b'00111111' ;Lee las entradas RA5-RA0
movwf CCPR1L ;Ajusta la parte baja del valor a comparar
goto Loop ;Bucle infinito
end ;Fin del programa fuente
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -