📄 timer.asm
字号:
;**************** timer.asm **********************
.include "f2407.h"
.include "vector.h"
KICK_DOG .macro
LDP #00E0h
SPLK #05555h,WDKEY
SPLK #0AAAAh,WDKEY
LDP #0h
.endm
.bss TEMP,1
.bss TEMPA3,1
.bss TEMPC7,1
.bss TEMPC0,1
.text
START:
LDP #0h
SETC INTM
SPLK #0000h,IMR
LACC IFR
SACL IFR
LDP #WDKEY>>7h
SPLK #0204h,SCSR1
SPLK #006Fh,WDCR
KICK_DOG
MAR *,AR0
LDP #0E1h
SPLK #00000h,MCRA
SPLK #0FF00h,MCRB
SPLK #00000h,MCRC
SPLK #1111111100000000b,PADATDIR
SPLK #1111111100000000b,PCDATDIR
LDP #GPTCONA>>7h
SPLK #0000000000000000b,GPTCONA
SPLK #0000000000000000b,T1CNT
SPLK #0000111101000010b,T1CON
SPLK #1111111111111111b,T1PR
SPLK #0000000011111111b,T1CMPR
SPLK #0000011110000000b,EVAIMRA
SPLK #0000011110000000b,EVAIFRA
LDP #TEMP
SPLK #01h,TEMP
SPLK #01h,TEMPA3
SPLK #01h,TEMPC7
SPLK #01h,TEMPC0
LDP #0
SPLK #0000000000000010b,IMR
CLRC INTM
WAIT:
NOP
NOP
B WAIT
GISR2:
NOP
LDP #PIVR>>7h
LACL PIVR
XOR #002Ah
BCND SISR2A,EQ ;T1 OVERFLOW
LACL PIVR
XOR #0029h
BCND SISR29,EQ ;T1 UNDERFLOW
LACL PIVR
XOR #0028h
BCND SISR28,EQ ;T1 COMPARE
LACL PIVR
XOR #0027h
BCND SISR27,EQ ;T1 PERIOD
RET
SISR2A:
LDP #TEMP
LACL #1h
XOR TEMP
BCND LOOP1,EQ
CLRC XF
SPLK #1h,TEMP
B LOOP2
LOOP1:
SETC XF
SPLK #0h,TEMP
LOOP2:
CALL DELAY
LDP #GPTCONA>>7
LACC #0400h
SACL EVAIFRA
CLRC INTM
RET
SISR29:
LDP #TEMPA3
LACL #1h
XOR TEMPA3
BCND LOOP3,EQ
LDP #0E1h
SPLK #0FF08h,PADATDIR
LDP #TEMPA3
SPLK #1h,TEMPA3
B LOOP4
LOOP3:
LDP #0E1h
SPLK #0FF00h,PADATDIR
LDP #TEMPA3
SPLK #0h,TEMPA3
LOOP4:
CALL DELAY
LDP #GPTCONA>>7
LACC #0200h
SACL EVAIFRA
CLRC INTM
RET
SISR28:
LDP #TEMPC7
LACL #1h
XOR TEMPC7
BCND LOOP5,EQ
LDP #0E1h
SPLK #0FF80h,PCDATDIR
LDP #TEMPC7
SPLK #1h,TEMPC7
B LOOP6
LOOP5:
LDP #0E1h
SPLK #0FF00h,PCDATDIR
LDP #TEMPC7
SPLK #0h,TEMPC7
LOOP6:
CALL DELAY
LDP #GPTCONA>>7
LACC #0100h
SACL EVAIFRA
CLRC INTM
RET
SISR27:
LDP #TEMPC0
LACL #1h
XOR TEMPC0
BCND LOOP7,EQ
LDP #0E1h
SPLK #0FF01h,PCDATDIR
LDP #TEMPC0
SPLK #1h,TEMPC0
B LOOP8
LOOP7:
LDP #0E1h
SPLK #0FF00h,PCDATDIR
LDP #TEMPC0
SPLK #0h,TEMPC0
LOOP8:
CALL DELAY
LDP #GPTCONA>>7
LACC #0080h
SACL EVAIFRA
CLRC INTM
RET
DELAY:
LAR AR0,#1h
D_LOOP:
RPT #01h
NOP
BANZ D_LOOP
RET
GISR1:
RET
GISR3:
RET
GISR4:
RET
GISR5:
RET
GISR6:
RET
PHANTOM:
RET
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -