635|8

4

帖子

0

TA的资源

一粒金砂(中级)

使用proteus同时输出方波和三角波的时候出问题了 [复制链接]

使用proteus进行基于msp430的仿真时发现单独输出三角波没问题,但是方波和三角波一起输出的时候三角波就变了,请问是什么原因

image.png

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)//方波
{
  P1OUT=51;
  delay_ms(50);
  P1OUT=255;
  delay_ms(50);
}
void main(void)
{
  unsigned int i;
  WDTCTL=WDTPW+WDTHOLD;//停止看门狗功能
  BCSCTL1&=~XT2OFF;//使TX2有效,TX2上电时默认为关闭
  do
  {
    IFG1&=~XT2OFF;//清除振荡器失效标志
    for(i=0xff;i>0;i--);//延时,待稳定
  }
  while((IFG1 & OFIFG)!=0);//振荡器失效标志
  BCSCTL2 |= SELM1;//使MCLK=XT2
   P4DIR=0XFF;
   P1DIR=0XFF;


while(1)
  {
    
    triangular();
    square();
  }
}

 

此帖出自51单片机论坛

最新回复

我个人觉得你的delay有关。如果延时是靠死循环实现的,会有很大影响,因为CPU在死循环延时,没法干其他活。建议你改成定时器中断延时。这样能保证在延时的时候,不会造成互相影响。   详情 回复 发表于 2023-3-24 22:21

回复

1万

帖子

24

TA的资源

版主

用延时方式,两个函数互相影响了。用定时器就不会有问题

此帖出自51单片机论坛

回复

918

帖子

24

TA的资源

纯净的硅(中级)

CPU同一时间只能执行一处代码,多核或多线程除外,你这两个交替执行的,当然不对了。
此帖出自51单片机论坛

回复

4

帖子

0

TA的资源

一粒金砂(中级)

dcexpert 发表于 2023-3-22 15:48 用延时方式,两个函数互相影响了。用定时器就不会有问题

啊又是定时器,没学懂,有资料推荐吗

此帖出自51单片机论坛

回复

2万

帖子

342

TA的资源

版主

最好也把电路也提出来看看

此帖出自51单片机论坛

回复

3846

帖子

4

TA的资源

版主

是不是因为电路设计或仿真参数等原因导致三角波失真的呢

此帖出自51单片机论坛

点评

[attachimg]685746[/attachimg] 电路长这样,有大佬说是CPU不能同时处理两处任务,建议用定时器,但是我用定时器又出现了错误error[e16],不知道怎么解决,希望最好不用定时器吧,不熟这个知识   详情 回复 发表于 2023-3-23 22:05

回复

4

帖子

0

TA的资源

一粒金砂(中级)

qwqwqw2088 发表于 2023-3-22 22:34 最好也把电路也提出来看看

image.png  电路长这样

此帖出自51单片机论坛

回复

4

帖子

0

TA的资源

一粒金砂(中级)

led2015 发表于 2023-3-23 20:26 是不是因为电路设计或仿真参数等原因导致三角波失真的呢

image.png

电路长这样,有大佬说是CPU不能同时处理两处任务,建议用定时器,但是我用定时器又出现了错误error[e16],不知道怎么解决,希望最好不用定时器吧,不熟这个知识 

此帖出自51单片机论坛

回复

163

帖子

15

TA的资源

一粒金砂(高级)

如果您需要查看本帖隐藏内容,请登录或者注册
此帖出自51单片机论坛

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

相关帖子
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表