|
樓主在子程序中使用了死循環(huán),程序運(yùn)行到此時(shí)再也出不來,再按按鍵也就無效了。所有程序都得在主循環(huán) while(1)中跑起來,中斷除外。
另外還有兩處錯(cuò)誤:
1.延時(shí)函數(shù)的參數(shù)數(shù)據(jù)類型要與實(shí)際應(yīng)用相對(duì)應(yīng)。
2.stc15w104是1T單片機(jī),速度比普通51快許多,延時(shí)函數(shù)里的變量也要相應(yīng)增量。
修改如下:
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit led=P3^1;
- sbit S3=P3^0;
- uchar num;
- uint num1;
- //1T單片機(jī)ms延時(shí)程序
- void delay(uint i)
- {
- uint j,k;
- for(j=i;j>0;j--)
- for(k=1150;k>0;k--);
- }
- /*
- //12T單片機(jī)ms延時(shí)程序
- void delay(uint i)
- {
- uint j,k;
- for(j=i;j>0;j--)
- for(k=125;k>0;k--);
- }
- */
- void main()
- {
- while(1)
- {
- if(S3==0)
- {
- delay(10); //消抖
- if(S3==0)
- {
- while(!S3); //等待按鍵松開
- num++;
- if(num>=4)
- num=0;
- }
- }
- if(num==0)
- {
- led=1;
- num1=0;
- }
- else
- num1++;
- if(num1>num*1000)
- {
- num1=0;
- led=~led;
- }
- delay(1);
- }
- }
復(fù)制代碼 |
|