- 1、本文档共83页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
02第二章单片机的硬件结构和原理讲解
* * * 2009年11月2日第四次课结束 * * 2009年10月30日第3次课结束 * 2009年11月4日第5次课结束 AC (Auxiliary Carry):半进位标志位。在进行加法(或减法)运算时,如果低半字节向高半字节有进位(或借位),则AC标志置1,否则AC标志置0。 AC标志用于校正BCD码加法或减法运算的结果。作为BCD码运算调整指令DA A判断的依据之一。 2.3.3 80C51的特殊功能寄存器 P (Parity):奇偶标志位。该标志位始终跟踪累加器A的内容的奇偶性,如果结果中A内有奇数个1,则标志P置1,否则置0。 OV (Overflow):溢出标志位。带符号数算术运算时,如果结果发生溢出,则OV标志置1,否则置0。 2.3.3 80C51的特殊功能寄存器 计算机中,带符号数通常是用补码表示的.对于单字节二进制补码,其所能表示数的范围是 -128 ~ +127,如果运算结果超出了这个数值范围,就称为溢出。 一般两个同号数相加或两个异号数相减,有可能发生溢出; 而两个同号数相减或两个异号数相加,则不会发生溢出。 2.3.3 80C51的特殊功能寄存器 当两个正数相加,若和超过+127时,其结果的符号由正变负,即得出负数,这时OV=l。 同理,两负数相加,结果应为负数,但因和数为-241<-l28,有溢出而使结果为正数,此时OV=1。 2.3.3 80C51的特殊功能寄存器 OV=1是否意味着发生了错误? 在乘法运算时,OV=1表示结果超过了255,即乘积分别在寄存器B和A中;反之表示乘积在A中。 在除法运算时,OV=1表示除数为0,不能进行除法,反之除数不为0,可以进行除法。 2.3.3 80C51的特殊功能寄存器 2)其他标志位定义 PSW的F0、RS1、RS0与上述标志位不同,是由用户用软件自行设定置位和复位的。 PSW.1位未定义,但用户可以将PSW.1定义为F1,如同F0一样,作为用户自定义的软件标志位。 2.3.3 80C51的特殊功能寄存器 RS1、RS0 (Register Bank Select Control bit):工作寄存器组指针,用以选择指令当前工作的寄存器组。用户用软件改变RS1和RS0的组合,从而指定当前选用的工作寄存器组。 RS1 RS0 寄存器组 片内RAM地址 0 0 组 0 00H~07H 0 1 组 1 08H~0FH 1 0 组 2 10H~17H 1 1 组 3 18H~1FH 2.3.3 80C51的特殊功能寄存器 MCS-51单片机在复位后,RS1=RS0=0,所以CPU自动选中组0作为当前工作寄存器级。根据需要,用户可以通过传送指令或位操作指令来改变RS1和RS0的状态,任选一组工作寄存器区。提高了程序中保护现场和恢复现场的速度。 2.3.3 80C51的特殊功能寄存器 5、堆栈指针SP 在微型机中,堆栈是在内存RAM中开辟的一个特定的存储区专门用来暂时存放数据或存放返回地址,并按照“后进先出”(LIFO)的原则进行操作。 2.3.3 80C51的特殊功能寄存器 MCS-1单片机的堆栈,是在片内RAM中开辟的一个专用区,通常指定内部数据存储器地址07H一7FH中的一部分连续存储区作为堆栈。 堆栈的一端是固定的,称为栈底; 另一端是浮动的,称为栈顶。 堆栈中的数据称为元素,最后进栈的 那个元素所在地址就是栈顶。 2.3.3 80C51的特殊功能寄存器 由于堆栈元素的存入和取出必须遵循LIFO的原则,因此堆栈的操作总是对栈顶进行的。 堆栈指针SP (Stack Pointer)是一个8位寄存器,用它存放栈顶的地址。 进栈时,SP自动加1,将数据压入用户所指定的地址单元; 出栈时,将SP所指示的地址单元中的数据弹出,然后SP自动减1。 SP总是指向栈顶。 2.3.3 80C51的特殊功能寄存器 系统复位后,SP初始化为07H,所以第一个压入堆栈的数据存放到08H单元,即堆栈区为从07H单元开始的一部分连续存储单元。 由于08H-1FH单元为工作寄存器组1-3,在程序设计中很可能要用到这些区,所以用户在编程时最好把SP的值改为1FH或更大值,以免堆栈区与要使用的工作寄存器区互相冲突。 2.3.3 80C51的特殊功能寄存器 SP的内容是可编程的,因而可将堆栈区定位到内部数据存储器的任意位置。堆栈的大小可用“深度”表示,用户在设定堆栈区时应该考虑到堆栈的深度,以便能满足子程序嵌套时的需要。 2.3.3 80C51的特殊功能寄存器 6、数据指针DPTR 数据指针DPTR (Data Pointer)是一个16位的地址寄存器,专门用来存放16位地址指
文档评论(0)