📄 timer675.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 + -