在示波器中测量到这段程序的时间大概为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:
孙猴子