📄 io1.asm
字号:
;/******************************************************************************/
;/* file name:io.ASM */
;/* */
;/* This code is FOR ALL TMS320LF2407 */
;/* */
;/******************************************************************************/
IODAT .usect "data0",1
.include "F2407REGS.H" ;引用头部文件
.def _c_int0
;(1)建立中断向量表
.sect ".vectors" ;定义主向量段
RSVECT B _c_int0 ;PM 0 复位向量1
INT1 B PHANTOM ;PM 2 中断优先级 14
INT2 B PHANTOM ;PM 4 中断优先级2 5
INT3 B PHANTOM ;PM 6 中断优先级 36
INT4 B PHANTOM ;PM 8 中断优先级 47
INT5 B GISR5 ;PM A 中断优先级 58
INT6 B PHANTOM ;PM C 中断优先级 69
RESERVED B PHANTOM ;PM E (保留位)10
SW_INT8 B PHANTOM ;PM 10 用户定义软件中断 -
INT7 B PHANTOM
INT8 B PHANTOM
INT9 B PHANTOM
INTa B PHANTOM
INTb B PHANTOM
INTc B PHANTOM
INTd B PHANTOM
INTe B PHANTOM
INTf B PHANTOM
SW_INT31 B PHANTOM ;PM 3E 用户定义软件中断 -
;中断子向量入口定义pvecs
.sect ".pvecs" ;定义子向量段
PVECTORS B PHANTOM ;保留向量地址偏移量0000h
.space 80h*16
B PHANTOM ;保留向量地址偏移量0040h CAN接收中断
B PHANTOM ;保留向量地址偏移量0041h
;(2)主程序
.text
_c_int0 CALL SYSINIT ;系统初始化程序
LDP #MCRC>>7 ;#DP_PF2 ;指向7080h~7100h区
LACL MCRA
AND #00FFh
SACL MCRA
LACL PBDATDIR
OR #0FFFFh
SACL PBDATDIR
LDP #5h
LAR AR2,#8
SPLK #01H,IODAT
CALL DSPOUT_EN
LOOP:
LDP #5H
LACL IODAT
OR #0FF00H
LDP #MCRC>>7
SACL PBDATDIR
CALL DELAY
LDP #5H
LACL IODAT
SFL
SACL IODAT
MAR *,AR2
BANZ LOOP
LDP #5H
SPLK #01H,IODAT
LAR AR2,#7
B LOOP
DSPOUT_EN: LDP #MCRC>>7
LACL MCRC
AND #0FCFFH
SACL MCRC ;IOPF0/IOPF1为IO输出口
LACL PFDATDIR
OR #0302H
AND #0FFFEH
SACL PFDATDIR
RET
;(3)系统初始化程序
SYSINIT:
SETC INTM
CLRC SXM
CLRC OVM
CLRC CNF
LDP #0E0H
SPLK #86FEH,SCSR1 ;CLKIN=10M,CLKOUT=10M
SPLK #0E8h,WDCR
LDP #0
SPLK #00h,IMR
SPLK #0FFFFh,IFR
NOP ;清中断标志
RET
;(4)CAN初始化程序
DELAY: LAR AR0,#09000H
MAR *,AR0
DELAY1: NOP
NOP
NOP
BANZ DELAY1
;清全部中断标志
RET
;(5)中断程序
GISR5: ;优先级INT5中断人口
CLRC INTM ;开总中断,因为一进中断就自动关闭总中断
RET
;(6)假中断程序
PHANTOM
KICK_DOG ;复位看门狗
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -