AVR单片机状态寄存器SREG精品课件.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AVR单片机状态寄存器SREG精品课件

AVR单片机原理及应用 陈渊睿 Tel:E-mail: ep02@163.com 华南理工大学电力学院 关于状态寄存器SREG 1 状态寄存器SREG (MCS51类似的寄存器为程序状态字PSW,有进位/借位CY, 辅助进位AC, 用户标志F0, 溢出OV, 奇偶标志P等) 其各标志位意义如下: I:全局中断触发禁止位,为中断总控制开关。将其清除,则禁止一切中断(但在异步工作方式下的 T/C2 的中断唤醒MCU功能除外) T:通用标志位,可将一对程序执行起重要作用(或常用)的标志位放在此处,通过对它测试,实现执行不同功能。如:可用BLD指令将T标志 送至寄存器某位,或用BST指令将寄存器某位存于T标志位,实现快速检测判断 H:半进位标志位,指示加、减运算时,低四位向高四位产生的进(借)位。以其与进位C配合,可实现十进制加减法运算软件调整(DAA)功能;或用于十进制数增1(如数字钟)调整场合 S:符号标志位,S=N?V,在正常运算条件下(V=0,不溢出)S=N,即运算结果最高位作为符号是正确的。而当产生溢出时V=1,此时 N 已不能正确指示运算结果之正负,但S=N?V 仍是正确的。对于单(或多)字节有符号数据来说,执行减法或比较操作之后,S标志能正确指示参与相减或比较的两个数的大小 V:溢出标志位,模2补码(即符号数)加、减运算溢出之标志,溢出表示运算结果超过了符号数所能表示的范围(-128~+127)。加法溢出表现为正+正=负,或负+负=正;减法溢出表现为正-负=负,或负-正=正。溢出时,运算结果最高位(即 N)取反才是真正的结果符号。例如: $30+$50=$80,正+正=负,溢出 $80+$90=$10,负+负=正,也为溢出 N:负数标志位,直接取自运算结果最高位。N=1时运算结果为负,否则为正。但溢出时不能表示真实结果(见上条对溢出标志的说明)。 Z:零标志位,用以标示数据算术运算或逻辑运算结果是否为零,或多字节数据算术运算(包括比较)结果是否为零。运算(比较)结果为零(即所有位都清除)时,Z标志置位。就字节型数据运算结果来说,Z的逻辑表达式为Z=/R7·/R6·/R5·/R4·/R3·/R2·/R1·/R0 C:进/借位标志位,标志加法产生的进位,或减法产生的借位。多字节加、减法(包括比较)运算时,通过C将产生的进位或借位提供给高位字节,以实现多字节正确相加或相减。C也是判断相减(比较)两个无符号数大小的标志。多字节移位操作时以C传递衔接。 对全部标志位都可进行置位、清位操作;都可检测各标志位,以检测结果决定程序走向,引出繁多的条件转移指令。 标志位很重要,对运算结果的判断处理,要以相应标志位为依据。它们也是分支、循环走向的路标。初学者因为不熟悉指令系统,编程时要时时检索各指令功能及其执行后对标志位的影响,故要熟记才能提高编程的速度和质量。 例:ADD运算时 各标志位定义 关于状态寄存器SREG 2 执行指令对标志位的影响 各类指令对标志位的影响归纳如下: ①8位加减法(包括带/不带进(借)位的加、减法,以及求补和带/不带借位比较等)指令,影响标志位 HSVNZC。 ② 字加/减立即数(0~63)指令和求反指令不影响标志位H。 ③ 增、减1指令不影响标志位C和H。 ④ 逻辑运算指令都不影响标志位C和H,但清除溢出标志位V。其中CLR指令还清除标志位S、N,并使Z=1。 关于状态寄存器SREG ⑤ 逻辑左移和循环左移指令同8位加法指令一样影响标志位 HSNVZC。逻辑右移和循环右移指令以及算术右移指令都不影响半进位标志 H,但由于这些指令的特殊性,对标志位的影响面可进一步缩小或可简化。如算术右移指令不影响标志位S和 N,并使 V=0;逻辑右移指令清除标志位N,使S=V 等等。 ⑥ 转移指令中除中断返回指令RETI会置位全局中断控制标志位外,其他指令都不影响标志位。 ⑦ 数据传送指令如不向状态寄存器SREG输出数据,对标志位无影响。 ⑧ 位操作指令只影响作为操作对象的标志位。 关于状态寄存器SREG 3 标志位与运算结果的关系 运算时,计算机按二进制(或十六进制)逐位运算得到结果,但会给出相应标志,以让用户判断结果是否正确。一般地,无符号数运算结果是否正确只需看C和Z,而符号数运算要看N、V、(S)和Z。(半进位标志H主要用于十进制运算调整) 例1:加法 $30 + $50 = $80 运算后C=0, Z=0, N=1, V=1, S=0 作为无符号数加法时, C=0(无进位), 结果正确 作为符号数加法时,V=1(溢出), N=1(负数),不正确,应软件修正(如用2个字节表示, S=0, 应为正数 $0080) 3 标志位与运算结果的关系 例2:$80

文档评论(0)

ustt001 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档