📄 main.asm
字号:
;============================================================================*
.include "F2407.h" ;头文件
.def _c_int0,T3_INT
.bss GPR0,1
;============================================================================*
;系统初始化
;使能EVA,EVB,A/D模块,其他的未使能(根据要求使能)。
;===========================================================
.text ;加密位
.word #0ffffh
.word #0ffffh
.word #0ffffh
.word #0ffffh
_c_int0:
LDP #0H
SETC INTM ;屏蔽总中断程序
CLRC SXM ;符号位不作扩展
LACC IFR ;清标志
SACL IFR
CLRC CNF ;B0为数据存储区
SETC OVM
LDP #WDCR>>7
SPLK #006Fh, WDCR ;看门狗不使能
KICK_DOG
SPLK #01FFh, GPR0
OUT GPR0, WSGR ;设置整体延时
LDP #SCSR1>>7
SPLK #0000011010001100B,SCSR1;仅使能ADC EVA EVB时钟,节能
LDP #MCRB>>7 ;设置指向I/O口复用寄存器B
SPLK #0FFFDH,MCRB ;MCRB中设置1硬件上与仿真器相连,实现在线仿真
;========================初始化=============================
LDP #IFR>>7
SPLK #0FFH,IFR ;写1清除中断标志位
SPLK #02H,IMR ;使能INT1
LDP #MCRC>>7
SPLK #0FFH,MCRC ;设置MCRC均为基本功能
;对应的均为EVB中用到的管脚
LDP #EVBIFRA>>7
SPLK #0FFFFH,EVBIFRA ;清除EVB中断标志寄存器A中的标志位
SPLK #0FFFFH,EVBIFRB ;清除EVB中断标志寄存器B中的标志位
SPLK #0FFFFH,EVBIFRC ;清除EVB中断标志寄存器C中的标志位
SPLK #00400H,EVBIMRA ;#0400H,使能定时器3上溢中断
;#0200H,使能定时器3下溢中断
;#0100H,使能定时器3比较中断
;#0080H,使能定时器3周期中断
SPLK #0,EVBIMRB
SPLK #0,EVBIMRC
;====================初始化事件管理器=======================
LDP #234 ;数据页面指向寄存器地址7500H~7480H
SPLK #0000000001000001B,GPTCONB
;位6,即TCOMPOE=1,允许定时器比较输出
;位1~0,即T3PIN=01,允许定时器比较输出低电平有效
SPLK #0FFFFH,T1PR ;设置周期寄存器
SPLK #300H,T1CMPR ;设置比较寄存器
SPLK #01H,T3CNT ;设置计数寄存器
SPLK #0001011101000110B,T3CON
;位12~11,即TMODE=10,采用连续增计数模式
;位10~8,即TPS2-0=111,预定标分频因子为x/128
;位6,即TENABLE=1,定时器计数使能
;位5~4,即TCLKS1-TCLKS0TCI=00,采用内部时钟
;位3~2,即TCLD1~0=01,计数器值为0或等于周期寄存器的值时重载
;位1,即TECMPR=1,定时器3比较使能
;位0,即SELT1PR=0,使能自身的周期寄存器
CLRC INTM ;开中断屏蔽
;===========================================================
LOOP ;死循环等待中断
NOP
NOP
NOP
B LOOP
T3_INT
NOP
LDP #EVBIFRA>>7
SPLK #0FFFH,EVBIFRA ;清中断标志等待下一次中断
CLRC INTM
RET
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -