如何使用汇编语言在MSP430上播放音调

时间:2014-11-24 22:07:47

标签: assembly computer-architecture msp430 iar beep

我想通过连接到MSP430的蜂鸣器播放一首歌。这首歌将是一系列的时间或是哔哔声。但是,我不知道如何使蜂鸣器发出蜂鸣声或如何在装配中控制其音调。我正在使用IAR的Embedded Workbench来处理这个项目。

注意,我可以使用库在C中轻松完成此操作,但我想仅使用程序集来完成此操作。

有人可以发布一个输出“哔”声的示例吗?或仅使用汇编连接到MSP430的蜂鸣器。我可以弄明白其余的。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

我将回答这个问题,做出很多概括和假设。如果你能解决一些问题,虽然我可以重构这个答案并给出一个更好的答案。

CL在评论中点击此处。您需要以特定频率将引脚驱动为高电平和低电平。您可以通过将其驱动为高电平,延迟适当的周期数(取决于您的时钟频率)然后将其驱动为低电平等来完成此操作。

为了达到更高的精度,您可以在MSP430上使用PWM引脚。您将需要使用占空比为50%的PWM信号驱动蜂鸣器。

PWM输出引脚是MSP430上定时器模块的一部分。定时器模块非常灵活,可以使用您使用的时钟源,并具有许多缩放选项来调整频率。您通常可以使用数字控制振荡器(DCO)为时钟供电,然后可以为定时器供电。这样做可以改变PWM信号的频率。如果由于某种原因你不能这样做(比如你需要将DCO用于你的MCLK并且不想弄乱它),你可以通过玩源时钟来手动设置定时器频率&#39 ; s分频器,无需调整定时器寄存器。

以下是关于此事的应用说明:http://www.ti.com/lit/an/slaa116/slaa116.pdf

否则,您可以使用定时器模块对您自己的PWM信号(在任何引脚上)进行位操作,并手动更改捕获/比较以控制频率。

有些问题有助于提供更好的答案:

  1. 您使用的是什么系列的MSP430
  2. 这是什么类型的蜂鸣器,你有数据表吗?
  3. 蜂鸣器是否连接到GPIO引脚,或者引脚是否可以通过定时器模块的PWM输出驱动。
  4. 假设这个蜂鸣器只是一个需要一些外部驱动信号的传感器是否安全 - 或者是内部振荡器只是有一个启用信号的东西。
  5. 您可以发布原理图吗?
  6. 如果使用DCO做其他事情,您是否有可用于MCLK的外部水晶?
  7. 我仍然不明白为什么你会选择在集会中这样做而不使用C,除非这是一个家庭作业问题。即便如此,我会先用C语言来实现它,然后在我完成所有假设之后再回去做它。