
单片机高手此延时问题
#include<reg52.h>#defineuintunsignedintvoiddelay(void){uinta,b;for(a=0;a<800;a++);for...
#include <reg52.h>
#define uint unsigned int
void delay (void)
{uint a,b;
for (a=0;a<800;a++);
for (b=0;b<800;b++);
}
sbit led=P1^1;
void main ()
{
led=1;
delay();
led=0;
delay();
} 展开
#define uint unsigned int
void delay (void)
{uint a,b;
for (a=0;a<800;a++);
for (b=0;b<800;b++);
}
sbit led=P1^1;
void main ()
{
led=1;
delay();
led=0;
delay();
} 展开
3个回答
展开全部
问题有2 : 首先 主程序只执行一遍 所以你看不到灯的亮灭,
其次 你的延时程序的for里面的800太小了 写个20000吧 包你效果好
附代码:
/**********
延时跟你的晶振也有关系的 默认你是
12MHz的
*************/
#include <reg52.h>
#define uint unsigned int
void delay (void)
{uint a;
for (a=0;a<20000;a++);
}
sbit led=P1^1;
void main ()
{
while(1)
{
led=1;
delay();
led=0;
delay();
}
}
其次 你的延时程序的for里面的800太小了 写个20000吧 包你效果好
附代码:
/**********
延时跟你的晶振也有关系的 默认你是
12MHz的
*************/
#include <reg52.h>
#define uint unsigned int
void delay (void)
{uint a;
for (a=0;a<20000;a++);
}
sbit led=P1^1;
void main ()
{
while(1)
{
led=1;
delay();
led=0;
delay();
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询