主题:60岁的我学编程--别笑我,我用笨办法入门! (续)[回复都加分]
说出来大家可别笑我,前面我讲了有关亮灯,闪灯和流水的单个程序,后来也学了数码管静态点亮的有关程序,期间也学了调用了程序,有了这几项,为了加深我对学习的印象,我在想能不能把二个程序放在一起呢?这好比做房子,我先做了一间房,后来我想在原来的基础上再加一间呢!不能说把原来的房子折掉,再重新建吧,这样不是有很大的浪费吗!如是,我把单只LED的程序与静态闪亮的数码管程序和在一起,看看能不能二种功能不能二种功能同时实现。
我们知道,在改造房子时,以有的通道是可以利用,谁也不会重新再建一个通道,这不是浪费吗!有了这种想把我就开始把二个不同的程序进行合并;
先看一只发光管闪灯的小程序;
#include<reg52.h> //1
#define uint unsigned int //2
#define uchar unsigned char //3
sbit D1=P1^0; //4
/*void delay();*/ //5
void delay(uint);//5
void main() //6
{
while(1)//7
{
D1=0;//8
delay(10);//9
D1=1; //10
delay(15);//11
}
}
void delay(uint z)//12
{
uint x,y;//13
for(x=100;x>0;x--)//14
for(y=z;y>0;y--);//15
}
以下是数码管静态点亮的小程序;
#include<reg52.h> //1
#define uint unsigned int //2
#define uchar unsigned char //3
sbit du=P2^6; //4
sbit we=P2^7; //5
uchar a;
//6
uchar code bable[]={ //7
0x3f,0x06, 0x5b, 0x4f,
0x66, 0x6d, 0x7d, 0x07,
0x7f,0x6f,0x77, 0x7c,
0x39, 0x5e,0x79,0x71,};
void delay (uint z); //8
void main() //9
{
we=1; //10
P0=0xc0;
we=0; //11
while(1)
{
for(a=0;a>16;a++);//12
{
du=1; //13
P0=bable[a]; //14
du=0; //15
delay(100); //16
}
}
}
void delay (uint z) //17
{
uint x,y; //18
for(x=z;x>0;x--) //19
for(y=100;y>0;y--); //20
}
下面是将上面二个小程序合成的一个程序;“发光管闪亮和数码管静态显示程序”
#include<reg52.h>//1
#define uint unsigned int//2
#define uchar unsigned char//3
sbit D1=P1^0;
sbit du=P2^6; //4
sbit we=P2^7; //5
uchar a;
uchar code bable[]={ //7
0x3f,0x06, 0x5b, 0x4f,
0x66, 0x6d, 0x7d, 0x07,
0x7f,0x6f,0x77, 0x7c,
0x39, 0x5e,0x79,0x71,};
void delay(uint);
void delay (uint z);
void main()
{ we=1; //10
P0=0xc0;
we=0;
while(1)
{
{
for(a=0;a>16;a++);//12
{
du=1; //13
P0=bable[a]; //14
du=0; //15
delay(100); //16
}
}
D1=0;
delay(10);
D1=1;
delay(15);
}
}
void delay(uint z)
{
uint x,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
现在就可以将二个小程序进行比较了,在第一个和第二个小程序中,凡是公共部分,我在第三个程序保甾,比如说,我把第二个程序作为基本程序,然后再把第一个程序公共部分不加入,只把第一个程序必须的语句按要求加入,就成了第三个程序;闪灯和数码管都工作的程序,我用这种方法合成后,在仿真时都很正常,实现了我起初的想法。如果没有这个想法,直接编第三个程序,我是绝对一下编不好的。
通过 这个例子,对于我们初学者来说,是不是只要我们把每个单元部分学好,如下的问题是看如何组合了,不知道是不是这样,我这种想法也不知道对不对,上面的例是不是巧合我也说不清,请各个高手指点指点,如果是这样,那我们的入门速度就会大大加快了,是这样吗?请指教!!谢谢(回复都都加分)
我们知道,在改造房子时,以有的通道是可以利用,谁也不会重新再建一个通道,这不是浪费吗!有了这种想把我就开始把二个不同的程序进行合并;
先看一只发光管闪灯的小程序;
#include<reg52.h> //1
#define uint unsigned int //2
#define uchar unsigned char //3
sbit D1=P1^0; //4
/*void delay();*/ //5
void delay(uint);//5
void main() //6
{
while(1)//7
{
D1=0;//8
delay(10);//9
D1=1; //10
delay(15);//11
}
}
void delay(uint z)//12
{
uint x,y;//13
for(x=100;x>0;x--)//14
for(y=z;y>0;y--);//15
}
以下是数码管静态点亮的小程序;
#include<reg52.h> //1
#define uint unsigned int //2
#define uchar unsigned char //3
sbit du=P2^6; //4
sbit we=P2^7; //5
uchar a;
//6
uchar code bable[]={ //7
0x3f,0x06, 0x5b, 0x4f,
0x66, 0x6d, 0x7d, 0x07,
0x7f,0x6f,0x77, 0x7c,
0x39, 0x5e,0x79,0x71,};
void delay (uint z); //8
void main() //9
{
we=1; //10
P0=0xc0;
we=0; //11
while(1)
{
for(a=0;a>16;a++);//12
{
du=1; //13
P0=bable[a]; //14
du=0; //15
delay(100); //16
}
}
}
void delay (uint z) //17
{
uint x,y; //18
for(x=z;x>0;x--) //19
for(y=100;y>0;y--); //20
}
下面是将上面二个小程序合成的一个程序;“发光管闪亮和数码管静态显示程序”
#include<reg52.h>//1
#define uint unsigned int//2
#define uchar unsigned char//3
sbit D1=P1^0;
sbit du=P2^6; //4
sbit we=P2^7; //5
uchar a;
uchar code bable[]={ //7
0x3f,0x06, 0x5b, 0x4f,
0x66, 0x6d, 0x7d, 0x07,
0x7f,0x6f,0x77, 0x7c,
0x39, 0x5e,0x79,0x71,};
void delay(uint);
void delay (uint z);
void main()
{ we=1; //10
P0=0xc0;
we=0;
while(1)
{
{
for(a=0;a>16;a++);//12
{
du=1; //13
P0=bable[a]; //14
du=0; //15
delay(100); //16
}
}
D1=0;
delay(10);
D1=1;
delay(15);
}
}
void delay(uint z)
{
uint x,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
现在就可以将二个小程序进行比较了,在第一个和第二个小程序中,凡是公共部分,我在第三个程序保甾,比如说,我把第二个程序作为基本程序,然后再把第一个程序公共部分不加入,只把第一个程序必须的语句按要求加入,就成了第三个程序;闪灯和数码管都工作的程序,我用这种方法合成后,在仿真时都很正常,实现了我起初的想法。如果没有这个想法,直接编第三个程序,我是绝对一下编不好的。
通过 这个例子,对于我们初学者来说,是不是只要我们把每个单元部分学好,如下的问题是看如何组合了,不知道是不是这样,我这种想法也不知道对不对,上面的例是不是巧合我也说不清,请各个高手指点指点,如果是这样,那我们的入门速度就会大大加快了,是这样吗?请指教!!谢谢(回复都都加分)