📄 io1.asm
字号:
;/******************************************************************************/
;/* file name:io.ASM */
;/* */
;/* 2407DSP的PB口到JPB1000之间加了双缓冲芯片LVC16245。IPF0=0使能该芯片; */
;/* IOPF1控制数据传输方向:IOPF1=1,数据由DSP输出;IOPF1=0,数据向DSP输入 */
;/* */
;/******************************************************************************/
IODAT .usect "data0",1
.include "F2407REGS.H" ;引用头部文件
.def _c_int0
;(1)建立中断向量表
.sect ".vectors" ;定义主向量段
RSVECT B _c_int0 ;PM 0 复位向量1
;(2)主程序
.text
_c_int0 CALL SYSINIT ;系统初始化程序
LDP #MCRC>>7 ;#DP_PF2 ;指向7080h~7100h区
LACL MCRA
AND #00FFh ;IOPB为普通IO引脚
SACL MCRA
LACL PBDATDIR
OR #0FFFFh
SACL PBDATDIR ;IOPB为输出
CALL DSP_TO_JPB
LOOP1: LDP #8000H>>7
SPLK #01H,IODAT
LOOP: LDP #8000H>>7
LACL IODAT
OR #0FF00H
LDP #MCRC>>7
SACL PBDATDIR
CALL DELAY
LDP #5H
LACL IODAT
SFL
SACL IODAT
BIT IODAT,BIT8
BCND LOOP1,TC
B LOOP
;数据由DSP输出子程序
DSP_TO_JPB: LDP #MCRC>>7
LACL MCRC
AND #0FCFFH
SACL MCRC ;IOPF0/IOPF1为普通IO引脚
LACL PFDATDIR
OR #0302H
AND #0FFFEH ;IOPF0输出低,IOPF1输出高
SACL PFDATDIR
RET
;数据向DSP输入子程序
TPB_TO_DSP: LDP #MCRC>>7
LACL MCRC
AND #0FCFFH
SACL MCRC ;IOPF0/IOPF1为普通IO引脚
LACL PFDATDIR
OR #03000H
AND #0FFFCH
SACL PFDATDIR ;IOPF0输出低,IOPF1输出低
ret
;(3)系统初始化程序
SYSINIT:
SETC INTM ;禁止中断
CLRC SXM ;抑制符号扩展
CLRC OVM ;ACC正常溢出
CLRC CNF ;配置B0到数据空间
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
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -