⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test13.asm

📁 试验仪自检程序
💻 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 + -