This topic has been archived. It cannot be replied.
-
工作学习 / IT技术讨论 / 哪位DX用过 80C196,有问题请教。偶把从传感器得到的信号转化成数字后,存储在80196 的寄存器里。然后根据上位机的指令把数据传上去。可是不知道为什么,在上传16次后,寄存器里的数字居然变了。无论是保留的D寄存器,还是自定义的寄存器。
传输模块已经用了若干年,从来没有出过毛病。从现象看,很像是寄存器溢出、移位。但是究竟怎么回事儿呢?
请DX们赐教。
-diao_david(翁仲-不是仲翁);
2003-6-10
{309}
(#1232447@0)
-
^_^
-diao_david(翁仲-不是仲翁);
2003-6-10
(#1232557@0)
-
Check ISR for register manipulation; Check possible stack overflow.
-andrew_parah(andrew_toronto);
2003-6-11
(#1234496@0)
-
先别怀疑寄存器的问题,检查检查你的采样程序或者上传程序有没有问题。我看更像你的程序循环到16次时寻址有问题。
-alang(阿朗);
2003-6-10
(#1232598@0)
-
另一组存储在内存里的采样数据就没有问题。
-diao_david(翁仲-不是仲翁);
2003-6-10
(#1232697@0)
-
sars
-hulala(11号钟馗-热狗);
2003-6-10
(#1232724@0)
-
没用过。不过难道这也是MBA的课程之一?
-dundas888(登达寺);
2003-6-10
(#1232795@0)
-
80196我已经多年不用了. 根据这个症状, 如果你是用汇编写的, 仔细检查每一个子程序的寄存器的使用, 是否有寄存器漏保,导致其他的子程序改变了你的数据寄存器.如果用C写的,据我所知,C语言里的很多常用函数对寄存器的保护都做的不够,可能你在调用这些函数时,是它们改变了所用的寄存器.特别是汇编和C混用时,这种情况出现的更多.
可能还有其他原因, 我只能从常规情况分析一下.
另外, 我找不到80196的document, 如果你有, 给我个连接, 多年没用, 很多东西都忘了, 这两天我正写document, 刚好有时间看一下, 也复习复习.:P
-firefox(3号婴宁 火狐);
2003-6-10
{333}
(#1233122@0)
-
我最熟的是6502 CPU,建议你换6502,我可以帮你
-eglington(eglington);
2003-6-10
(#1233285@0)
-
阿朗和火狐说的有道理, 听起来想是软件问题. 不过这种事不看程序现场调试,别人是很难帮你的. 你可以查查code, 看看循环到16次时是否有其他事件发生, 如中断,输入条件变化等等.
-maxima(瘦马);
2003-6-10
(#1233654@0)
-
可以用單步,斷點調試距最後一次用8096已經有五年了。具體的東西不大清楚了。你應該可以分別在仿真機,上位機用單步,斷點調試。特別注意運算,循環指令。
传感器得到的信号转化成数字后,存储在80196 的寄存器里, 數據是不是即時的?
就這麽一個小小的東西,沒有什麽不能解決的,不過要有耐心。
-lai31(kinderdragon);
2003-6-14
{260}
(#1240111@0)
-
谢谢回答我问题的朋友们。因为原来的程序是别人写的,赶着收尾,就想找个捷径。后来我自己从头写了一遍,两个小时搞定 :-)
-diao_david(翁仲-不是仲翁);
2003-6-15
(#1240593@0)