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