乐此不疲 发表于 2025-2-23 20:15:46

很高兴与版主Yim***的交流、也感谢版主erci***的指点,就在方才问题已经解决了,下面就说说这个憋了我三天的问题所在。
刚刚上手这个工程代码并出现问题时我就第一时间挂载了逻辑分析仪,先测试了正常刷屏的SPI波形,说实话arduino-ESP8266的硬件SPI波形真的非常工整稳定,上电看到屏幕的刷屏动作后就抓取到了一组数据波形,记录好时钟周期数据并截屏保留好波形图以备对比,而后就测试STC8H的模拟SPI波形,而后对照保存的数据和图片通过添加NOP延时一点点的将时钟周期、输出波形调整到与上述的参数完全一致,但是仍然没能正常清屏,于是此后的两天里就一筹莫展了,今天下午无意间看到了keil3的编译提示窗口中的参数,编译后 xdata=30886,这对于STC8H8K而言是严重超了,到此就能解释为什么在AI8051U中可用而在STC8H8K中不好用的问题了。
问题找到了、问题出在哪里也就知道了,问题只能出在数组文件里,打开数组文件发现所有数组定义的类型都是const unsigned char,把它们都改成unsigned char code就可以了(把数组存放在ROM中)。
解决问题后我重新带着问题用逻辑分析仪抓取了完整的初始化数据波形,发现只有前几个直接赋值输出的参数是正确的后面很多通过运算赋值的参数输出都是错误的,这也是仅通过循环发送一个数据来检测SPI波形而没有发现问题的原因。
问题解决了,又可以愉快玩耍了,这里也顺便提醒新手移植代码时要关注下数组文件的变量类型,尤其是程序编译正常但运行不正常时一定要关注一下编译提示栏,有时0警告、0错误挺容易使人麻痹的。

ywhfdl 发表于 2025-4-20 01:04:50

楼主分享下代码嘛

乐此不疲 发表于 2025-4-20 10:41:37

ywhfdl 发表于 2025-4-20 01:04
楼主分享下代码嘛

这个帖子里只是探讨了一个大的RAM的单片机程序移植到小的RAM单片机中出现问题的场景,涉及到SPI的驱动代码在1楼已经有了,不知道层主需要什么代码的分享。
页: 1 [2]
查看完整版本: 请教在AI8051U擎天柱板子上好用的程序下载到8H8K64U中不好用了,请高手指点【已解决】