{
PWM_PA0|=(1<<PA0)
}
for(b=100-yb>0b--) //PWM低电平宽度
{
PWM_PA0|=(0<<PA0)
}
这里面的Y应该是X才对吧。。。。
不会是先判断Y循环 里面再循环,逻辑上不成立的。
所以你的占空比X应该就是那个Y
先解释下此函数的功能void beep(void)
{
uchar t
for(t=0t<100t++)//循环,共输出50个脉冲
{
delaynms(1)//延时,即两个脉冲的间隔时间
FMQ=!FMQ //产生脉冲,此句貌似有错误,应该写成 FMQ = ~FMQ
}
FMQ=1 //关闭脉冲,即循环后,不管结果如何,必须让此端口置 1
delaynms(300)//延时,此句有没有都可以
}
看程序的开头 sbit FMQ = P3^6可知,这是一个输出端口,至于连接的什么不得而知
但从函数本身看,这只是一个简单的利用延时函数来输出脉冲的函数,其精度不高
程序开头有四句
sbit PWM11 = P1^0
sbit PWM12 = P1^1
sbit PWM13 = P1^2
sbit PWM14 = P1^3
并且在中断函数中进行控制,初步可以断定,这是一个利用L298N 控制的两相步进电机
但此程序的可读性太差,除了当时编程的时候可以理解其内容,等过段时间就会忘记流程啦
此程序有待改进!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)