📄 main.asm
字号:
;============================================================================*
.include "F2407.h" ;头文件
.def _c_int0
.bss GPR0,1
.bss TEMP,1
.bss TEMP1,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 #GPR0
SPLK #01FFh, GPR0 ;设置整体延时
OUT GPR0, WSGR
LDP #SCSR1>>7
SPLK #0000011010001100B,SCSR1;使能EVA,EVB,ADC时钟
LDP #TEMP ;打开TEMP所对应的页
SPLK #0FH,TEMP ;此值决定发光二极管点亮的次数
SPLK #0FFH,TEMP1 ;初始状态送高电平,根据硬件,设置高电平时发光二极管为灭
OUT TEMP1,2000H ;初始状态保证L1~L8灯为灭
LDP #WDCR>>7
SPLK #02FH,WDCR ;#06FH禁止看门狗
;#02FH使能看门狗
;====================================================================================
MAIN
NOP
LDP #TEMP1 ;打开TEMP1所对应的页
RPT #0FH ;延时等待
NOP
SPLK #0FFH,TEMP1 ;此两句将TEMP1的值送给发光二极管
OUT TEMP1,2000H ;高电平使发光二极管为灭的状态
CALL DELAY ;调用延时子程序
LDP #TEMP1 ;打开TEMP1所对应的页
RPT #0FH ;延时等待
NOP
SPLK #000H,TEMP1 ;此两句将TEMP1的值送给发光二极管
OUT TEMP1,2000H ;低电平使发光二极管为亮的状态
CALL DELAY ;调用延时子程序
LDP #TEMP ;打开TEMP1所对应的页
LACC TEMP ;将TEMP的值装入ACC中
SUB #1 ;减1
SACL TEMP ;减后保存所得的值
BNZ MAIN ;若不为0,跳转到主程序继续运行
CALL DEAD_LOOP ;人为设置一个死循环
B MAIN
DELAY
LACC #01FFFH ;改变此值可以调整发光二极管的发光时间
D_LOOP
SUB #1
RPT #0FFH
NOP
BNZ D_LOOP
LDP #WDKEY>>7
SPLK #55H,WDKEY ;#055H看门狗密钥
SPLK #0AAH,WDKEY ;#0aaH看门狗密钥
RET
DEAD_LOOP ;死循环子程序
NOP
NOP
B DEAD_LOOP
RET
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -