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

📄 isr.asm

📁 电子时钟 通过按键设置时钟
💻 ASM
字号:
.INCLUDE SPCE061A.inc				
.INCLUDE key.inc
.INCLUDE Dig.inc

.IRAM
.PUBLIC	sum;
.VAR sum=0                                // 进入中断的计数器
.TEXT

.PUBLIC _IRQ5;
.PUBLIC _IRQ6;
//.external sum;
.external _INTflag;
.external F_Key_Scan    
//============================================================================================
//函数: FIQ(),IRQ0(),IRQ1(),IRQ2(),IRQ3(),IRQ4(),IRQ5(),IRQ6(),IRQ7()
//语法:void FIQ(void ),void IRQ0(void ),void IRQ1(void ),void IRQ2(void ),void IRQ3(void ),
//      void IRQ4(void ),void IRQ5(void ),void IRQ6(void ),void IRQ7(void )
//描述:FIQ(),IRQ0(),IRQ1(),IRQ2(),IRQ3(),IRQ4(),IRQ5(),IRQ6(),IRQ7()中断服务子程序
//参数:无
//返回:无
//=============================================================================================               
.PUBLIC _IRQ4
_IRQ4:
	push r1,r5 to [sp]
	r1 = C_IRQ4_1KHz
	test r1,[P_INT_Ctrl]
	jnz ?L_IRQ4_1KHz
	r1 = C_IRQ4_2KHz
	test r1,[P_INT_Ctrl]
	jnz ?L_IRQ4_2KHz
?L_IRQ4_4KHz:
	call F_DIG_Drive                          //数码管显示,F_DIG_Drive函数在Dig.asm中定义
	r1 = C_IRQ4_4KHz
	[P_INT_Clear] = r1
	pop r1,r5 from [sp]
	reti
?L_IRQ4_2KHz:
	[P_INT_Clear] = r1
	pop r1,r5 from [sp]
	reti
?L_IRQ4_1KHz:
	[P_INT_Clear] = r1
	pop r1,r5 from [sp]
	reti
//////////////////////////////        
_IRQ5:                          //定时1秒的中断程序
	push r1,r4 to [sp];

	r1 =0x0008;						
	test r1,[P_INT_Ctrl];				
	jnz	L_4Hz;					// Timer A FIQ entrence 	

	r1 = 0x0004;
    [P_INT_Clear] = r1;         //清中断
    
    r1 = [sum]                  //取时基信号量     
    r1 += 1;
    cmp r1,2;
   je loop0;
    
   [sum]=r1                     //保存时基信号量
   pop r1,r4 from [sp];
   reti; 

loop0: 
    r1 = 0x0001;
    [_INTflag] = r1;             //设置中断标识
    r1 = 0
    [sum] = r1

	pop r1,r4 from [sp];
    reti;     

L_4Hz:  
 	r1 = 0x0008;
    [P_INT_Clear] = r1;          //清中断
    pop r1,r4 from [sp];
    reti; 

//////////////////////////////
_IRQ6:        
		push r1,r4 to [sp];
		r1=0x0001;
		test r1,[P_INT_Ctrl];
		jnz  _IRQ6_TMB2;
		r1=0x0002;
		[P_INT_Clear]=r1;
		pop r1,r4 from [sp];
        reti;         
_IRQ6_TMB2:
		[P_INT_Clear]=r1;
		call F_Key_Scan;        //扫描键盘
		pop r1,r4 from [sp];
        reti;         

//========================================================================================        
//  isr.asm结束
//========================================================================================
        
              

⌨️ 快捷键说明

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