标题: 关于单片机io口溢出问题 [打印本页]

作者: hnnnj    时间: 2019-11-17 13:15
标题: 关于单片机io口溢出问题
令P0=0xff;之后,P0=++P0,那么P0等于多少,溢出的去哪了?
作者: Y_G_G    时间: 2019-11-18 08:27
如果是一直累加:0>255>0>255,如此循环
如果是一直累减:255>0>255>0,如此循环
只能说是到了过了255就产生一次溢出,但数据不是水,没有溢出到哪里的说法
如果编译器编译成加法指令(ADD)指令,溢出就会使标志位C置位1
如果编译器编译成累加(INC)或者累减指令(DEC)指令,溢出不会影响标志位,它就像跑马灯一样循环
作者: 笨笨兔    时间: 2019-11-18 10:33
IO口溢出?
IO能溢出?
说法奇特!
作者: yzwzfyz    时间: 2019-11-18 11:02
总共就8位,你非要问第9位的事!
作者: bh2030693    时间: 2019-11-18 11:24


首先要分解开输入和输出寄存器。
P0 = 0xff;是输出寄存器赋值。
假设P0没有外接任何东西(上拉),默认是开漏状态,这时候P0端口是0x00电平。
P0 = ++P0; 分解开来:
先执行 ++P0 :是输出寄存器(0x80) = 0xff + 1 = 0x00;
再执行 P0 = P0:P0输出寄存器(0x80) = 输入寄存器(0x80)的数据(管脚实际电压0x00,不是输出寄存器的0x00);
最终 P0 = 0x00;






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1