在示波器中测量到这段程序的时间大概为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
请问我哪里弄错了吗?