TI中文支持网
TI专业的中文技术问题搜集分享网站

430延时程序测量值与其汇编指令执行时间不一致问题!

在示波器中测量到这段程序的时间大概为50.6us

#define CPU_F                 ((double)5000000)#define delay_us(x)       __delay_cycles((long)(CPU_F*(double)(x)/1000000.0))

PxOUT.x |= BIT0;     /*  拉高某引脚 */

delay_us(50);

PxOUT.x &= ~BIT0;     /*  拉低某引脚 */

在CCS5编译环境下对应的汇编指令为:

BIC.B       #4, &Port_B_PBOUT

PUSHM.A    #1, R13

MOV.W     #0X0050, R13

1_$4:     DEC.W    R13

                JNE    (1_$4)

POPM.A     #1, R13

BIS.B     #4, &Port_B_PBOUT

在MSP430的数据手册中得到对应的指令周期为

instruction                          cycles

BIC.B                                   5

PUSHM.A                           28

MOV.W                                2

DEC.W                                2

JNE                                      2

POPM.A                              28

BIS.B                                   5

芯片MCLK设置为5MHz,所以总时长为  (5+28+2+(2+2)* 80+28+5)*0.2 = 77.6us > 50.6us

请问我哪里弄错了吗?

zc:

何解?

zc:

请教

zc:

zc:

。。。。。。。。

Bruce Wei:

有一种设计叫做:流水线。

zc:

回复 Bruce Wei:

那怎么在这种情况下利用汇编计算时长呢?

zc:

回复 Bruce Wei:

你好,文件看过了,和430 datasheet上描述的内容差不多,还是不能解答我的问题,或者是我没找到关键点。如果方便的话,可以把上面给的汇编程序在430 pipeline 架构下的执行时间标注一下吗    谢谢!

zc:

……………..

zc:

孙猴子

赞(0)
未经允许不得转载:TI中文支持网 » 430延时程序测量值与其汇编指令执行时间不一致问题!
分享到: 更多 (0)