上面的程序就不发了
——————————————————————
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;
}
|