本人做一个项目,其中要写一个按键程序,在PIC单片机中,
按键共六个,每个按键要有此功能:短按(<2s)开、关的功能 ,长按(>2s)加、减的功能
我的程序:
void read_sw()
{
UNSIGNED8 sw;
char ram_sw[5],diet[5],i;
if(TickGet() - SW_Time > (TICKS_PER_SECOND/50))
{
SW_Time = TickGet();
sw.byte = ReadEPM(7);
ram_sw[0]=ReadEPM(0);
if(sw.bits.b0)
{
sw_cnt[0]++;
if(sw_cnt[0]<5)
{
if(ram_sw[0])ram_sw[0]=0;
else ram_sw[0]=127;
}
else
{
if(ram_sw[0]>0 && diet[0])
{
ram_sw[0]--;
}
if(ram_sw[0]<127 && !diet[0])
{
ram_sw[0]++;
}
sw_cnt[0]=20;
}
}
if(!sw.bits.b0)
{
diet[0]=1-diet[0];
sw_cnt[0]=0;
}
WriteEPM(0,ram_sw[0]);
}
}
这是一路的代码,但是不太好用,长短按分不清,而且长按只有加,没有减功能,忘热心的朋友指点一二。。。。。谢谢!
此帖出自
小平头技术问答
一周热门 更多>