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

📄 irq.asm

📁 使用SPCE061A单片机通过4*4键盘控制16档速度
💻 ASM
字号:
//======================================================
// 文件名称:	PWM.asm
// 功能描述:   PWM设置服务 
// 完成日期:   2003-8-13
//======================================================
.define		P_INT_CTRL		0x7010;
.define		P_INT_CLEAR		0x7011;
.EXTERNAL   _F_PwmIRQ3
.RAM
                           //TimeA: 频率设置值,PWM:占空比设置值
.VAR TimeA=0x0020,PWM=0x0000
.text
//======================================================
// 函数名称:	IRQ3
// 实现功能:    外部中断服务
// 入口参数:   无
// 出口参数:   无
// 破坏寄存器:  r1,r2
//======================================================
.public _IRQ3
_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=[TimeA]
   r1+=0xf0
   [TimeA]=r1
   r2=[PWM]
   call _F_PwmIRQ3;          //重设pwm,来自于pwm.asm
   r1=0x0200 	     
   [P_INT_CLEAR]=r1 
   pop r1,r5 from [sp]
   reti

irq3_ext1:
   r1=[PWM]
   r1+=0x0030
   r2=0x0ff0
   cmp r2,r1
   jb ReturnLoop 
   [PWM]=r1
   r1=[TimeA]
   r2=[PWM]
   call _F_PwmIRQ3;          //重设pwm,来自于pwm.asm
   r1=0x0100 	     
   [P_INT_CLEAR]=r1 
   pop r1,r5 from [sp]
   reti
ReturnLoop:
   r1=0x0000
   [PWM]=r1
   r1=[TimeA]
   r2=[PWM]
   call _F_PwmIRQ3;          //重设pwm,来自于pwm.asm
   r1=0x0100 	     
   [P_INT_CLEAR]=r1 
   pop r1,r5 from [sp]
   reti
    
   
   
    





⌨️ 快捷键说明

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