📄 isr.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.
//========================================================
//============================================================
// 文件名称:isr.asm
// 实现功能:中断服务函数
// 日期: 2005/11/28
//============================================================
.INCLUDE hardware.inc
.INCLUDE Resource.inc
.EXTERNAL _giADC_DataSave
.EXTERNAL _G_ADC_flag
.EXTERNAL _fOut
.EXTERNAL F_LED_Show
.DEFINE P_ADC_MUX_Data 0x702c
.DEFINE P_ADC_MUX_Ctrl 0x702b
.IRAM
.PUBLIC G_Sum
.VAR G_Sum = 2
.TEXT
//======================================================
// 函数名称: IRQ2()
// 汇编调用: _IRQ2
// 实现功能: 利用IR2_TMB进行加热时间控制.
// 入口参数: 无
// 出口参数: 无
// 破坏寄存器: r1~r4
//======================================================
.PUBLIC _IRQ2
_IRQ2:
PUSH r1,r4 to [sp]
r1 = [_fOut]
r1 -= 1
[_fOut] = r1
jnz Exit //加热时间到?
r1 = [P_IOB_Buffer] //是,关闭加热器
r1 &= 0xfdff
[P_IOB_Buffer] = r1
Exit:
r1 = C_IRQ2_TMB
[P_INT_Clear]=r1
POP r1,r4 FROM [sp]
RETI
//======================================================
// 函数名称: IRQ5()
// 汇编调用: _IRQ5
// 实现功能: 利用2Hz中断定时1秒,进行温度采样.
// 入口参数: 无
// 出口参数: 无
// 破坏寄存器: r1~r4
//======================================================
.PUBLIC _IRQ5
_IRQ5:
PUSH r1,r4 TO [sp]
r1 = 0x0008
test r1,[P_INT_Ctrl]
jnz L_4Hz // 开Timer A FIQ
r1 = 0x0004
[P_INT_Clear] = r1 //清中断
r1 = [G_Sum]
r1 = r1 - 1
[G_Sum] = r1
jz ADC_Value
POP r1,r4 FROM [sp]
RETI
ADC_Value:
r1 = 0
L_AD:
r2 = [P_ADC_MUX_Ctrl] //读寄存器[P_ADC_MUX_Ctrl]的B15位
TEST r2,0x8000 //判断是否转换完毕
JZ L_AD //否,继续转换
r3 = [P_ADC_MUX_Data] //是,则读出[P_ADC_MUX_DATA]转换结果
r3 = r3 lsr 4
r3 = r3 lsr 2
r2 = r1 + _giADC_DataSave
[r2] = r3
r1= r1 + 1
cmp r1,18
jne L_AD
r1 = 1
[_G_ADC_flag] = r1
r1 = 2 //采样间隔控制
[G_Sum] = r1
jmp exit_Int
L_4Hz:
r1 = 0x0008
[P_INT_Clear] = r1 //清中断
exit_Int:
POP r1,r4 FROM [sp]
RETI
//======================================================
// 函数名称: IRQ6()
// 汇编调用: _IRQ6
// 实现功能: 利用IRQ6_TMB2进行显示刷新.
// 入口参数: 无
// 出口参数: 无
// 破坏寄存器: r1~r4
//======================================================
.PUBLIC _IRQ6
_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_LED_Show
POP r1,r4 FROM [sp]
RETI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -