硬件环境:MSP430
软件环境:IAR
最近在用MSP430测试汇编运行时间的时候发现了问题:
程序段一:
Mainloop xor.b #002h,&P5OUT ; Toggle P5.1
jmp Mainloop ; Again
程序段二:
mov.b #002h,R15 ;
Mainloop xor.b R15,&P5OUT ; Toggle P5.1
jmp Mainloop ; Again
两端程序的P5.1口测频率结果是 12cycles,但是手册上说Rn 至 &EDE要4个cycles而#N 至 &EDE要5个cycles,jump要用2个cycles,那么,程序段一:(4+2)*2 = 12,程序段二: (5+1)*2 = 14.
请高手不吝赐教,谢谢。
MSP430汇编语言中不同操作指令,相同类型的地址模式,指令运行的时间都一样吗?
另外,在IAR中,软件仿真中如何得到精确的指令时间计算?
利尔达的说明和官方的说明都很少有介绍这个方面的内容,我怀疑是IAR进行了优化,但是不知道在哪里更改?
汇编语言运行时间问题(MSP430)
答案:2 悬赏:0 手机版
解决时间 2021-02-11 21:54
- 提问者网友:自食苦果
- 2021-02-11 02:44
最佳答案
- 五星知识达人网友:廢物販賣機
- 2021-02-11 04:10
指令运行的时间不一样
精准定时CPU_F是晶振频率
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) //x us
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) /// x ms
精准定时CPU_F是晶振频率
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) //x us
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) /// x ms
全部回答
- 1楼网友:鸽屿
- 2021-02-11 05:44
#pragma vector是固定在程序中的格式,后面接的是中端向量地址wdt_vector
这使开门狗中端,如果是定时器a/b中端那向量就是timera1_vector (timerb1_vector ) 如果是a/d转换完成中端sd16_vector如果是端口一中端那向量就是port1_vector。
__interrupt void watchdog_timer(void)
这句话除了watchdog_timer是自己定义的函数名外(自己定义的)其他是固定的(当然void参数可以是int或者其他的double等等)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯