📄 cap.asm
字号:
.include "F2407REGS.H" ;引用头部文件
.def _c_int0
.data
CAP4TEMP .word 0
.sect ".vectors" ;定义主向量段
RSVECT B _c_int0 ;PM 0 Reset Vector 1
INT1 B PHANTOM ;PM 2 Int level 1 4
INT2 B PHANTOM ;PM 4 Int level 2 5
INT3 B PHANTOM ;PM 6 Int level 3 6
INT4 B GISR4 ;PM 8 Int level 4 7
INT5 B PHANTOM ;PM A Int level 5 8
INT6 B PHANTOM ;PM C Int level 6 9
RESERVED B PHANTOM ;PM E (Analysis Int) 10
SW_INT8 B PHANTOM ;PM 10 User S/W int -
SW_INT9 B PHANTOM ;PM 12 User S/W int -
SW_INT10 B PHANTOM ;PM 14 User S/W int -
SW_INT11 B PHANTOM ;PM 16 User S/W int -
SW_INT12 B PHANTOM ;PM 18 User S/W int -
SW_INT13 B PHANTOM ;PM 1A User S/W int -
SW_INT14 B PHANTOM ;PM 1C User S/W int -
SW_INT15 B PHANTOM ;PM 1E User S/W int -
SW_INT16 B PHANTOM ;PM 20 User S/W int -
TRAP B PHANTOM ;PM 22 Trap vector -
NMI B PHANTOM ;PM 24 Non maskable Int 3
EMU_TRAP B PHANTOM ;PM 26 Emulator Trap 2
SW_INT20 B PHANTOM ;PM 28 User S/W int -
SW_INT21 B PHANTOM ;PM 2A User S/W int -
SW_INT22 B PHANTOM ;PM 2C User S/W int -
SW_INT23 B PHANTOM ;PM 2E User S/W int -
SW_INT24 B PHANTOM ;PM 30 User S/W int -
SW_INT25 B PHANTOM ;PM 32 User S/W int -
SW_INT26 B PHANTOM ;PM 34 User S/W int -
SW_INT27 B PHANTOM ;PM 36 User S/W int -
SW_INT28 B PHANTOM ;PM 38 User S/W int -
SW_INT29 B PHANTOM ;PM 3A User S/W int -
SW_INT30 B PHANTOM ;PM 3C User S/W int -
SW_INT31 B PHANTOM ;PM 3E User S/W int -
.sect ".pvecs" ;定义子向量段
PVECTORS
B PHANTOM ;Reserved pvector addr offset-0000h
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset-0005h
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset-000ah
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset-0010h
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset-0015h
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset-001Ah
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset-0020h
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset-0025h
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;pvector addr offset 0x027h - T1PINT中断
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset-002Ah
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;pvector addr offset 0x02f - T3PINT
B PHANTOM ;Reserved pvector addr offset-0030h
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset-0035h
B CAP4_ISR ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset-003aAh
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset
B PHANTOM ;Reserved pvector addr offset-003Fh
B PHANTOM ;pvector addr offset 0x040h - CAN接收中断
B PHANTOM ;Reserved pvector addr offset-0041h
.text
_c_int0
LDP #CAP4TEMP ;DP_B0
SPLK #00H, CAP4TEMP
CALL SYSINIT
CALL CAP_INIT ;调CAP4初始化程序
LOOP
NOP
B LOOP
SYSINIT:
SETC INTM
CLRC SXM
CLRC OVM
CLRC CNF ;B0区被配置为数据空间
LDP #0E0H ;指向7000h~7080h区
SPLK #81FEH, SCSR1 ;时钟4倍频, CLKIN=10 M, CLKOUT=40 M
SPLK #0E8H, WDCR ;不使能WDT
LDP #0
SPLK #0008H, IMR ;使能中断第4级INT4
SPLK #0FFFFH, IFR ;清全部中断标志
RET
CAP_INIT:
LDP #DP_PF2 ;指向7090h~7100h
LACL MCRC
OR #0380H ;IOPE7, IOPF0, IOPF1 被配置为
;特殊功能方式: CAP[4~6]
SACL MCRC
SETC INTM
LDP #DP_EVB
SPLK #049H, GPTCONB ;TCOMPOE=1, T4PIN=10, T3PIN=01
SPLK #0, T3CNT
SPLK #01742H, T3CON ;TMODE=10 连续向上计数模式, TPS=111
;预分频为128
;TENABLE=1 定时器计数使能, TCLKS=00
;内部时钟
;TCLD=00, TECMPR=1 定时器3比较
;使能, SELT3PR=0
SPLK #0FFFFH, T3PR ;定时器周期比较寄存器设为最大
SPLK #00H, EVBIMRA
SPLK #00H, EVBIMRB
SPLK #22C0H, CAPCONB ;CAP4 捕获允许, 捕获上升沿
SPLK #01H, EVBIMRC ;CAP4 中断使能
SPLK #0FFFFh, EVBIFRA ;清 EVB 全部中断标志
SPLK #0FFFFh, EVBIFRB
SPLK #0FFFFh, EVBIFRC
CLRC INTM ;开总中断
RET
GISR4: ;优先级INT4中断人口
;保护现场
LDP #0E0H
LACC PIVR, 1 ;读取外设中断向量寄存器(PIVR), 并左移一位
ADD #PVECTORS ;加上外设中断人口地址
BACC ;跳到相应的中断服务子程序
CAP4_ISR: ;捕获单元4中断程序入口
LDP #DP_EVB
LACL CAP4FIFO
LDP #CAP4TEMP ;DP_B0
SACL CAP4TEMP ;读出捕获的值
LDP #DP_EVB
SPLK #0, T3CNT ;清 T3 计数值, 使其重新计数
SPLK #01h, EVBIFRC
GISR2_RET: ;中断返回
;恢复现场
CLRC INTM ;开总中断, 因为一进中断就自动关闭总中断
RET
PHANTOM
;KICK_DOG ;复位看门狗
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -