📄 main.asm
字号:
//======================================================================================
//
// The information contained herein is the exclusive property of
// Sunplus Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
//
// (C) COPYRIGHT 2001 SUNPLUS TECHNOLOGY CO.
// ALL RIGHTS RESERVED
//
// The entire notice above must be reproduced on all authorized copies.
//
//========================================================================================
// 工程名称: book_2hz.spj
// 功能描述: 时基信号中断程序
// 使A口低8位发光二极管0.5秒闪烁
// 硬件连接: IOA0-IOA7分别接8个发光二极管
// 文件来源: 《SPCE061单片机原理及应用技术》第五章 中断系统,第188页
// IDE环境: SUNPLUS u'nSPTM IDE 1.8.0(or later)
//
// 涉及的库: CMacro.lib
//
// 组成文件:
// main.asm/hardware.asm
// hardware.inc/hardware.h
//
// 日期: 2002-6-12
//===========================================================================================
.INCLUDE hardware.inc
.DEFINE RUN_2HZ_TimeBase_INT 0x0004
.DEFINE P_WatchDog_Clear 0x7012
.RAM
.VAR flag //发光二极管的标识1,点亮2.熄灭
.CODE
.PUBLIC _main
_main:
r1 = 0x00ff //初始化A口低8位为低电平输出端
[P_IOA_Attrib] = r1
[P_IOA_Dir] = r1
r1 = 0x0000
[P_IOA_Data] = r1
[flag] = r1; //初始化发光二极管标识
r1 = RUN_2HZ_TimeBase_INT //开放2Hz 中断
[P_INT_Ctrl] = r1
INT IRQ
loop:
nop
r1=0x0001
[P_WatchDog_Clear]=r1
nop
jmp loop
//=========================================================================================
//2Hz 时基中断
//功能:使发光二极管0.5s 点亮一次
//=========================================================================================
.TEXT
.PUBLIC _IRQ5
_IRQ5:
push r1,r5 to [sp] //保护现场
r1 = 0x0004
test r1,[P_INT_Ctrl] //比较是否为2Hz的中断源
jnz IRQ5_2Hz //是,则转至对应程序段
//4Hz 中断的处理
IRQ5_4Hz:
r1 = 0x0008
jmp Exit_INT;
//2Hz 中断的处理
IRQ5_2Hz:
r1 = [flag]; //发光二极管标识
[P_IOA_Data] = r1
r1 ^= 0xffff;
[flag] = r1;
r1 = 0x0004
//退出中断
Exit_INT:
[P_INT_Clear] = r1
pop r1,r5 from [sp] //恢复现场
RETI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -