找回密码
 立即注册

QQ登录

只需一步,快速开始

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

新手求问单片机+SPWM相关问题

[复制链接]
回帖奖励 1 黑币 回复本帖可获得 1 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:437755 发表于 2019-1-28 20:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看了51hei论坛上通过SPWM等面积算法来获得SPWM的帖子
帖子链接:http://www.51hei.com/bbs/dpj-100884-1.html
按照帖主的说法,只要在中断的时侯更改定时器初值就可以实现。
可是我得出来的波形却是占空比固定的方波

单片机程序如下:
  1. #include < reg52.h >
  2. unsigned char code x[]={556, 315, 829, 883, 348, 1276, 82, 1416, 82, 1276, 348, 883, 829, 315};

  3. unsigned int i = 0 ;
  4. sbit L1 = P1^0;
  5. void init()                                                   
  6. {
  7.         TMOD = 0X01;
  8.         TH0 = (65536-x[i])/256;
  9.         TL0 = (65536-x[i])%256;
  10.         EA = 1;
  11.         ET0 = 1;                                                                                                           
  12.         TR0 = 1;
  13.         L1 = 1;
  14. }
  15. void main()
  16. {
  17.         init();
  18.         while(1);
  19.                
  20. }

  21. void timer0() interrupt 1
  22. {
  23.         L1 = ~L1;
  24.         if (i >= 13)
  25.                 i = 0;
  26.         else
  27.                 i++;

  28.         TH0 = (65536-x[i])/256;
  29.         TL0 = (65536-x[i])%256;

  30. }
复制代码


各位大神帮我看看问题在哪
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2019-1-29 17:49 | 只看该作者
数组的数据类型定义错误,unsigned char型最大255!!!
unsigned char code x[]={556, 315, 829, 883, 348, 1276, 82, 1416, 82, 1276, 348, 883, 829, 315};//错误
unsigned int code x[]={556, 315, 829, 883, 348, 1276, 82, 1416, 82, 1276, 348, 883, 829, 315};//正确
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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