找回密码
 立即注册

QQ登录

只需一步,快速开始

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

stc8h单片机pwm关闭有延时

[复制链接]
跳转到指定楼层
楼主
想做一个开1秒关0.5秒效果 这是代码。


现在状态是,时间是对的,但是pwm输出好像有延时一样,做不到开1关0.5,要么就开一下关一下(迅速的)或者开两三秒关一下
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2023-8-28 10:31 | 只看该作者
代码不全
你是如何定时的?
为啥不截行数?
回复

使用道具 举报

板凳
ID:1034262 发表于 2023-8-28 10:37 | 只看该作者
PWM操作是马上起作用的,不会出现延时的,有延时是你的额程序操作逻辑问题。

STC8H系列的高级PWM,连续输出0或1有2种方法(以PWM1P为例):

1、使用PWMx_ENO禁止输出PWM,对应IO成为普通IO,禁止PWM输出后,由这个IO直接输出高或低电平。
  PWMA_ENO |= 0x01;   // 允许PWM1P输出
  delay_ms(5);        // P1.0输出PWM 5ms
  P10 = 1;            // P1.0输出高电平
  PWMA_ENO &= ~0x01;  // 关闭PWM输出
  delay_ms(5);        // P1.0输出高电平5ms
               
  PWMA_ENO |= 0x01;   // 允许PWM1P输出
  delay_ms(5);        // P1.0输出PWM 5ms
  P10 = 0;            // P1.0输出低电平
  PWMA_ENO &= ~0x01;  // 关闭PWM输出
  delay_ms(5);        // P1.0输出高电平5ms

2、设置PWMx_CCMRn,强制PWM输出有效(高)电平/无效(低)电平。
  PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x60;  // PWM正常输出
  delay_ms(5);                               // PWM输出5ms
  PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x40;  // 强制PWM输出无效(低)电平
  delay_ms(5);                               // PWM输出低电平5ms
  PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x60;  // PWM正常输出
  delay_ms(5);                               // PWM输出5ms
  PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x50;  //强制PWM输出有效(高)电平
  delay_ms(5);                               // PWM输出高电平5ms
回复

使用道具 举报

地板
ID:1040201 发表于 2023-8-28 16:24 | 只看该作者
coody_sz 发表于 2023-8-28 10:37
PWM操作是马上起作用的,不会出现延时的,有延时是你的额程序操作逻辑问题。

STC8H系列的高级PWM,连续 ...

写的很好 ,应该是逻辑问题,
回复

使用道具 举报

5#
ID:1079614 发表于 2023-8-30 08:34 | 只看该作者
coody_sz 发表于 2023-8-28 10:37
PWM操作是马上起作用的,不会出现延时的,有延时是你的额程序操作逻辑问题。

STC8H系列的高级PWM,连续 ...

谢谢大佬
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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