Keil单步调试赋值不对的问题

我用的单片机是STC12C5A60S2,在单步调试的时候想设置P1.0为高阻输入

启动后发现P1M1为0x08

单步运行"P1M1=0xff"之后显示P1M1=0xfa

用的是Keil4,有知道什么原因的吗?
另外有用过STC12C5A60S2的AD转换发现转换结果偏高的没?
我查看了一下,反汇编是对的,但是为什么结果是错的呢?

在线等!!!

keilc是不支持STC12C5A60S2单片机的,但可以用它来编译,编译后的HEX代码文件是可以在STC12C5A60S2单片机上运行的,而单步调试就无法得到正确的结果了,因为它并没有P1M1,P1M0寄存器,虽然你编译通过了,是因为你用头文件定义了这两个寄存器,但是无法调试仿真的,那个调试的结果是随机的,必须在实物单片机STC12C5A60S2上运行才能得到正确的结果。同样keilc也不支持AD转换的,那个AD转换的寄存器也是没有的,所以,结果是不对的,同样,必须在实物单片机上STC12C5A60S2运行才能得到正确的结果。追问

你说的意思我明白了,但是定义的时候P0M0,P1M1也是分配实际地址了啊,难道keil所支持的单片机里面没有这两个地址?要是有这两个地址的话那我直接给这两个地址赋值还会不会有问题呢?

追答

虽然P1M1也是分配实际地址了,但是假的,就是因为keilc不支持STC单片机的,所能仿真的单片机里是没有这两个寄存器的,(不是没有这两个地址,定义了就有了地址,但没有用的,不是真的寄存器,所以,那个值是随机的)。很简单的事,把程序下载到实物的STC单片机里运行就行了,一切正常了。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答