找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2585|回复: 3
打印 上一主题 下一主题
收起左侧

STC15W单片机的定时器0问题,如何高效简单的代码实现

[复制链接]
跳转到指定楼层
楼主
如何高效简单的代码实现。

51hei图片_20210729152904.png (35.97 KB, 下载次数: 52)

51hei图片_20210729152904.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2021-7-29 17:11 | 只看该作者
设PWM周期是T,脉冲宽度是P,PW1、PW2这两个相差180度的输出。
做个定时中断,中断周期=T1,保证:T=2*N*T1,T>P;N由你选,要保证占空比好调节就行了!实际只要做到N是P、T/2、的公约数即可。
调置一个计数器X。
中断服务程序:
1、X=X+1;中断计数,处理脉冲宽度,占空比的时机。
2、当X=T时,清X=0;即一个周期完成从头再计。
3、当X=0时,置PW1=1;相位0度,PW1开始。
4、当X=P时,清PW1=0;PW1正脉冲结束。
5、X=T/2时,置PW2=1;相位180度,PW2开始。
6、X=(T/2+P) MOD T 时,清PW2=0;PW2正脉冲结束。
注,分两种情况处理PW2正脉冲结束时间:
P<T/2时,X=T/2+P 时PW2正脉冲结束
P>=T/2时,X=T/2+P-T=P-T/2 时PW2正脉冲结束;
简单吧。
回复

使用道具 举报

板凳
ID:161164 发表于 2021-7-29 18:01 | 只看该作者
24到100us 的变化增量是多少?
1us?5us?10us?不同增量对单片机的速度要求很不一样
回复

使用道具 举报

地板
ID:401564 发表于 2021-7-29 22:53 | 只看该作者
楼主学习心态还是蛮好的
但学习的方法并不对
一有问题就问,不管问题有多简单,总之是觉得不懂都要问
可是,学习本身就是去学你本身不会的东西呀,你都会了,还学什么呢?
"如果高效简单"这个问题是如何产生的?
是你想要高效简单还是项目要求?或者是作业要求的?
编程并不是高效简单就是好的
就拿定时器中断来说,
使能一些相关中断,人家都是:
EX0=1;
ET0=1;
EA=1;
EX1=1;
ET1=1,
为什么不用IE=0x8f;呢?难道这一条语句不更加"高效简单"吗?
看出这里头有什么不同吗?
STC15最高效的PWM用片上的PWM功能,而不是用定时器,如果片上没有,那就换单片机,价钱差不多一样的
如果一定要用定时器,最高效的是汇编语言,但汇编不一定会简单
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表