這個程序怎么不行呀,如果一直按下按鈕,燈就長亮,而我要的是燈只亮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.raoushi.com/bbs/) | Powered by Discuz! X3.1 |