这个程序怎么不行呀,如果一直按下按钮,灯就长亮,而我要的是灯只亮2S就灭
#include <reg51.h>
typedef unsigned int uint;
sbit led=P0^0;
sbit key=P3^2;
sbit sj=P1^4;
void delay(uint z);
void main(void)
{
unsigned char i,j;
sj=0;
while(key==1) //判断是否有键按下否则不往下执行
{
;
}
{
for(j=10;j>0;j--)
for(i=248;i>0;i--);
if(key==0)
led=0;
delay(3000);
led=1;
}
while(key==0)
{
;
}
}
void delay (unsigned int ms)
{
unsigned int i;
unsigned char j;
for(i=0;i<ms;i++)
{
for(j=0;j<200;j++);
for(j=0;j<102;j++);
}
}
这个问题已经回答过了
已经帮你修改好了,而且在51hei单片机开发板上测试通过了,
你这个程序延时2秒的那个函数都是错的,我帮你修改了一下,参考的本论坛制定的 延时函数编写那一帖
还有就是你那个主函数在逻辑上也有问题
修改过的程序在下面 我这里已经测试通过了:
#include <reg51.h> typedef unsigned int uint; sbit led=P0^0; sbit key=P3^2; sbit sj=P1^4; void delay(uint z); void main(void) { unsigned char i,j; sj=0; while(key==1) //判断是否有键按下否则不往下执行 { ; } { for(j=10;j>0;j--) for(i=248;i>0;i--); if(key==0) led=0; delay(2000); led=1; } while(key==0) { ; } } void delay (unsigned int ms) { unsigned int i; unsigned char j; for(i=0;i<ms;i++) { for(j=0;j<200;j++); for(j=0;j<102;j++); } }
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |