📄 test8.asm
字号:
//======================================================
// The information contained herein is the exclusive property of
// Sunnnorth Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
// (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.
// ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorized copies.
//========================================================
//============================================================
// 工程名称:test8.spj
// 功能描述: IRQ0_TMA、IRQ1_TMA、IRQ1_TMB三个中断,当定时器A或B
// 计满溢出时产生中断请求信号TA_TIMEOUT_INT或TA_TIMEOUT_INT,
// CPU响应后执行相应的中断服务子程序
// 硬件连接:A口的低四位接LED灯,B口的低四位接LED灯。B6控制8个LED灯的共阴极。
// 文件来源:《实验仪实验指导书》,"实验十 IRQ0/IRQ1/IRQ2中断实验" 第29页
// IDE环境: SUNPLUS u'nSPTM IDE 1.8.4
//
// 涉及的库:
// 组成文件:
// test8.asm
//===============================================
//============================================================
// 文件名称:test8.asm
// 实现功能: IRQ0_TMA、IRQ1_TMA、IRQ1_TMB三个中断,当定时器A或B
// 计满溢出时产生中断请求信号TA_TIMEOUT_INT或TA_TIMEOUT_INT,
// CPU响应后执行相应的中断服务子程序
// 硬件连接:A口的低四位接LED灯,B口的低四位接LED灯.
// 日期: 2003/6/9
//============================================================
.define P_IOA_DATA 0x7000
.define P_IOA_DIR 0x7002
.define P_IOA_ATTRI 0x7003
.define P_IOB_DATA 0x7005
.define P_IOB_DIR 0x7007
.define P_IOB_ATTRI 0x7008
.define P_INT_CTRL 0x7010
.define P_INT_CLEAR 0x7011
.define P_TimerA_Data 0x700A
.define P_TimerA_Ctrl 0x700B
.define P_TimerB_Data 0x700C
.define P_TimerB_Ctrl 0x700D
.define timea_clk 0x020d
.define timeb_clk 0x0004
.code
.public _main
//=============================================================
// 函数名称: _main
// 功能描述: IRQ0_TMA、IRQ1_TMA、IRQ1_TMB三个中断,当定时器A或B
// 计满溢出时产生中断请求信号TA_TIMEOUT_INT或TA_TIMEOUT_INT,
// CPU响应后执行相应的中断服务子程序
// 硬件连接:A口的低四位接LED灯,B口的低四位接LED灯.
// 语法格式: _main
//入口参数: 无
// 出口参数: 无
// 注意事项: 仅为用户模型
//=================================================================
_main:
int off
r1=0x000f //IOA低四位为同相低电平输出口
[P_IOA_ATTRI]=r1
[P_IOA_DIR]=r1
r1=0x0000
[P_IOA_DATA]=r1
r1=0x004f //IOB低四位为同相低电平输出口,IOB6为同相高电平输出口
[P_IOB_DIR]=r1
[P_IOB_ATTRI]=r1
r1=0x0040
[P_IOB_DATA]=r1
r1=0xff9f
[P_TimerA_Data]=r1
[P_TimerB_Data]=r1
r1=timea_clk
[P_TimerA_Ctrl]=r1
r1=timeb_clk
[P_TimerB_Ctrl]=r1
r1=0x5400 //开中断IRQ0_PWM、IRQ1_TMA、IRQ2_TMB
[P_INT_CTRL]=r1
int IRQ
loop:
nop
nop
nop
jmp loop
.text
.public _IRQ0
.public _IRQ1
.public _IRQ2
//=============================================================
// 函数名称: _IRQ
// 功能描述: IRQ0_TMA、IRQ1_TMA、IRQ1_TMB三个中断,当定时器A或B
// 计满溢出时产生中断请求信号TA_TIMEOUT_INT或TA_TIMEOUT_INT,
// CPU响应后执行相应的中断服务子程序
// 硬件连接:A口的低四位接LED灯,B口的低四位接LED灯.
//入口参数: 无
// 出口参数: 无
// 注意事项: 仅为用户模型
//=================================================================
_IRQ0:
push r1,r5 to [sp] //压栈保护
r1=0x4000
[P_INT_CLEAR]=r1
pop r1,r5 from [sp]
reti
_IRQ1:
push r1,r5 to [sp] //压栈保护
r1=0x000f //点亮与A口低四位相连的LED灯
[P_IOA_DATA]=r1
r1=0x0040 //熄灭B口低四位相连的LED灯
[P_IOB_DATA]=r1
r1=0x1000
[P_INT_CLEAR]=r1
pop r1,r5 from [sp]
reti
_IRQ2:
push r1,r5 to [sp] //压栈保护
r1=0x004f //点亮与B口低四位相连的LED灯
[P_IOB_DATA]=r1
r1=0x0000 //熄灭A口低四位相连的LED灯
[P_IOA_DATA]=r1
r1=0x0400
[P_INT_CLEAR]=r1
pop r1,r5 from [sp]
reti
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -