[table=974px][tr][td]
if(aaa==1)
{
for(aaa=0;aaa<50;aaa++)
{
delaymma(50);
P1=~P1;
}
for(aaa=0;aaa<30;aaa++)
{
delaymma(100);
P1=~P1;
}
for(aaa=0;aaa<20;aaa++)
{
delaymma(500);
P1=~P1;
}
aaa=1;
}//aaa=1
aaa 原本是一个 标记 在进入后又利用aaa 来当临时变量, 用完后在还原 原来的值
//=============================================================
if(aaa==3)
{
delay2(bbb);
P1=~P1;
}
现在我想在加个数码管显示上去就~~~显示效果就相当糟糕了(不用定时器)
if(aaa==3)
{
delay2(bbb);
ccc++;
if(ccc==100)
{
P1=~P1;
ccc=0;
}
于是我把这个延时 砍成 100份(延时部分数值也同样改小了) 让主程序来其它程序不用等这么久 (其实引入状态标记会更好不用延时。。但我刚好在写这个小程序~~~实在烦得起框架)
//========================================================================
//=========================================================================================
这次是结果复用 , 省下了2次运算的时间
原代码
ppp=1000000/(65535-eee);
aaa=(65535-eee)%256;
bbb=(65535-eee)/256;
小花样后
aaa=65535-eee
ppp=1000000/aaa;
bbb=aaa/256;
aaa=aaa%256;[table=974px][tr]数码管利用状态标记+程序流程上的占用代替,亮度保护保持时间,提升运行效率.
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit w1=P2^4;
sbit w2=P2^5;
sbit w3=P2^6;
sbit w4=P2^7;
unsigned int bbb,aaa,smg,ccc;
uchar code table[]={0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0,0xff};
void delay()
{
for(bbb=0;bbb<250;bbb++)
{
;
}
}
void smg_xs()
{
smg++;
if(smg==5)
{
smg=1;
}
if(smg==1)
{
w2=w3=w4=1;
P0=table[aaa%10];
w1=0;
}
if(smg==2)
{
w1=w3=w4=1;
P0=table[aaa/10%10];
w2=0;
}
if(smg==3)
{
w1=w2=w4=1;
P0=table[aaa/100%10];
w3=0;
}
if(smg==4)
{
w1=w2=w3=1;
P0=table[aaa/1000%10];
w4=0;
}
}
void main()
{
smg=0;
aaa=1234;
ccc=0;
while(1)
{
smg_xs();
delay();
delay();//#%%%¥#%¥@%@¥#%#@
ccc++;
if(ccc>30)
{
ccc=0;
aaa++;
}
if(aaa>9999)
{
aaa=0;
}
}
}
//===================================================================
状态标记, 多路PWM[td]
void Timer0Interrupt(void) interrupt 1
{
TL0 = 0x9C; //设置定时初值
TH0 = 0xFF; //设置定时初值
TR0 = 1; //定时器0开始计时
pwm++;
}
if(pwm>1000)
{
pwm=0;
len=0;
ren=0;
}
if(lpwm>pwm)// L =======
{
len=1;
}
else
{
len=0;
}
if(rpwm>pwm) // R =======
{
ren=1;
}
else
{
ren=0;
}
}
if(pwm<3)
{
len=0;
ren=0;
} //强制死区
//=======================================================================
200字以内,仅用于支线交流,主线讨论请采用回复功能。