今天晚上用实验板写了一个LED数码管和按键的程序...
主要功能是...利用实验板上的二个按键实现数字的加减...
通电后,数码管显示0;然后按板上的+键,数字会从0一直加到最大9999为止.
如果按-键则一直减到0为止...整个程序很简单...HE HE...
大家可以把这个程序下载到板中实验下...
昨晚搞到一点多...收获就是...对编程有了一种新的认识...以前对编程的理解是通达到功能就可以...HE HE...经过昨晚朋友的指点.本来程序写完有670字节...经过简化小了很多...最后简化到512字节...HE HE...把没必要的语句和变量可以省掉.复杂的判断用简单的方式完成...
比如我昨晚...一个判断是用三行....经朋友指点...换成二行...编译的出来的代码马上少了60字节...HE HE...
if(!P21)
{
if(Led_data)
Led_data-=1;
//上面二行可以代替下面三行.HE HE...
//这样能省不少代码呀;
//Led_data--;
//if((Led_data==0)|(Led_data>65534))
//Led_data=0;
}
本来我是用下面三行的...朋友给我上面二行.我一看呀...我晕...这样也能解决问题...H EHE...
这就是菜鸟和高手的区别...还得努力...HE HE....
欢迎大家一起讨论....希望有高手提出更能精简的方案..HE HE.
#include<at89x52.h>
#define uint unsigned int
#define uchar unsigned char
sbit LED0=P1^0;
sbit LED1=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;
sbit P24 =P2^4;
sbit P20 =P2^0;
sbit P21 =P2^1;
uchar Led_Number[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0x86,0x8e,0x82};
uchar One,Two,Three,Four;
uint Led_data=0;
void Delay(uint x);
void Display(void);
void Key(void);
void Led_Analyze(uint i);
void main()
{
//uchar i;
while(1)
{
Display();
Key();
}
}
void Key(void)
{
uchar i;
P24=0;
if(!P20)
{
for(i=0;i<10;i++)
Display();
if(!P20)
{
Led_data++;
if(Led_data>=9999) Led_data=9999;
}
}
if(!P21)
{
for(i=0;i<10;i++)
Display();
if(!P21)
{
if(Led_data)
Led_data-=1;
//上面二行可以代替下面三行.HE HE...
//这样能省不少代码呀;
//Led_data--;
//if((Led_data==0)|(Led_data>65534))
//Led_data=0;
}
}
Led_Analyze(Led_data);
}
void Led_Analyze(uint i)
{
One="i/1000";
Two=(i/100)%10;
Three=(i%100)/10;
Four=(i%100)%10;
}
void Delay(uint x)
{
while(--x);
}
void Display()
{
if(One)
{
LED0=0;
P0=Led_Number[One];
Delay(100);
LED0=1;
}
if(One|Two)
{
LED1=0;
P0=Led_Number[Two];
Delay(100);
LED1=1;
}
if(One|Two|Three)
{
LED2=0;
P0=Led_Number[Three];
Delay(100);
LED2=1;
}
LED3=0;
P0=Led_Number[Four];
Delay(100);
LED3=1;
}
用户312931 2011-2-24 13:36
wang1jin 2007-10-26 21:34
哈哈.我是菜鸟呀...东搞一下西搞一下...
不过现在总算有个明确的目标了.
wang1jin 2007-9-4 22:03
去小软件共享中找一找.
用户1010551 2007-9-4 21:55
用户506238 2007-8-28 13:38
不错,学习
wang1jin 2007-8-24 09:58
用户98628 2007-8-24 08:55
谢谢老大了
不仅为我们做了板子
还自己写教程带领我们
真的很感激
用户1302782 2007-8-24 07:58
我还看不懂 呵呵