AVR单片机状态寄存器PPT课件_第1页
AVR单片机状态寄存器PPT课件_第2页
AVR单片机状态寄存器PPT课件_第3页
AVR单片机状态寄存器PPT课件_第4页
AVR单片机状态寄存器PPT课件_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、AVRAVR单片机原理及应用单片机原理及应用陈渊睿华南理工大学电力学院第1页/共19页关于状态寄存器关于状态寄存器SREG SREG 1 状态寄存器状态寄存器SREG(MCS51类似的寄存器为程序状态字类似的寄存器为程序状态字PSW,有进位,有进位/借位借位CY, 辅助进位辅助进位AC, 用户标志用户标志F0, 溢出溢出OV, 奇偶标志奇偶标志P等等) 其各标志位意义如下:其各标志位意义如下:全局中断触发禁止位,为中断总控制开关。将其:全局中断触发禁止位,为中断总控制开关。将其清除,则禁止一切中断(但在异步工作方式下的清除,则禁止一切中断(但在异步工作方式下的 T/C2 的中断唤醒的中断唤醒M

2、CU功能除外)功能除外):通用标志位,可将一对程序执行起重要作用(或:通用标志位,可将一对程序执行起重要作用(或常用)的标志位放在此处,通过对它测试,实现执行常用)的标志位放在此处,通过对它测试,实现执行不同功能。如:可用不同功能。如:可用BLD指令将指令将T标志标志位位76543210 $3F($5F)ITHSVNZC第2页/共19页送至寄存器某位,或用送至寄存器某位,或用BST指令将寄存器某位存于指令将寄存器某位存于T标志位,实现标志位,实现快速检测判断快速检测判断:半进位标志位,指示加、减运算时,低四位向:半进位标志位,指示加、减运算时,低四位向高四位产生的进高四位产生的进(借借)位。以

3、其与进位位。以其与进位C配合,可实配合,可实现现十进制加减法十进制加减法运算运算软件调整软件调整(DAA)功能;或用功能;或用于十进制数增于十进制数增(如数字钟如数字钟)调整场合调整场合:符号标志位,:符号标志位, ,在正常运算条件下,在正常运算条件下(,不溢出),即运算结果最高位作(,不溢出),即运算结果最高位作为符号是正确的。而为符号是正确的。而当产生溢出时,此时当产生溢出时,此时 已不能正确指示运算结果之正负,但已不能正确指示运算结果之正负,但 仍仍是正确的是正确的。对于单。对于单(或多或多)字节字节有符号有符号数据来说,执数据来说,执行减法或比较操作之后,行减法或比较操作之后,标志能正

4、确指示参与相标志能正确指示参与相减或比较的两个数的大小减或比较的两个数的大小第3页/共19页:溢出标志位,模补码:溢出标志位,模补码(即即符号数符号数)加、减运算溢加、减运算溢出之标志,溢出表示运算结果出之标志,溢出表示运算结果超过了符号数所能表超过了符号数所能表示的范围示的范围(-128+127)。加法溢出表现为正。加法溢出表现为正正负,或负负正;减法溢出表现为正负正负,或负负正;减法溢出表现为正负负,或负正正。负,或负正正。溢出时溢出时,运算结果最高位,运算结果最高位(即(即 )取反才是真正的结果符号取反才是真正的结果符号。例如:。例如: $30$50$80,正正负,溢出,正正负,溢出$8

5、0$90$10,负负正,也为溢出,负负正,也为溢出:负数标志位,:负数标志位,直接取自运算结果最高位直接取自运算结果最高位。时运算结果为负,否则为正。但时运算结果为负,否则为正。但溢出时不能溢出时不能表示真实结果表示真实结果(见上条对溢出标志的说明)。(见上条对溢出标志的说明)。:零标志位,用以标示数据算术运算或逻辑运算:零标志位,用以标示数据算术运算或逻辑运算结果是否为零,或多字节数据算术运算(包括比较)结果是否为零,或多字节数据算术运算(包括比较)结果是否为零。结果是否为零。运算(比较)结果为零(即所有位运算(比较)结果为零(即所有位都清除)时,标志都清除)时,标志置位置位。就。就字节型数

6、据运算字节型数据运算结果结果来说,的逻辑表达式为来说,的逻辑表达式为/R7/R6/R5/R4/R3/R2/R1/R0第4页/共19页:进:进/借位标志位,标志加法产生的进位,或减法产借位标志位,标志加法产生的进位,或减法产生的借位。多字节加、减法(包括比较)运算时,生的借位。多字节加、减法(包括比较)运算时,通过将产生的进位或借位提供给高位字节,以实通过将产生的进位或借位提供给高位字节,以实现多字节正确相加或相减现多字节正确相加或相减。也是判断相减(比。也是判断相减(比较)两个无符号数大小的标志。多字节移位操较)两个无符号数大小的标志。多字节移位操作时以传递衔接。作时以传递衔接。 对全部标志位

7、都可进行置位、清位操作;都可检测对全部标志位都可进行置位、清位操作;都可检测各标志位,以检测结果决定程序走向,引出繁多的各标志位,以检测结果决定程序走向,引出繁多的条件转移指令。条件转移指令。 标志位很重要,标志位很重要,对运算结果的判断处理,要以相对运算结果的判断处理,要以相应标志位为依据应标志位为依据。它们也是分支、循环走向的路标。它们也是分支、循环走向的路标。初学者因为不熟悉指令系统,编程时要时时检索各初学者因为不熟悉指令系统,编程时要时时检索各指令功能及其执行后对标志位的影响,故要熟记才指令功能及其执行后对标志位的影响,故要熟记才能提高编程的速度和质量。能提高编程的速度和质量。第5页/

8、共19页例例:A:ADDDD运算时运算时各标志位定义各标志位定义对于其它指令,对于其它指令,C,Z,V,HC,Z,V,H定义式可能不同定义式可能不同第6页/共19页2 执行指令对标志位的影响执行指令对标志位的影响各类指令对标志位的影响归纳如下:各类指令对标志位的影响归纳如下:位加减法(包括带位加减法(包括带/不带进(借)位的加、减法,不带进(借)位的加、减法,以及求补和带以及求补和带/不带借位比较等)指令,影响标不带借位比较等)指令,影响标志位志位 。 字加字加/减立即数(减立即数(063)指令和求反指令不影)指令和求反指令不影响标志位。响标志位。 增、减指令不影响标志位和。增、减指令不影响标

9、志位和。 逻辑运算指令都不影响标志位和,但清除逻辑运算指令都不影响标志位和,但清除溢出标志位。其中溢出标志位。其中CLR指令还清除标志位、指令还清除标志位、,并使。,并使。关于状态寄存器关于状态寄存器SREG SREG 第7页/共19页 逻辑左移和循环左移指令同位加法指令一样逻辑左移和循环左移指令同位加法指令一样影响标志位影响标志位 。逻辑右移和循环右移。逻辑右移和循环右移指令以及算术右移指令都不影响半进位标志指令以及算术右移指令都不影响半进位标志 ,但由于这些指令的特殊性,对标志位的影响面可但由于这些指令的特殊性,对标志位的影响面可进一步缩小或可简化。如算术右移指令不影响标进一步缩小或可简化

10、。如算术右移指令不影响标志位和志位和 ,并使,并使 ;逻辑右移指令清除;逻辑右移指令清除标志位,使标志位,使 等等。等等。 转移指令中除中断返回指令转移指令中除中断返回指令RETI会置位全局中会置位全局中断控制标志位外,其他指令都不影响标志位。断控制标志位外,其他指令都不影响标志位。 数据传送指令如不向状态寄存器数据传送指令如不向状态寄存器SREG输出数据,输出数据,对标志位无影响。对标志位无影响。 位操作指令只影响作为操作对象的标志位。位操作指令只影响作为操作对象的标志位。关于状态寄存器关于状态寄存器SREG SREG 第8页/共19页关于状态寄存器关于状态寄存器SREGSREG3 标志位与

11、运算结果的关系标志位与运算结果的关系 运算时,计算机按二进制运算时,计算机按二进制(或十六进制或十六进制)逐位运算得逐位运算得到结果,但会给出相应标志,以让用户判断结果到结果,但会给出相应标志,以让用户判断结果是否正确。一般地,是否正确。一般地,无符号数无符号数运算结果是否正确运算结果是否正确只需看只需看C和和Z,而,而符号数符号数运算要看运算要看N、V、(S)和和Z。(半进位标志半进位标志H主要用于十进制运算调整主要用于十进制运算调整)例例1:加法:加法 $30 + $50 = $80 运算后运算后C=0, Z=0, N=1, V=1, S=0作为无符号数加法时作为无符号数加法时, C=0(

12、无进位无进位), 结果正确结果正确作为符号数加法时,作为符号数加法时,V=1(溢出溢出), N=1(负数负数),不正确,不正确,应软件修正应软件修正(如用如用2个字节表示个字节表示, S=0, 应为正数应为正数 $0080)第9页/共19页3 标志位与运算结果的关系标志位与运算结果的关系例例2:$80 + $90 = $10运算后,运算后,C=1, Z=0, N=0, V=1, S=1作为无符号数运算时,作为无符号数运算时,C=1(有进位有进位)应加到高字节,否则结应加到高字节,否则结果不正确果不正确作为符号数运算时,作为符号数运算时, V=1(溢出溢出), N=0(正数正数),不正确,不正确

13、,应软件修正应软件修正(如用如用2个字节表示个字节表示, S=1, 应为负数应为负数 $FF10)-128 + -112 = -240例例3:$EB + $CA = $B5运算后,运算后,C=1, Z=0, N=1, V=0, S=1, H=1作为无符号数运算时,作为无符号数运算时,C=1(有进位有进位)应加到高字节,否则应加到高字节,否则结果不正确结果不正确作为符号数运算时,作为符号数运算时, V=0(未溢出未溢出), N=1(负数负数),S=1(=N), 结果正确,不必修正结果正确,不必修正(-21 + -54 = -75)第10页/共19页关于状态寄存器关于状态寄存器SREG SREG

14、第11页/共19页4 用软件实现用软件实现十进制加、减法调整十进制加、减法调整子程序的设计方法(即软件子程序的设计方法(即软件DAA) 计算机采用的十进制操作数一般为压缩型计算机采用的十进制操作数一般为压缩型8421 BCD 码码.每个每个 BCD 代表位十进制数,每位代表位十进制数,每位BCD码共存于同一字节单元中。码共存于同一字节单元中。BCD运算涉及状态运算涉及状态寄存器中的进位和半进位寄存器中的进位和半进位 ,它们分别为高、低,它们分别为高、低位位 BCD的进(借)位。在的进(借)位。在进行进行 BCD码的加减运码的加减运算时算时,计算机是按二进制数对待的计算机是按二进制数对待的,因此

15、会产生与,因此会产生与十进制运算规则不相符合的情况:十进制运算规则不相符合的情况:关于状态寄存器关于状态寄存器SREG SREG 第12页/共19页 当产生进当产生进(借借)位位(或或)时,该进时,该进(借借)位等于位等于16(对涉及的一位(对涉及的一位BCD码而言),而在十码而言),而在十进制运算时应等于进制运算时应等于10,二者相差,二者相差6。 可能产生非法可能产生非法 BCD 码(码(AF)。产生原)。产生原因有二:一是在十进制加法运算时,该产生进因有二:一是在十进制加法运算时,该产生进位而按二进制运算却不能产生进位,使和成为位而按二进制运算却不能产生进位,使和成为非法非法 BCD 码

16、;二是相减产生借位时,借位应为码;二是相减产生借位时,借位应为10而按二进制运算为而按二进制运算为16,使差多并可能使差变,使差多并可能使差变为非法为非法BCD码。码。软件软件 DAA 即为纠正以上即为纠正以上“错误错误”而设。从以上而设。从以上说明看到,说明看到,“纠错纠错”的方法是做加减调整的方法是做加减调整以及解决相关问题。以及解决相关问题。关于状态寄存器关于状态寄存器SREG SREG 第13页/共19页(1)加法加法DAA经实践考察,经实践考察,BCD码加法运算可产生以下种情况,码加法运算可产生以下种情况,注意这里讲的进位是对和的泛指。注意这里讲的进位是对和的泛指。 不须调整。特点是

17、既不产生进位,也不产生非法不须调整。特点是既不产生进位,也不产生非法,如,如$22$11$33。 产生非法产生非法BCD,必须对非法,必须对非法BCD加调整。特点加调整。特点是是BCD码相加后不产生进位,但加调整后产码相加后不产生进位,但加调整后产生进位,如生进位,如$36$37$6D,加,加$06调整后变调整后变为为$73(产生半进位)。(产生半进位)。$68$87$EF,加,加$66调整后变为调整后变为$155(产生进位和半进位)等。(产生进位和半进位)等。关于状态寄存器关于状态寄存器SREG SREG 第14页/共19页 产生进位,必须加调整。特点是产生进位,必须加调整。特点是BCD码相

18、加只码相加只产生进位,不会同时产生非法产生进位,不会同时产生非法BCD码;而加调码;而加调整后既不会再产生进位(而是清除了原来的进整后既不会再产生进位(而是清除了原来的进位),也不会产生非法位),也不会产生非法BCD。例。例$99$99$132,进位和半进位都置位,故加,进位和半进位都置位,故加$66来调整:来调整:$32$66$98,并要恢复进位。,并要恢复进位。综合以上种情况,得出下面加法综合以上种情况,得出下面加法DAA之实现方法:之实现方法:首先保存首先保存BCD码相加后的状态寄存器码相加后的状态寄存器SREG(保(保存其中的进位和半进位,分别称为存其中的进位和半进位,分别称为Co和和

19、 Ho),再将),再将BCD码之和加上立即数码之和加上立即数$66,产生出,产生出新的进位新的进位Cn和半进位和半进位Hn。关于状态寄存器关于状态寄存器SREG SREG 第15页/共19页 若若Co、Cn中有一个置位中有一个置位(只能有一个只能有一个),说明高位,说明高位BCD满足调整条件并调整完毕;否则为不够调整条满足调整条件并调整完毕;否则为不够调整条件,应减件,应减$60恢复。若恢复。若Ho、Hn中有一个置位中有一个置位(只能只能有一个有一个),说明低位,说明低位BCD满足调整条件并调整完毕;满足调整条件并调整完毕;否则为不够调整条件,应减恢复。程序中是将新否则为不够调整条件,应减恢复。程序中是将新旧进位、半进位对应或起来,只对或结果进行判断。旧进位、半进位对应或起来,只对或结果进行判断。注意,软件注意,软件DAA功能既要保证本字节压缩功能既要保证本字节压缩BCD码码相加值的正确性,又要保证对高位相加值的正确性,又要保证对高位BCD产生进产生进位的正确性,故要将位的正确性,故要将 CoCn 的结果返还给的结果返还给SREG中的进位,使下一步能正确实现高位字节中的进位,使下一步能正确实现高位字节BCD带带进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论