c语言释放静态变量函数,求教C语言子函数中静态变量的运用问题

求教各位大神,我编写了一个简单的独立按键防抖的子函数,程序如下,在定时中断中调用这个函数没有效果。然后我把这段程序直接写到中断函数中,它是起作用的。

bit INDRIVER(bit x)

{

bit back;

bit y;

static uchar keybuf = 0xff;

keybuf = (keybuf<<1) | x;                   //扫描一次,左移输入一位

if (keybuf == 0x00)                     //8次扫描均为0

{

y = 0;                                       //按键弹起状态

}

else if (keybuf==0xff)

{

y = 1;                                      //按键按下状态

}

else

{}

back = y;

return back;

}

定时中断函数:

void  T1_ISR(void) interrupt 3

{

TH1=0xF8;

TL1=0xCD;

Ms5_Time++;

if(20>Ms5_Time && Ms5_Time>0)

{

IN2=1;                         //关闭第二片245

OUT_QS1=0;              //关闭第一片573

OUT_QS2=0;             //关闭第二片573

IN1=0;                            // 选中第一片245

//                P1=0XFF;

_nop_();

Input0=INDRIVER(Data0);                  //扫描按键状态1

Input1=INDRIVER(Data1);

Input2=INDRIVER(Data2);

Input3=INDRIVER(Data3);

Input4=INDRIVER(Data4);

Input5=INDRIVER(Data5);

}

是不是因为在子函数中定义了静态变量,所以不能多次调用?  还是我的设计思路就是有问题的?把子函数直接写在中断中,定义多个静态变量,程序重复写多次,是可以运行的。因为硬件上有很多路输入,实在不想重复写防抖程序,求教各位大神,到底哪里出问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值