倔强青铜铜 2022-06-17 07:59 采纳率: 84%
浏览 35
已结题

简易波形的代码是不是有问题

是我的代码有问题吗?为什么放到proteus里面不出来我想要的波形?

#include "msp430f249.h"
#define CPU_F ((double)8000000)
#define delay_us(x)__delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x)__delay_cycles((long)(CPU_F*(double)x/1000.0))
//void sawtooth(void)
//{
//  char i;
//  P4OUT=i++;
//  delay_us(390);
//}

void triangular(void)
{
  char i;
  for(i=0;i<255;i++)
  {
    P4OUT=i;
    delay_us(195);
  }
  for(i=255;i>0;i--)
  {
    P4OUT=i;
    delay_us(195);
  }
}
void square(void)
{
  P4OUT=51;
  delay_ms(50);
  P4OUT=255;
  delay_ms(50);
}
void main(void)
{
  unsigned int i;
  WDTCTL=WDTPW+WDTHOLD;
  BCSCTL1&=~XT2OFF;
  do
  {
    IFG1&=~XT2OFF;
    for(i=0xff;i>0;i--);
  }
  while((IFG1 & OFIFG)!=0);
  BCSCTL2 |= SELM1;
   P4DIR=0XFF;
   while(1)
    {
     //sawtooth();
     triangular();
     square();
    }
}
  • 写回答

1条回答 默认 最新

  • qllaoda 2022-06-17 09:58
    关注

    P4上接了DAC?
    triangular函数里面的i,不应该用char。 因为在这句 for(i=0;i<255;i++)里, char 永远满足 <255这个条件,第一个循环就跳不出去。
    至少也该用unsigned char,保险点用int

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月25日
  • 已采纳回答 6月25日
  • 创建了问题 6月17日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分