51单片机 C语言 _crol_编程问题

voidmain(){j=0xfe;P0=0xfe;while(1){j=_crol_(j,1);P0=_crol_(P0,1);}}以上程序运行时,j的值变化为:0xf... void main()
{
j=0xfe;
P0=0xfe;
while(1)
{
j=_crol_(j,1);
P0=_crol_(P0,1);
}
}

以上程序运行时,j的值变化为:0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;
而P0的值变化为:0xfe,0xfd,0xf9,0xf1,0xe1,0xc1,0x81,0x01;

请问j和P0的值为何不同.

原因找到了,怎么上传图片啊? 想传上来分享一样,也有样问题想请教.

其实运行的结果应该是一样的,只是在Keil软件调试时,Peripherals-I/O-Ports-Port 0下有个'ins:的值没有和P0的值一起变化.

请问这个'ins:的值是什么,在软件调试时如何让它同P0的值同时变化?
展开
 我来答
linnjing
2013-03-25 · TA获得超过2632个赞
知道大有可为答主
回答量:1230
采纳率:91%
帮助的人:518万
展开全部
51单片机的端口是准双向口,每本书上都会这么说,但初学者都很难搞懂这一点。

51端口是弱上拉结构,要读取端口的状态,需要先把对应的端口置1,

物理上,P0端口对应两个寄存器,一个是输入寄存器,你说的ins就是端口的输入状态,由外部电路控制,程序没法控制,只能读。一个是输出寄存器,存着你上次写出的数据。
行走的路人90
2013-03-25 · TA获得超过202个赞
知道小有建树答主
回答量:138
采纳率:100%
帮助的人:76.3万
展开全部
P0是口的数据寄存器,j只是在内存中的变量,在你运算的过程中j肯定是不会自己变的,而P0就不一定了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式