中断函数里面的程序是什么意思啊,看了好久都没看懂,初学单片机,请大神不吝赐教!!!!
答案:1 悬赏:0 手机版
解决时间 2021-01-27 15:51
- 提问者网友:十年饮冰
- 2021-01-27 06:32
中断函数里面的程序是什么意思啊,看了好久都没看懂,初学单片机,请大神不吝赐教!!!!
最佳答案
- 五星知识达人网友:冷風如刀
- 2021-01-27 08:08
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
}
{
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
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯