📄 test13.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.
//========================================================
//============================================================
// 工程名称:test13.spj
// 功能描述: 检测触键唤醒的功能
// A口接1*8键盘
// B口高八位接8个LED,B6控制8个LED的共阴极
// 按K1键进入睡眠,熄灭LED 。按任意键唤醒,循环熄灭LED。
// 文件来源:《实验仪实验指导书》,""实验十五 键唤醒" 第51页
// IDE环境: SUNPLUS u'nSPTM IDE 1.8.4
//
// 涉及的库:
// 组成文件:
// test13.asm
//===============================================
//============================================================
// 文件名称:test13.asm
// 实现功能: 检测触键唤醒的功能
// A口接1*8键盘
// B口低八位接8个LED
// 按1键进入睡眠,熄灭LED 。
//============================================================
.include hardware.inc
.define P_IOA_RL 0x7004;
.code
.public _main;
//=============================================================
// 函数名称: _main
// 功能描述: 初始化
// 语法格式: _main
//入口参数: 无
// 出口参数: 无
// 注意事项: 仅为用户模型
//=================================================================
_main:
r1=0x0000; //初始化A口为带下拉电阻的输入口
[P_IOA_Dir]=r1;
[P_IOA_Attrib]=r1;
[P_IOA_Data]=r1;
r1=0xff40; //初始化B口
[P_IOB_Dir]=r1;
[P_IOB_Attrib]=r1;
r1=0xff40;
[P_IOB_Data]=r1;
INT OFF; //关中断
keydown:
r1 = [P_IOA_Data];
r2 = r1;
r1 = 0x0080;
cmp r2, r1;
jne keydown;
key1:
keyup:
r1 = [P_IOA_Data];
r2 = r1;
r1 = 0x0000;
cmp r2, r1;
jne keyup;
r1 = 0x0000;
[P_IOB_Data] = r1; //熄灭所有的LED
r1=0x0080; //中断初始化
[P_INT_Ctrl]=r1;
r1=[P_IOA_RL];
INT IRQ; //开中断
r1=0x0007;
[P_SystemClock]=r1; //进入睡眠状态
r3=0x0080; //当有键唤醒时继续执行程序
r2=0xffff;
L_Loopin: //循环点亮LED
r2 -= 1;
jnz L_Loopin;
r3=r3 rol 1;
r1=0x0040;
r1|=r3;
[P_IOB_Data] = r1;
cmp r3,0x8000;
jne L_Loopin;
r3 = 0x0080;
jmp L_Loopin;
//=============================================================
// 函数名称: _IRQ3
// 功能描述: 循环熄灭LED
//入口参数: 无
// 出口参数: 无
// 注意事项: 仅为用户模型
//=================================================================
.text
.public _IRQ3
_IRQ3:
push r1,r3 to [sp];
r1=0x0080;
test r1,[P_INT_Ctrl]; //是否为键唤醒中断
jz L_notKeyArouse; //否,退出中断程序
r1=0x0080;
[P_INT_Clear]=r1; //是,清中断
L_notKeyArouse:
pop r1,r3 from [sp];
reti;
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -