MOVW DP,#PIECTRL>>6
MOV PIECTRL,#1H
这两条指令是使能PIE,但是跑的时候PIECTRL写不进去值,看反汇编结果是这样:
287 MOVW DP,#PIECTRL>>6
0x13e506: 761F0033 MOVW DP, #0x33
288 MOV PIECTRL,#1H ;中断向量从PIE提取
0x13e508: 28600001 MOV *-SP[32], #0x0001
但是前面的寄存器也是这样赋值的,反汇编也是对的:
264 MOVW DP,#TIMER2PRD>>6
0x13e4fa: 761F0030 MOVW DP, #0x30
272 MOV TIMER2PRD,#30000;周期值为500us 60M
0x13e4fc: 28127530 MOV @0x12, #0x7530
274 MOV TIMER2TCR,#1100000000100000B;减计数,无中断,清中断标志,自动重装
0x13e4fe: 2814C020 MOV @0x14, #0xc020
问题在哪?试着把MOV PIECTRL,#1H 改成 MOV 0X20,#1H,这样倒是可以使能PIE。那以后碰到直接写寄存器咋办?