51单片机让小灯闪5次的问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 11:03:26
我是一个初学者今天试着写一个小灯闪5次的问题,写好后编译没有问题和警告,但不能生成HEX文件.请高手指点一下错在哪里还有没有其它方法实现.
程序如下:
#include<reg51.h>
sbit L1=P2^0;
unsigned int a;
unsigned char y;
void delay()
{
for(a=50000;a>0;a--);
}

void main()
{
while(1)
{
if(y==5)
{
L1=0;
delay();
L1=1;
delay();
y--;
}
}
}
程序一、
#include<reg51.h>
unsigned int a;
#define uchar unsigned char
sbit L1=P2^0;

void delay()
{
for(a=50000;a>0;a--);
}

void main()
{
uchar y;
for(y=0;y<5;y++)
{
L1=0;
delay();
L1=1;
delay();
}
}

程序二、
#include<reg51.h>
unsigned int a;
unsigned char y;
sbit L1=P2^0;

void delay()
{
for(a=50000;a>0;a--);
}

void main()
{
for(y=0;y<6;y++)

不能生产HEX文件是因为你keil C51的软件在输出时没有选中OUTPUT中的Create HEX文件.具体你自己设置了哦。我是搞AVR的,不搞51,但是我知道需要设置后才能产生HEX文件。呵呵:)自己可以在百度里搜相关词条。
好象如此:project->options for ... ->output->create hex file选中即可.
使用菜单Project->Option for target'target1' 在OUTPUT里把Create HEX file勾选

哈哈。你y=5,根本进不去if语句。你啥时候会等于5呢,根本不满足条件!!!帮你写一个吧。
main(void)
{unsigned char i=0;
while(1)
{
for(i=0;i<5;i++)
{L1=1;
delay();
L1=0;
}
}
delay();
delay();
delay(); //这样才会看出相隔,要不然也一直闪。你延时函数太撮。
}