上面的程序就不發了
——————————————————————
void main() //主函數
{
TMOD=0x02; //定時器模式2
EA=1; //開啟全局中斷
ET0=1; //開啟定時器中斷
M=1; //M為輸出PWM管腳
while(1) //進入主循環,在這就開始等定時器中斷,除非有調速按鍵按下
{
if(K1==0) //檢測低速擋鍵是否按下 K1為低速擋
{
delay(50); //延時防抖
if(K1==0) //再次檢測
{
Z=1;
H=1;
TR0=0; //關閉定時器0
a=25; //低速擋值
while(!K1)
{
TR0=1; //開啟定時器0
D=0; //打開低速燈
}
}
}
void time() interrupt 1 //中斷
{
i++; //i為擬定脈沖數
if(i>31) //寫這個意思就是 如果i大于31時候 讓i重新記數
{
i=0;
}
if(i>a) //a是關鍵點 要將a當成是一個零界點(這個臨界點有你自己決定)當i大于a時候 M輸出的是低電平
算上定時器重復中斷,就是每次進入中斷后,M都會輸出低電平 除非 i 小于a M輸出高電平 當然M輸出高電平還是低電平由 你自己決定
{
M=0;
}
else M=1;
}
|