51单片机的溢出问题

我记得溢出的意思是超出最大值,可51的溢出标志位OV有点不太理解

例如: 1000 0101
+ 1111 1111
=1 1000 0101

这明显1111 1111 就是最大值,加上任何数都会溢出的啊,可为什么ov=0
而且51中说只有第六或第七位中有一位进位或借位OV才置位,这话怎么理解?

一个字节只有8位,最大数是1111 1111,+0时不会产生溢出,所以标志位OV=0,当最高位的运算产生进位或借位时OV=1,在编程时,当加法或减法时,并不确定所得的结果是什么,每次需要检查OV位的值用相应的程序去处理有借位和进位的不同情况。如单字节运算中,寄存器中已是1111 1111,加立即值1结果还放在寄存器中,则寄存器中的值加法后变为0000 0000,但OV被置位=1,此时只要检查OV值,如果为1就将另一个寄存器中的值+1,如果这个寄存顺加后OV值又成为1则再另个寄存器中加1,按照所用的字节数,不断检查,就可以进行多个字节的加法运算。简单单片机的指令最多给出4个字节的加法运算指令,但可以用这种方法扩展为20个字节的加法运算,甚至更多,条件是片内的RAM够用。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-08-17
有深入探究的意愿,很好。

OV标志位是针对有符号数据类型计算的溢出标志,所以其规则是对bit6(有效数据最高位)或bit7(符号位)其中一位发生进位或借位时,OV才会置位。
以你举的例子来解释,运算时bit6和bit7同时发生进位了,所以OV并不置位。或者从另一个角度来说,前一个二进制补码代表-123,后一个二进制补码代表-1,二者相加的结果是-124——并没有超过八位有符号整型-128~+127的有效范围,所以并不溢出。本回答被提问者和网友采纳

51单片机计时器溢出中断是什么意思?
1、系统晶振频率是12M,则机器周期=12/12=1us;2、定时1ms=1*1000=1000us;3、工作在方式0下:最大计数值是2^13=8192;4、定时初值=8192-(1*1000)=7192;5、换算成十六进制数为:定时初值=1C18H。定时器中断是由单片机中的定时器溢出引起的中断,51单片机中有两个定时器t0和t1。

51单片机用T0计数器计算T1定时器的溢出次数,该如何实现?
方法一:只开T1定时器中断,在T1定时器中断子程序中对(TH0 TL0)做加一运算。方法二:T1定时器模式,T0计数器模式,在T1定时器中断子程序中对某一固定引脚Px.x做“置1-清0-置1”操作,并将对应引脚连接在T0(P3.4)引脚。默认情况下T0中断比T1中断权限高,每次定时器T1溢出后,会在中断子程序...

51单片机计时器溢出后是不是就自动重新从零开始计时了?
标准的51单片机,不管LZ是否说错,不管计数、还是计时,所谓溢出,都是指计数值从 FF→00的跳变,既然是 跳到00了,自然就是从0开始计时了。不过,现在增强型的定时器,可以设置目标值(如 0xaa),定时器从0计到 0xaa,就产生中断,此时 计时值 并不是 00,如果不操作该值,那么定时器将继续计...

关于单片机定时器溢出值的设定
有些定时器是递减计数的,有些单片机的定时器则是递增计数的,还有可以设定计数方式的,51单片机的定时器就是递增的,所以它溢出的时间不是你设定的初值本身代表的机器周期数,而是初值与65536的差值,所以程序中使用了负号来对SYSCLK求补。比如你需要的定时时间是4个机器周期(SYSCLK),那么你就必须装入...

51单片机中,溢出标志OV=CP⊕CS。CP和CS是什么?
51单片机中,溢出标志OV=CP⊕CS, 应该表示为OV=C6'⊕C7'即加减运算时,C6'是次高位D6I向最高位产生的进位或借位 C7'是次高位D7I向第九位产生的进位或借位 二者的异或 如果为1 则表示溢出。 呵呵 满意 就选满意回答喽 本回答由提问者推荐 举报| 答案纠错 | 评论 31 1 胖大海君 采纳率:82% 来自:...

单片机中乘法指令溢出
在51中,乘法指令MUL AB 是这样子的 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器 说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。如果积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为0 这里的溢出是...

51单片机定时器\/计数器定时溢出时,在执行中断程序的同时内部硬件计数还 ...
我经验实验得到的结果是,如果在执行T0中断服务程序的时候,这个T0又溢出了,单片机等到执行完T0中断服务程序之后,马上就会再次执行这个中断服务程序,因为标志位在执行前次中断服务程序的时候已经置1,所以刚退出T0服务程序,又会再次进入。和你说的差不多,谢谢拉~~~ 本回答由提问者推荐 举报| 答案纠错 | 评论(11) ...

51单片机中,溢出标志OV=CP⊕CS。CP和CS是什么?
嘿嘿 这个俺知道, 可以告诉你 51单片机中,溢出标志OV=CP⊕CS, 应该表示为OV=C6'⊕C7'即加减运算时,C6'是次高位D6I向最高位产生的进位或借位 C7'是次高位D7I向第九位产生的进位或借位 二者的异或 如果为1 则表示溢出。呵呵 满意 就选满意回答喽 ...

51单片机关于溢出标志OV的计算,用异或运算是如何运算的,求高人指点
首先这个是由单片机自动产生的,不需要人为计算。D7 D6 D5 D4 D3 D2 D1 D0 + D7 D6 D5 D4 D 3D2 D1 D0 --- 比如上面两个数相加,当两个D6有进位时,定义为次高位进位;当两个D7相加再有向上进位时,定义为最高位进位,这两个进位异或结果送到OV ...

51单片机的溢出率什么意思
指的是定时器一秒钟溢出多少次,它是串口通信的时间基准,不管是同步通信还是异步通信 通信时定时器工作在8位模式,最大计数值是256个脉冲(如果晶振12兆,256个脉冲即256uS),如果装入初值156,则经过100个脉冲后计数值达到256,即溢出,所以100us溢出一次,溢出率即每秒10000次 ...

相似回答