
C51
albert_812
这个作者很懒,什么都没留下…
展开
-
C51填坑记:MOVX指令异常
1.现象描述51单片机开发过程中发现,程序总是概率性出现异常。经调试发现,“movx A, @Rx”指令读到内容与实际内存内容不一致,从而导致跳转逻辑错误。代码如下:MOV R1, #00HMOVX A, @R1JNZ LABEL 这段代码读取外部内存地址为0x00的内容到累加器A,如果内容非零,则跳转到“LABEL”运行。调试发现MOVX指令执行之后,累加器A的值为0(实际XRAM地址为0的区域非零)。2.解决上网检索之后,发现有类似描述“外部扩展RAM的低256个字节,地址出现原创 2020-08-07 10:54:40 · 1483 阅读 · 2 评论 -
C51填坑记:中断处理导致主程序函数参数改变
1.现象平台:keil c51,中颖SH79F7019A现象:在增加了一个中断处理逻辑后,发现主程序异常,断点调试发现某个函数的参数被改变了,程序使用了错误的数据导致逻辑出错。2.排查初步分析,可能原因如下:1.参数寄存器(R0-R7)的值,被中断函数改变。2.堆栈溢出。2.1参数寄存器首先排查参数寄存器(中断里面调用了函数,有参数传递)。通过仿真器观察中断函数汇编...原创 2019-12-12 17:38:23 · 3216 阅读 · 0 评论