现有资源为89C2051,外有24C02,采用C编程。
要求:每次8位AD 采样后,实现累加和,且关机后能保存。现次数用24C02保存。单片机按键实现的函数有 (1) 调出累加和及次数,两者相除。得出平均值。
(2) 按键能实现清除累加和及次数。
因累加次数最大可能有999次,不知是否可用静态变量实现。静态变量以前只在书本上学过,没真正用过。现不知如何能实现上述功能。
以下为我的想法。此程序运行时平均值只显示0。
请部各位老师,此方法是否可行,还有没有其它方法。能否详细介绍一下。
如果此方法可行,敬请帮忙指正一下,不胜感激!!!
ulong sum(uchar x)
{
static long sumval; //定义静态变量----累加和
if (x==0)
sumval=0;
else
sumval=(sumval)+AD采样新值; //累加和
return(sumval);
}
ulong avg()
{
uint count;
ulong avgval;
count=24_read(0); //从24C02中取次数
avgval = sum(1)/count;
return(avgval);
}
void clear()
{
uchar count ;
count = 0;
24_write(0,count); //累加和及次数清零
sum(0); //累加和清零
}
void main()
{
ulong temp;
if (P1==0xef)
clear(); //累加和及次数清零
if (P1==0xbe)
{
temp=avg();
disp_led(temp);//送显示平均值
...
}