找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1071|回复: 4
打印 上一主题 下一主题
收起左侧

关于单片机io口溢出问题

[复制链接]
跳转到指定楼层
楼主
ID:643583 发表于 2019-11-17 13:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
令P0=0xff;之后,P0=++P0,那么P0等于多少,溢出的去哪了?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:401564 发表于 2019-11-18 08:27 | 只看该作者
如果是一直累加:0>255>0>255,如此循环
如果是一直累减:255>0>255>0,如此循环
只能说是到了过了255就产生一次溢出,但数据不是水,没有溢出到哪里的说法
如果编译器编译成加法指令(ADD)指令,溢出就会使标志位C置位1
如果编译器编译成累加(INC)或者累减指令(DEC)指令,溢出不会影响标志位,它就像跑马灯一样循环
回复

使用道具 举报

板凳
ID:158375 发表于 2019-11-18 10:33 | 只看该作者
IO口溢出?
IO能溢出?
说法奇特!
回复

使用道具 举报

地板
ID:123289 发表于 2019-11-18 11:02 | 只看该作者
总共就8位,你非要问第9位的事!
回复

使用道具 举报

5#
ID:245004 发表于 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;

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表