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

我用的单片机是STC12C5A60S2,在单步调试的时候想设置P1.0为高阻输入启动后发现P1M1为0x08单步运行"P1M1=0xff"之后显示P1M1=0xfa用的是... 我用的单片机是STC12C5A60S2,在单步调试的时候想设置P1.0为高阻输入

启动后发现P1M1为0x08

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

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

在线等!!!
展开
 我来答
lycdl
高粉答主

推荐于2016-05-08 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4960万
展开全部
keilc是不支持STC12C5A60S2单片机的,但可以用它来编译,编译后的HEX代码文件是可以在STC12C5A60S2单片机上运行的,而单步调试就无法得到正确的结果了,因为它并没有P1M1,P1M0寄存器,虽然你编译通过了,是因为你用头文件定义了这两个寄存器,但是无法调试仿真的,那个调试的结果是随机的,必须在实物单片机STC12C5A60S2上运行才能得到正确的结果。同样keilc也不支持AD转换的,那个AD转换的寄存器也是没有的,所以,结果是不对的,同样,必须在实物单片机上STC12C5A60S2运行才能得到正确的结果。
追问
你说的意思我明白了,但是定义的时候P0M0,P1M1也是分配实际地址了啊,难道keil所支持的单片机里面没有这两个地址?要是有这两个地址的话那我直接给这两个地址赋值还会不会有问题呢?
追答
虽然P1M1也是分配实际地址了,但是假的,就是因为keilc不支持STC单片机的,所能仿真的单片机里是没有这两个寄存器的,(不是没有这两个地址,定义了就有了地址,但没有用的,不是真的寄存器,所以,那个值是随机的)。很简单的事,把程序下载到实物的STC单片机里运行就行了,一切正常了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式