⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ejem_26.asm

📁 Varios ejemplos para utilizar la PIC 16F876 en assembrer y CCS
💻 ASM
字号:
;								EJEMPLO 26
;						Autor: Mikel Etxebarria
;			(c) Ingenier韆 de Microsistemas Programados S.L.
;						www.microcontroladores.com
;								Bilbao 2006
;
;El TMR2. Temporizaci髇 simple, segundero
;
;El TMR2 provoca una interrupci髇 cada 10 mS. Transcurridas 100 interrupciones, el tiempo total
;transcurrido es de 1 segundo.
;
;Los leds conectados a la puerta B visualizan, en binario, el segundero
		
		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

Delay			equ	0x20		;Variable de temporizaci髇

				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 TMR2 cada 10mS.

Inter		decfsz	Delay,F		;Ha pasado un segundo ??
			goto	No_es_1_seg	;No
			incf	PORTB,F		;Si, incrementa el contador de segundos
			movlw	.100
			movwf	Delay		;Reinicia variable delay
No_es_1_seg	bcf	PIR1,TMR2IF		;Repone el flag del TMR2
			retfie

;Programa principal

Inicio	   	clrf	PORTB		;Desconecta salidas pone a 0 el contador
			bsf		STATUS,RP0	;Selecciona banco 1
			clrf	TRISB		;Puerta B se configura como salida
			bsf		PIE1,TMR2IE	;Habilita interrupci髇 del TMR2
			movlw	.39
			movwf	PR2			;Carga registro de periodos con 39
			bcf		STATUS,RP0	;Selecciona banco 0

;El TMR2 emplea un preescaler y un postcaler de 1:16 (total 1:256). Trabajando a una
;frecuencia de 4MHZ el TMR2 evoluciona cada 16uS (preescaler 1:16). La cuenta avanza hasta
;alcanzar el valor del registro de periodos (39), con lo que el tiempo transcurrido es de
;624 uS. Este lapsus se repite 16 veces (postcaler 1:16) antes de provocar la interrupci髇
;(al de 9984 uS).

			movlw	b'01111111'
			movwf	T2CON		;TMR2 On, preescaler/postcaler = 1:16
			clrf	TMR2		;Inicia el TMR2
			movlw	.100
			movwf	Delay		;Inicia variable de delay
			movlw	b'11000000'
			movwf	INTCON		;Habilita interrupciones
		
Loop		nop
			goto	Loop		;Bucle infinito		

			end					;Fin del programa fuente

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -