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

📄 test12.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.
//========================================================

//============================================================
//  工程名称:test12.spj
//  功能描述:  IRQ3有IRQ3_EXT2、IRQ3_EXT1和IRQ3_KEY三个中断源, 这里
//        只做外部中断,(键唤醒中断后面有专门的实验)通过IOB2、IOB3
//        产生一个负跳沿来触发中断,进入中断分别点亮与IOA0-IOA3相连的
//        LED灯、与IOA4-IOA7相连的LED灯
//  文件来源:《实验仪实验指导书》,"实验十四	外部中断EXT1,EXT2实验"   第47页
//  IDE环境:   SUNPLUS u'nSPTM  IDE 1.8.4
//
//  涉及的库:
//  组成文件:
//    	      test12.asm         
//===============================================

//============================================================
// 文件名称:test12.asm
// 实现功能: IRQ3有IRQ3_EXT2、IRQ3_EXT1和IRQ3_KEY三个中断源, 这里
//        只做外部中断,(键唤醒中断后面有专门的实验)通过IOB2、IOB3
//        产生一个负跳沿来触发中断,进入中断分别点亮与IOA0-IOA3相连的
//        LED灯、与IOA4-IOA7相连的LED灯
//============================================================

		.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_Feedback	    0x7009;
 
		.code
		.public _main
//============================================================= 
// 函数名称:  _main
// 功能描述: 初始化
// 语法格式:  _main
//入口参数:     无
// 出口参数:    无
// 注意事项:    仅为用户模型
//=================================================================
_main:
		int off 
		r1=0x00ff 					//设置IOA0-IOA7口为同相低电平输出口
		[P_IOA_ATTRI]=r1 
		[P_IOA_DIR]=r1 
		r1=0x0000
		[P_IOA_DATA]=r1 
		r1=0x0040;  				//设置IOB2、IOB3设成带上拉电阻的输入端口,IOB6为同相高电平输出
		[P_IOB_DIR]=r1; 
		[P_IOB_ATTRI]=r1; 
		r1=0x004c ;
		[P_IOB_DATA]=r1;
		r1=0x0300; 						//开中断IRQ3_EXT1、IRQ3_EXT2
		[P_INT_CTRL]=r1; 
		int irq; 
loop:
		nop
		nop
		nop
		jmp loop
        
		.text
		.public _IRQ3
//============================================================= 
// 函数名称:  _IRQ3
// 功能描述:  IRQ3有IRQ3_EXT2、IRQ3_EXT1和IRQ3_KEY三个中断源, 这里
//        只做外部中断,(键唤醒中断后面有专门的实验)通过IOB2、IOB3
//        产生一个负跳沿来触发中断,进入中断分别点亮与IOA0-IOA3相连的
//        LED灯、与IOA4-IOA7相连的LED灯
//入口参数:     无
// 出口参数:    无
// 注意事项:    仅为用户模型
//=================================================================
_IRQ3:
		push r1,r5 to [sp]		    			//压栈保护 
		r1=0x0100 	    
		test r1,[P_INT_CTRL] 	    		  	//比较是否为IRQ3_EXT1	 
		jnz  irq3_ext1			    			//是,则转至对应程序段;
		r1=0x0200 	    
		test r1,[P_INT_CTRL] 	     		    //否,则比较是否为IRQ3_EXT2
		jnz  irq3_ext2			    			//是,则转至对应程序段
		r1=0x0200 	    
   
irq3_key:					    			    //否,则进入键唤醒中断
		r1=0x0080 	     
		[P_INT_CLEAR]=r1 
		pop r1,r5 from [sp]   
		reti

irq3_ext2:		
		r1=0x00f0 			 			//点亮与IOA4~IOA7相连的LED灯
		[P_IOA_DATA]=r1 
		r1=0x0200 	     
		[P_INT_CLEAR]=r1 
		pop r1,r5 from [sp]
		reti

irq3_ext1:
		r1=0x000f 			 			//点亮与IOA0~IOA3相连的LED灯		 
		[P_IOA_DATA]=r1 
		r1=0x0100 	     
		[P_INT_CLEAR]=r1 
		pop r1,r5 from [sp]
		reti

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -