找回密码
 立即注册
查看: 1015|回复: 7

请教开天斧开发板用中断模拟PWM的问题

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:230
  • 最近打卡:2025-06-17 23:35:30

4

主题

65

回帖

679

积分

高级会员

积分
679
发表于 2023-12-13 23:11:32 | 显示全部楼层 |阅读模式
开天斧开发板,用中断方式产生1000HZ的PWM控制LED0灯的亮度,想输出占空比为50%的PWM输出,为什么输出的波形不对,帮忙看哈程序哪里有问题


#include <stc8h.h>
sbit LED0=P2^0;
sbit LED1=P2^1;

unsigned char HighRH=0;             //高电平重载值的高字节
unsigned char HighRL=0;             //高电平重载值的低字节
unsigned char LowRH=0;              //低电平重载值的高字节
unsigned char LowRL=0;              //低电平重载值的低字节
/***********配置PWM占空比,周期为1000HZ******/
void ConfigPWM( unsigned char dc)
{
    unsigned int high,low;
    high = (11059*dc)/100; // 计算高电平所需的计数值
    low = 11059 - high; // 计算低电平所需的计数值
          high=65536-high +12;
          low=65536-low+12;

    // 计算两个时序需要的定时器重载值
    HighRH = (unsigned char)(high>>8);
    HighRL = (unsigned char)high;
    LowRH = (unsigned char)(low>>8);
    LowRL = (unsigned char)low;
                AUXR |= 0x80;                        //定时器时钟1T模式
                TMOD &= 0xF0;                        //设置定时器模式
                TMOD |= 0x01;                        //设置定时器模式
                TL0 = HighRL;                                //设置定时初始值
                TH0 = HighRH;                                //设置定时初始值
                TF0 = 0;                                //清除TF0中断标志
          ET0=1;           //打开T0中断
                TR0 = 1;                                //定时器0开始计时
                LED0=1;          //输出高电平
               
}
/************定时器0中断,产生PWM**************/
void InterruptTimer0() interrupt 1
{               
                   if(LED0==1)  //当前输出为高电平时,装载低电平值并输出低电平
    {
        TH0 = LowRH;
        TL0 = LowRL;
        LED0 = 0;                               
    }
    else              //当前输出为低电平时,装载高电平值并输出高电平
    {
        TH0 = HighRH;
        TL0 = HighRL;
        LED0 = 1;                         
    }             
}

void main()
{       
  P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
        EA=1;
        LED1=0;       
        ConfigPWM(50);
        while(1);       
}
       

采样周期100us,2.5v,以上频率为1000HZ,

采样周期100us,2.5v,以上频率为1000HZ,
2.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2023-12-06 15:33:02

20

主题

110

回帖

771

积分

荣誉版主

积分
771
发表于 2023-12-13 23:30:25 | 显示全部楼层
问题可能出现在high = (11059*dc)/100;这里,dc为char型,11059编译器会默认为int型,两个相乘的结果大于int型的65535,试试改成high = (11059L*dc)/100;

话说不是有硬件pwm么,那个更简单而且更稳定
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:230
  • 最近打卡:2025-06-17 23:35:30

4

主题

65

回帖

679

积分

高级会员

积分
679
发表于 2023-12-14 20:45:56 | 显示全部楼层
ch*** 发表于 2023-12-13 23:30
问题可能出现在high = (11059*dc)/100;这里,dc为char型,11059编译器会默认为int型,两个相乘的结果大于in ...

感谢大神的指点,解决了困扰我几日的难题,更改后波形已输出正常,关于这个芯片有PWM的问题,这段代码是我另一个(stc11f02e)硬件上的,那个单片机上没有pwm,我还以为那个芯片有问题才将代码移植到开天斧开发板上,再有就是好多坛友都有这个硬件,也方便提问,再次感谢!!!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:100
  • 最近打卡:2025-06-17 08:13:13

734

主题

1万

回帖

1万

积分

管理员

积分
16690
发表于 2023-12-14 22:47:26 | 显示全部楼层
感谢 51 官方论坛 荣誉版主,路见不平拔刀相助
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:556
  • 最近打卡:2025-06-17 20:54:18

21

主题

564

回帖

2870

积分

金牌会员

积分
2870
发表于 2023-12-25 15:29:51 | 显示全部楼层
收藏了,我也有几片STC11F02E,你这个程序很有用,我留着备用

点评

都什么年代了 ? 还收藏 这个经典老古董 ~~~~~~  详情 回复 发表于 2023-12-26 03:37
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:230
  • 最近打卡:2025-06-17 23:35:30

4

主题

65

回帖

679

积分

高级会员

积分
679
发表于 2023-12-25 21:23:53 | 显示全部楼层
wangxi*** 发表于 2023-12-25 15:29
收藏了,我也有几片STC11F02E,你这个程序很有用,我留着备用

相互学习
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5499

积分

荣誉版主

积分
5499
发表于 2023-12-26 03:37:18 | 显示全部楼层
wangxi*** 发表于 2023-12-25 15:29
收藏了,我也有几片STC11F02E,你这个程序很有用,我留着备用

都什么年代了 ?

还收藏 这个经典老古董 ~~~~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:556
  • 最近打卡:2025-06-17 20:54:18

21

主题

564

回帖

2870

积分

金牌会员

积分
2870
发表于 2023-12-26 08:08:17 | 显示全部楼层
LAO*** 发表于 2023-12-26 03:37
都什么年代了 ?

还收藏 这个经典老古董 ~~~~~~

拆机件,被时间验证过了的经典
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-18 00:07 , Processed in 0.212523 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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