新手请教:关于合并程序的问题。
期待您的指点。
是不是有些变量被重复定义了,把另外的变量改改名字。
然后,注意一下,按键选择这两个功能的时候看看需不需要初始化本功能。
设按键标志位 当按键1下标志位置1 执行程序1 当按键2按下 同理....
你看看这个#include<reg52.h> //包含单片机寄存器的头文件
#define uchar unsigned char
#define uint unsigned int
sbit key1 = P3 ^ 2;
sbit key2= P3 ^ 3;
/*
********************************************************************************
** 函数名称 : delay(uint z)
** 函数功能 : 延时函数
********************************************************************************
*/void delay(uint z)
{
uchar j;
for(z;z>0;z--)
for(j=200;j>0;j--);
}
/*
********************************************************************************
** 函数名称 :
** 函数功能 : 主函数1
********************************************************************************
*/
void hanshu1()
{
uchar num,dat1,dat2;
delay(500);
P0=0;
dat1=0xfe;
dat2=0x7f;
for(num=0;num<7;num++)
{
P1=dat1; //初始化赋值
dat1=dat1<<1; //右移一位
delay(500); //延时
}
for(num=0;num<7;num++)
{
P1=dat2; //初始化赋值
dat2=dat2>>1; //右移一位
delay(500); //延时
}
P1=0xff;
}
/*
********************************************************************************
** 函数名称 :
** 函数功能 : 主函数2
********************************************************************************
*/
void hanshu2()
{
P1 = 0x00; //置P0口为低电平
delay(5000); // 调用延时程序
P1 = 0xff; //置P0口为高电平
delay(600); // 调用延时程序
}
void main()
{
while(1)
{
if(key1==0&key2==1)
{
delay(5);
if(key1==0&key2==1)
hanshu1();
}
if(key1==1&key2==0)
{
delay(5);
if(key1==1&key2==0)
hanshu2();
}
}
}
几个程序就设几个标志位,对一部分程序集中处理,不要都放一块那样很容易出错相互影响的……也可以到中断中去处理
非常感谢各位的热心解答,看来我还要继续加强学习。