c51电机调速 谁能帮我把下面的程序注释一下 谢谢了

#include <at89x52.h>
unsigned char pwm,pwmh,counter;
void keyadd( );
void keysubb( );
void main( )
{
pwmh=2;
counter=1;
pwm=21;
TMOD=0x02;
TL0=0X38;//自动装载,定时200uS
TH0=0X38;
ET0=1;
EA=1;
TR0=1;
while(1)
{
keyadd();
keysubb();
}
}

void time0_int(void) interrupt 1
{
counter++;
if(counter==pwmh)
{P1_0=0;}
if(counter==pwm)
{counter=1;P1_0=1;}
}
void keyadd( )
{ if(P1_1==0)
{while(P1_1==0);
if (pwmh!= pwm)
{pwmh++;
if (pwmh==pwm){TR0=0;P1_0=1;}
if (pwmh==2){TR0=1;}
}
}
}

void keysubb( )
{ if(P1_2==0)
{while(P1_2==0);
if (pwmh!=1)
{ pwmh--;
if (pwmh==1){TR0=0;P1_0=0;}
if (pwmh==20){TR0=1;}
}
}

}
在每句后面加上注释

第1个回答  2012-06-06
#include <at89x52.h> 加载头文件
unsigned char pwm,pwmh,counter; 定义3个char型数
void keyadd( ); 定义子程序
void keysubb( ); 定义子程序
void main( ) 主程序
{
pwmh=2; 初始值定义:pwmh=2
counter=1; 初始值定义:counter=1
pwm=21; 初始值定义:pwm=21
TMOD=0x02; 定义自动再装入8位计数器
TL0=0X38;//自动装载,定时200uS
TH0=0X38;
ET0=1; 允许T0中断
EA=1; 定时开始
TR0=1; 开启定时器
while(1) 无限执行下边两个子程序
{
keyadd();
keysubb();
}
}

void time0_int(void) interrupt 1 中断子程序
{
counter++; counter+1
if(counter==pwmh) 如果counter==pwmh
{P1_0=0;} P1_0输出低电平
if(counter==pwm) 如果counter==pwm
{counter=1;P1_0=1;} counter置1,P1_0输出高电平

}
void keyadd( )
{ if(P1_1==0) 如果P1_1输出低电平
{while(P1_1==0); 一直执行此子程序,直到P1_1=0,退出 if (pwmh!= pwm) 如果pwmh不等于pwm
{pwmh++; pwm+1
if (pwmh==pwm){TR0=0;P1_0=1;} 如果pwmh=pwm,则关闭定时器TR0,P1_0输出高电平
if (pwmh==2){TR0=1;} 如果pwmh=2,开启定时器TR0
}
}
}

void keysubb( )
{ if(P1_2==0) 如果P1_2输出低电平
{while(P1_2==0); 一直执行此子程序,直到P1_2为低电平,退出 if (pwmh!=1) 如果pwmh不等于1
{ pwmh--; pwmh-1
if (pwmh==1){TR0=0;P1_0=0;} 如果pwmh=1,则关闭定时器TR0,P1_0输出低电平
if (pwmh==20){TR0=1;} 如果pwmh=20,则开启定时器
}
}

}追问

你说的都是表面 深沉次的还是没有 比如 为什么定义pwmh=2 counter=1 pwm=21
还有其周期是多少

追答

每一句注释都有了,就剩下分析了,再说,定义的数跟工艺要求有关,周期自己算一下吧

追问

我要是会算了还问吗 你帮我分析分析吧

下面是c51单片机生成简单的pwm程序调速直流电机。可是接到电机上电机...
可以的,89C51本身没有PWM触发器,调速起来比较麻烦,建议采用本身带有PWM的单片机 是可以的,但要外附加变频转换电路就可以了! 可以的 只用一个

如何设计c51单片机实现直流电机pwm调速系统.不是c语言程序。在线等...
1,“如果用单片机恒温可以使温度到达预定值就停止加热,低了就加热,用一个温度传感器反馈,这样算是一个自动控制吗”你这是控制系统,但是效果会非常差,尤其是对于温度控制这种大惯性系统,达到预定值就停止加热,但是由于惯性,温度肯定会继续上升,电炉烧水的时候,水开了,断电之后水还要沸腾一定时间的...

...您还有用C51驱动两相混合步进电机的程序啊,能给我一份吗?我急需你...
可以加您Q吗?帮我们一下吧 展开  我来答 分享 微信扫一扫 网络繁忙请稍后重试 新浪微博 QQ空间 举报 浏览14 次 可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。 步进电机 c51 驱动 两相 搜索资料 本地图片 图片链接 提交回答 匿名 回答自动保存中为你推荐:特别推荐...

我要做一基于c51的温控风扇最简单的那种。用直流电机,DS18b20,pwm调速...
焊接超级简单,给你几个建议:1是学学ALTIUM,画PCB的,看视频学学,快的话半天速成,做出来之后先将焊盘过孔少量镀锡,焊接比较容易,锡最好用好的,细一点的,相信你自己,焊接根本就不能算个问题。关键是程序,这个凭经验积累,C51功底要积累。至于视频:推荐郭天祥的ALTIUM学习视频。请问。我解释清楚...

全国电子设计大赛大赛又来临了 请问各位放大类题目需要准备哪些模块啊...
像LED,LCD子电路,子程序。(这点凌阳的61板做的很好,有很多现成的标准函数可以调用)AD,DA电路,搞控制的总得选好步进电机的型号,驱动电路,驱动程序吧,那搞无线的应该准备什么呢?自己去想吧!有一个一等奖选手告诉过我,他说“在竞赛前我就知道我会得奖,因为我把该准备的东西都准备了,而且在比赛前几天都梦到了...

如何设计c51单片机实现直流电机pwm调速系统.不是c语言程序。在线等...
2,一般的控制系统都需要加反馈,以构成闭环控制系统,相对的还有开环控制系统。开环控制系统,举个例子,就是你加热的时候事先计算好大约需要多少热量,然后考虑一下环境影响,计算出加热时间,然后控制加热系统按照你这个时间加热。你觉得这样的系统能够稳定工作吗?环境稍稍有变动就挂了!开环控制系统的...

相似回答
大家正在搜