📄 int2gisr.c
字号:
#include "F2407REGS_c.h"
/*************************************************************************
文件名: interrupt INT2()
日期: 2007年02月8日
公司(作者):
描述和说明: CPU核级中断2(INT2)主服务程序
*************************************************************************/
ioport unsigned port0002; // 定义I/O口地址变量
// 由于I/O空间只有一个设备AD7865
// 所以AD7865地址可任意设,现设为0x0002
#define AD7865_CS port0002 // 定义字符标识AD7865_CS等于I/O口地址0x0002
unsigned int timer1_number=0; // 全局变量,用于定时器中断计数
signed int AD7865_U; // 存14位AD转换结果,后变为16位数
signed int U_data_in[320]; // 10个周波AD采样数据缓冲区,为16位2的补码
void interrupt INT2()
{
switch(PIVR) // 由外设中断向量寄存器PIVR判断
{ // 由哪个片内外设事件引起的中断
case 0x0027: // 定时器1的0.625ms周期中断
// 中断向量为0x0027
T1CNT=0x00; // 定时器1的计数器重新赋0
EVAIFRA=EVAIFRA&0x0080; // 清除定时器1周期中断标志,
// 否则以后的中断将被忽略
AD7865_U=AD7865_CS; // 读AD转换结果,14位2的补码
AD7865_U=AD7865_U<<2; // 14位2的补码转变为16位2的补码
U_data_in[timer1_number]=AD7865_U; // 存入AD采样数据缓冲区
timer1_number++; // 定时器1中断次数加1
if(timer1_number==320)
{
timer1_number=0; // 采10个周波后,计数复位,重新开始
}
PFDATDIR = PFDATDIR&0xFFEF; // IOPF4输出低电平,为下次再次输出高电平作准备
PFDATDIR=PFDATDIR|0x1010; // 为再次启动AD,输出高电平 (IOPF4) CONVST=1,
// 形成启动AD所需的上升沿
break; // 返回
default: // 其它结果
break; // 返回
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -