永发信息网

不知道这段程序什么意思,希望能解释 ps:51单片机能不能不需要外部时钟,只使能pwm功能就行?

答案:2  悬赏:0  手机版
解决时间 2021-12-24 05:49
oid PwmAddChk(void)
{
if(PWMH!=PWMT)
{
PWMH++;
FMQ=0;
}
else
FMQ=1;
}
void PwmSubChk(void)
{
if(PWMH!=0x02)
{
PWMH--;
FMQ=0;
}
else
FMQ=1;
}
main()
{
TMOD=0x02;
TH0=0x06;
TL0=0x06;
PWMT=0x15;
PWMH=0x02;
counter=0x01;
ET0=1;
EA=1;
TR0=1;
FMQ=0;
while(1)
{
if(pwmadd==0)
{
delay_50ms(1);
if(pwmadd==0)
{
while(pwmadd==0);
PwmAddChk();
}
}
if(pwmsub==0)
{
delay_50ms(1);
if(pwmsub==0)
{
while(pwmsub==0);
PwmSubChk();
}
}
}
}
最佳答案
有的51是可以不需要外部时钟的,入STC系列的单片机,有内部RC电路产生的时钟。
oid PwmAddChk(void) //设置脉宽不到最宽时加1
{
if(PWMH!=PWMT) //如果脉宽不到最宽则加1
{
PWMH++;
FMQ=0; //脉冲置0
}
else //否则脉冲置1
FMQ=1;
}
void PwmSubChk(void) //设置脉宽不到最低时减1
{
if(PWMH!=0x02) //如果脉宽不为最低则减1
{
PWMH--;
FMQ=0; //脉冲置0
}
else
FMQ=1;
}
main()
{
TMOD=0x02;
TH0=0x06;
TL0=0x06;
PWMT=0x15;
PWMH=0x02;
counter=0x01;
ET0=1;
EA=1;
TR0=1;
FMQ=0;
while(1)
{
if(pwmadd==0) //如果加1键有效则
{
delay_50ms(1); //延时去抖
if(pwmadd==0) //如果加1键任然有效则
{
while(pwmadd==0); //等待加1键抬起
PwmAddChk(); //设置脉宽加1
}
}
if(pwmsub==0) //如果减1件有效则
{
delay_50ms(1); //延时去抖
if(pwmsub==0) //如果减1键任然有效则
{
while(pwmsub==0); //等待减1键抬起
PwmSubChk(); //设置脉宽减1
}
}
}
}
全部回答
你用定时器开中断吧,如果只是简单的用io口的话,得到的频率很不准确的! 思路:根据单片机的晶振大小计算定时器的初值,在中断程序里给对要输出脉冲的引脚取反操作就是了,例如:p1^0=~p1^0; 还有脉冲频率不能太高哦,要保证定时器的计时时间大于中断程序执行时间~~ 程序大体结构: void init_timer() //定时器初始化 { } void main() //主程序 { } void t0() interrupt 1//t0的中断程序 { }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
蚂蚁森林,能量有245克,自己明明已经收了但
Choosethebestanswer.Pleasekeepquiet
夏天农村结什么果实?
大张村村委会在什么地方啊,我要处理点事
星露谷物语怎么养鸡
胡子鱼可以吃吗
单选题与《故乡》语句顺序完全相同的是①我想
御龙在天83级去博望坡挂机经验高不高
某课外活动小组用氯酸钾和二氧化锰的混合物制
三星s6打开相机会自动闪跳两下怎么回事
北护驾村委会地址有知道的么?有点事想过去!
律师事务所的性质是什么?属于独资企业还是公
为什么路由器设置完成以后还不能上网
御龙在天角色怎么恢复,有网址吗?删了2次还
我在吃水果用英语怎么说
推荐资讯
请问要如何看起来像白人?
筒骨放几个小时有味道了怎么办
19世纪后半期,在绘画方面,出现了新的流派,
苒五行属什么
地平线后视镜是不是通用
求给个天龙八部 6个人结拜的名字
高考励志对联11字,以及横批,有哪些
一个木字旁,右边一个门,门里是个东字,这个字
谁是世界上最爱袁雪的人?
射雕英雄传2调息和地宫经验哪个高?
刚买的诺基亚6显示繁体字是港版吗
单选题据史料记载,清朝康熙末年官方公布的人
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?