中断函数里面的程序是什么意思啊,看了好久都没看懂,初学单片机,请大神不吝赐教!!!!

2025-03-04 12:05:55
推荐回答(1个)
回答1:

exter0() interrupt 0    // 外中断0用来从外设输入数据,并采用窗口宽度为8的均值滤波来滤除噪声干扰。
{
unsigned int dat;
uchar count,temp,temp1,j;

count++;    // 数据个数加1
EX0=0;      // 暂时禁止中断
P2=0xff;    // 准备从P2口输入数据

MRD=0;      //  发出读命令

HBEN=0;     // 读取低8位
temp=P2;    //  低8位,放temp中
delayus(1);
HBEN=1;     //读取高八位
temp1=P2;    // 放temp1中

temp1&=0x0f;   // 数据只有12位,则屏蔽掉最高4位
num=temp1*256+temp;     // 还原成1个数据

num1=num1+num;      // 求累和
if(count==8)        // 是否已经有8个数了
{
count = 0;    // 是,重新从0开始

num2 = num1 /8;  // 累和除以8,也就是求平均
num1 = 0;        // 类和再次从0开始
j++;             // 平均的数据又多了一个
if(j>7) j=0;     // 如果有多于8个的平均值,又从0开始
}
numb[j]=num2;             // 存放这个有用的均值
MRD=1;                    // 结束读信号
init(0x40+j);
EX0=1;                    // 开外中断0
}