首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

仿真时形参的传递不正确

仿真时形参的传递不正确

遇到个很奇怪的问题,我在仿真时,当程序运行到spi_transfer(unsigned char spi_data1,unsigned char spi_data2)这个函数时,形参的传递出错了,第一个形参总是为192,第二个形参的传递则总是正确的。比如spi_transfer(0x0C,0x80),单步进入,spi_data1=192,spi_data2=128;当spi_transfer(0x2E,0x01);单步进入,spi_data1=192,spi_data2=1。奇怪了,这是怎么回事呢?有遇到过这种问题的兄弟姐妹吗
还是把你的project打包贴处理看看吧。
海纳百川  有容乃大
版主,发给你了,帮忙看看吧,谢谢!
你仔细看一下程序调试过程,就会发现实际上形参spi_data1是由累加器A传递的。在数据框中的spi_data1只是一个随意分配的堆栈地址,实际上它对应于堆栈中变址寄存器HX的高位,即H的值。而H一直是0xC0,所以你看到的spi_data1就是192了。实际上这不影响程序的运行。

另外,建议你在用芯片调试之前,先用软件仿真跑一下。软件仿真会提示出一些甚至在硬件调试中都很难发现的问题。
海纳百川  有容乃大
返回列表