引子:
用C28 的CPU编程,为了节省CPU开消,提高速度,在关键部位使用汇编编程,有个ADC中断,就使用了汇编。
调试。
程序中有SPI与其它部件通讯,使用查询方式。
开始是正常的,但是一加入ADC中断后,SPI就执行就出现错误,即执行到这一句
while (SpiaRegs.SPISTS.bit.INT_FLAG != 1){}
时就一直查询状态。(其它正常)
知道是ADC中断的问题后,就一节一节地屏蔽它:
B end_adc1int, UNC
经过查找,突然想到在使用某一个变量时,没有改变这个变量所在的段!!如 Buff变量:
MOVW DP, #_Buff
MOV AL, @_Buff
但是我忽略了MOVW这个指令了。结果影响到了SPI。
实际上,没有MOVW时,可能会影响的不一定是SPI,根据程序的编译结果有可能影响到其它内部寄存器或存储器。
将MOVW DP, #_Buff添加到使用 它之前,问题解决 |