SH79F3281管脚功能描述:8.12 看门狗定时器(WDT),程序超范围溢出(OVL)复位及迅御亩其它复位状态8.12.1 特性看门狗可以工作在掉电模式下程序超范围溢出后硬件自动检测,并产生OVL复位看门狗溢出频率可选程拆配序超范围溢出复位SH79F3281为进一步增强CPU运行可靠性,内建程序超范围溢出检测电路,一旦检测到程序计数器的值超出ROM最大值,或者亩森发现指令 *** 作码(不检测 *** 作数)为8051指令集中不存在的A5H,便认为程序跑飞,产生CPU复位信号,同时将WDOF标志位置1。为应用这个特性,用户应该将未使用的Flash ROM用0xA5填满。
2.
看门狗看门狗定时器(WDT)是一个递减计数器,独立内建RC振荡器作为时钟源,因此可以通过代码选项在掉电模式下仍会持续运行。当定时器溢出时,将芯片复位。通过代码选项可以
查看更多
从C语言的内部处理机制来说,int型数超出范围(溢出)被认为是一个正常现喊衫象,只会产生错误的计算结果或逻辑错误,而不如闷会触发数据溢出的异常。因此,为了避免因为整数溢出而产生程序逻辑或计算错误,程序员必须自行检测可能出现的溢出或者确保不会出现数据溢出的情况。C语言对于int类型数据超出范围的处理,只有一个最简单的原则:截断处理,即超出int位长度范围的高字节被自动截掉。
比如,假设int长度为16位的情况下,以下代码:
int
a=0X77FFFFL
/*
由于超出范围,渣渗弯高位的77将被自动截掉,实际的a将会等于0xFFFF
*/
++a
/*
a自增后,将超出范围,高位的1被截掉,实际a=0
*/
单片机堆栈溢出后会根据其位置会对运行产生不同程度的影响,或者进入死循环,或者出现不可预料敬稿核的结果,亮掘如果没有开看门狗的话,复位的可能性较小。1、如果栈顶设置在低位,比如2FH,预想堆栈空间比如16个字节,如果溢出,那么如果40H开始被用户在使用的话,可能改变用户寄存器的值,这个影响是双方面的,一是改变了用户的运行结果,二是,当堆栈保存的是子程序地址的话,将出现不可预料的结果,执行完后将回不去了。
2、如果栈顶设置在高位,比如6FH,如果溢出的话敬蔽,那么后面压入堆栈的值将保存在一个虚拟的空间中,也就是80H之后的RAM空间,这个RAM空间是不存在的,因此会造成结果不正确,保存的是地址的话,也会无法回到保存位置。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)