我想搞一个按键切换在初始状态流水灯按一下到双闪灯再按一下到时钟,可是之中如果用延时函数会导致CPU不能运行很多事情造成卡顿,利用中断的话定时检测的时间又不一样,我试着编译了代码但发现运行很卡顿,希望能解答
如下我的询问代码流畅演示。
cpp
#include "reg52.h"
unsigned char code SmZiFu[]={63,6,91,79,102,109,125,7,127,111,128,0,255};//共阴0-9.
sbit k=P3^0;//按键定义
void main()
{//缘由https://ask.csdn.net/questions/8012187
unsigned char sy=0,my=0,xd=0,ls=0,qh=0,shi=14,fen=17,w=0;
while(1)
{
if(++sy==0)//第一级数码管延时
{
P1=P2=255;//数码管消隐,有时延。
if(qh==2)
{
if(w==0||w>4)w=1;else w*=2;
P1=SmZiFu[w==1?shi/10:w==2?shi%10:w==4?fen/10:fen%10];//数码段驱动
P2=255-w;//数码位驱动,段值取反适用共阴。
}
else if(++my==0)//第二级LED灯延时
{
P0=ls;
if(qh==0){if(ls==0)ls=1;else ls*=2;}//流水灯
else if(qh==1)//控制切换
{
if(ls<15||ls>15)ls=15;else ls=240;//交替一半闪烁
}
}
}
if(k==0&&++xd==0){if(++qh>2)qh=0;while(k==0);}//按键处理切换功能
}
}

「復次,舍利子!有菩薩摩訶薩安住六種波羅蜜多,常勤精進饒益
有情,口常不說引無義語,身心不起招無義業。
「復次,舍利子!有菩薩摩訶薩常以六種波羅蜜多而為上首修菩薩
行,施諸有情一切樂具,須食與食,須飲與飲,須衣服與衣服,須
車乘與車乘,須香鬘與香鬘,須臥具與臥具,須舍宅與舍宅,須財
穀與財穀,須珍寶與珍寶,須嚴具與嚴具,須僮僕與僮僕,隨餘所
須悉皆施與,勸修眾善教斷諸惡,皆令證得常樂涅槃。
......
「復次,舍利子!有菩薩摩訶薩安住施戒波羅蜜多,作轉輪王具大
威德,常以財寶給施有情,令其安住十善業道。
......
「復次,舍利子!有菩薩摩訶薩安住六種波羅蜜多,常為有情作法
明照,恒不遠離佛法光明,如是展轉乃至證得所求無上正等菩提。
舍利子!是菩薩摩訶薩由此因緣,於諸佛法常能現起。是故,舍利
子!諸菩薩摩訶薩修行般若波羅蜜多,常不應起有罪身業、語業、
意業。」
......
「復次,舍利子!有菩薩摩訶薩安住般若波羅蜜多,速能圓滿一切
智智。成勝智故,關閉一切險惡趣門,受人、天身常不貧賤,諸根
具足形貌端嚴,世間天、人咸所敬愛。」