高手看下这程序~AT89S52单片机,控制直流电机,这样速度好慢,而且一会儿转一会儿不转

#include<reg52.h>#defineucharunsignedcharsbitzz=P1^0;sbitfz=P1^1;ucharPWM;voidmain(){... #include<reg52.h>
#define uchar unsigned char
sbit zz=P1^0;
sbit fz=P1^1;
uchar PWM;
void main()
{
TMOD=1;
TH0=0xFF;
TL0=0xF6;
EA=1;
ET0=1;
TR0=1;
PWM=80;
zz=0;
fz=1;
while(1)
{

}
}
void timer0() interrupt 1 using 2
{
static uchar a=0;
TH0=0xFF;
TL0=0xF6;
a++;
if(a>=100)
a=0;
if(a<=PWM)
zz=0;
else
zz=1;

}
展开
 我来答
xachf
2012-04-26 · TA获得超过316个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:215万
展开全部
你这个程序的主要问题是定时时间太短,你的定时器在晶振是12MHZ的情况下,5uS就可中断一次,而你的后续处理时间,从程序来看,应该超过了4uS,所以是不行的。
建议1 ,最好采用带PWM的51单片机。如宏晶的STC系列,价格也便宜。
建议2,若不打算采用带PWM的单片机,可将定时器定时周期加长,最好采用8位自动装载模式。
topmen1982
2012-04-21
知道答主
回答量:5
采纳率:0%
帮助的人:7620
展开全部
把static uchar a=0;
去掉就能实现0.8的占空比
追问
在程序里面调节占空比可以调电动机速度~学习中,不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式