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

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

//============================================================
//  工程名称: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 + -