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

📄 timer675.asm

📁 simple timer using PIC12F629/675
💻 ASM
字号:
; one stupid timer :)

	list	p=12F629
	radix	hex
	include P12F629.INC
	errorlevel -302 
	__CONFIG _CPD_OFF&_CP_OFF&_BODEN_OFF&_MCLRE_OFF&_WDT_OFF&_INTRC_OSC_NOCLKOUT

  
; the temporary files
W_TEMP		equ	0x20	; temporary w file
STATUS_TEMP	equ	0x21
PCLATH_TEMP	equ	0x22

; play files NONE ;)
		
start	org	0x0000		; reset vector
 	nop					; allow debugger
	nop
	goto 	init		; goto initblock

; ISR XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

intr	org	0x0004		; interrupt vector
		goto	start	; no int logic, so if you got here, your pbm

; INIT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

init	bcf	INTCON,	GIE	; disable all interrupts

		bsf 	STATUS,	RP0 	; Bank 1
		call 	3FFh 		; Get the cal value
		movwf 	OSCCAL 		; Calibrate
		bcf 	STATUS,	RP0 	; Bank 0
	
		bcf	STATUS,	RP0	;
		bcf	STATUS,	RP1	; bank0
		clrf	GPIO		; clear port
		movlw	0x07		; all digital
		movwf	CMCON

		movlw	0x00			
		movwf	GPIO		;

		bsf	STATUS,	RP0	; bank1


dirset	movlw	b'11111101'	; all inputs but GP1
		movwf	TRISIO		; configure them

;anaset	movlw	b'00000000'	; all digital 
;		movwf	ANSEL		; 

		movlw	b'00000000'	; enable no IOCB
		movwf	IOCB		;

		bcf	STATUS,	RP0	; return to
		bcf	STATUS,	RP1	; bank0

;		movlw	b'00000000'	; disable ADC, 
;		movwf	ADCON0		;


		movlw	b'00101000'	; 
		movwf	INTCON		; enable TMR0 and IOCB
	
		bsf	STATUS,	RP0	; bank1
		movlw	b'00000000'	;
		movwf	PIE1		; 
		bcf	STATUS,	RP0	; return to
		bcf	STATUS,	RP1	; bank0
	
	movlw	b'00110000'	;
	movwf	T1CON		; timer, not enabled yet, 8x prescaler

	clrwdt 			;Clear WDT
	clrf	TMR0		;and tmr0

	bsf	STATUS,	RP0	; bank1
	movlw	b'01000101'	; 64x prescaler, to TMR0 as timer, GP2 positive interr
	movwf	OPTION_REG	; 
	movlw	b'00111100'	; WPU 
	movwf	WPU		;
	bcf	STATUS,	RP0	; return to
	bcf	STATUS,	RP1	; bank0
	
	bsf	T1CON, TMR1ON	; GO!

;	bsf	INTCON,	GIE	; No interr logic
	

mloop	bcf		INTCON,	TMR1IF
		movlw	0x00	;
		movwf	TMR1L
		movlw	0x00	;
		movwf	TMR1H	;
loop1	comf	TMR1H,	W;
		btfss	STATUS,	Z
		goto	loop1


		movlw	0x00	;
		movwf	TMR1L
		movlw	0x00	;
		movwf	TMR1H	;
loop2	comf	TMR1H,	W;
		btfss	STATUS,	Z
		goto	loop2

		

		movlw	0x00	;
		movwf	TMR1L
		movlw	0x00	;
		movwf	TMR1H	;
loop3	comf	TMR1H,	W;
		btfss	STATUS,	Z
		goto	loop3

		

		movlw	0x00	;
		movwf	TMR1L
		movlw	0x00	;
		movwf	TMR1H	;
loop4	comf	TMR1H,	W;
		btfss	STATUS,	Z
		goto	loop4


		movlw	0x00	;
		movwf	TMR1L
		movlw	0x00	;
		movwf	TMR1H	;
loop5	comf	TMR1H,	W;
		btfss	STATUS,	Z
		goto	loop5

		movlw	0x00	;
		movwf	TMR1L
		movlw	0x00	;
		movwf	TMR1H	;
loop6	comf	TMR1H,	W;
		btfss	STATUS,	Z
		goto	loop6


		
besef	bsf		GPIO,	0x01

endch	nop				;
		goto	endch

clk		org 0x3ff	
		retlw	0x70	

	end	

⌨️ 快捷键说明

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