标题: 新手求问单片机+SPWM相关问题 [打印本页]

作者: STARTJACK    时间: 2019-1-28 20:19
标题: 新手求问单片机+SPWM相关问题
看了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. }
复制代码


各位大神帮我看看问题在哪

作者: wulin    时间: 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};//正确




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1