MSP430的软硬件C延时程序设计

技术分类: 嵌入式系统  | 2007-03-12
来源:21IC | 作者:太原理工大学 贺虎 秦建敏

bsp;  001116    3C53  add.w  #0xFFFF.R12
       001118  0F93  tst.w  R15
       00111A  FB23  jne    deIay

       单步执行,观察CYCI正COUNTER,发现每执行一条指令,CYCLECOUNTER的值加1,说明这5条指令各占用1个指令周期,循环体while()每执行一次需要5个指令周期,加上函数调用和函数返回各占用3个指令周期,delay(100)延时了5×100+6—506个指令周期。只要知道指令周期,就能容易的计算出延时时长了。延时函数因循环语句和编译器的不同,执行时间也有所不同,依照上述方法具体分析,可以达到灵活编程的目的。

  &nbs
p;    MSP430的指令执行速度即指令所用的周期数,这里的时钟周期指主系统时钟MCLK的周期。单片机上电后,如果不对时钟系统进行设置,默认800 kHz的DCOCLK为MCLK和SMCLK的时钟源,LFXTl接32768 Hz晶体,工作在低频模式(XTS=O)作为ACLK的时钟源。CPU的指令周期由MCLK决定,所以默认的指令周期就是1/800 kHz="1".25μs。要得到lμs的指令周期需要调整DCO频率,即MCLK=1 MHz,只需进行如下设置:BCSCTLl=XT20FF+RSEL2;

       //关闭XT2振荡器,设定DCO频率为1 MHz
       DCOCTL="DCO2"
       //使得单指令周期为lμs

       并不是说MSP430单片机软件延时最小的延时基准是lμs,当开启XT2=8 MHz高频振荡器,指令周期可以达到125 ns。MSP430F4XX系列的单片机由于采用了增强型锁频环技术FLL+,可以将DCO频率倍增到40MHz,从而得到最快25 ns的指令周期。

       调用延时函数的方法适合于100 μs~1 ms之间的延时,100μs以下的短延时最好通过空操作语句_NoP()或其任意个组合来实现。可使用宏定义实现需要的延时,如要延时3 μs,则:

       #define DELAY5US{_NOP();_NOP();_NOP();}

       结语

      
本文提出的基于MSP430片内看门狗定时器的硬件延时方案和软件延时方法满足了不同时宽级别的延时需求,尤其软件延时,采用汇编程序分析法得到了延时函数准确的延时时间,大大提高了软件延时精确度和程序调试效率,并在多种芯片接口程序中应用,运行效果良好。

 

0
0
(请您对文章做出评价)
1】【2】【3
加载中

对文章的评论

更多评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

  • 博客推荐

  • 论坛推荐

  • 在线研讨会