学习情境1信号灯控制系统的设计与制作 联系客服

发布时间 : 星期日 文章学习情境1信号灯控制系统的设计与制作更新完毕开始阅读786b8230eefdc8d376ee3251

《单片机应用技术》

定。

通用寄存器为CPU提供了就近数据存储的便利,有利于提高单片机的运算速度。此外,使用通用寄存器还能提高程序编制的灵活性,因此在单片机的应用编程中应充分利用这些寄存器,以简化程序设计,提高程序运行速度。

2)位寻址区 内部RAM的20H~2FH单元,既可作为一般RAM单元使用,进行字节操作,也可以对单元中每一位进行位操作,因此把该区称之为位寻址区。位寻址区共有16个RAM单元,计128位,位地址为00H~7FH。MCS-51具有布尔处理机功能,这个位寻址区可以构成布尔处理机的存储空间。这种位寻址能力是MCS-51的一个重要特点。表1.3为位寻址区的位地址表。

表1.3 片内RAM位寻址区的位地址

单元地址 MSB 位地址 LSB 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 27H 26H 25H 24H 23H 22H 21H 20H

3)用户RAM区

在内部RAM低128单元中,通用寄存器占去32个单元,位寻址区占去16个单元,剩下80个单元,这就是供用户使用的一般RAM区,其单元地址为30H~7FH。

对用户RAM区的使用没有任何规定或限制。但在一般应用中常把堆栈开辟在此区中。

2.内部数据存储器高128单元

内部RAM的高128单元是供给专用寄存器使用的,其单元地址为80H~FFH。因这些寄存器的功能已作专门规定,故而称之为专用寄存器可称为特殊功能寄存器。 1)专用寄存器(SFR)简介

8051共有21个专用寄存器,现把其中部分寄存器简单介绍如下:

(1) 程序计数器(PC——Program Counter)

在实训中,我们已经知道PC是一个16位的计数器,它的作用是控制程序的执行顺序。其内容为将要执行指令的地址,寻址范围达64KB。PC有自动加1功能,从而实现程序的顺序执行。PC没有地址,是不可寻址的。因此用户无法对它进行读写。但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。因地址不在SFR之内,一般不计作专用寄

9

7F 77 6F 67 5F 57 4F 47 3F 37 2F 27 1F 17 0F 07 7E 76 6E 66 5E 56 4E 46 3E 36 2E 26 1E 16 0E 06 7D 75 6D 65 5D 55 4D 45 3D 35 2D 25 1D 15 0D 05 7C 74 6C 64 5C 54 4C 44 3C 34 2C 24 1C 14 0C 04 7B 73 6B 63 5B 53 4B 43 3B 33 2B 23 1B 13 0B 03 7A 72 6A 62 5A 52 4A 42 3A 32 2A 22 1A 12 0A 02 79 71 69 61 59 51 49 41 39 31 29 21 19 11 09 01 78 70 68 60 58 50 48 40 38 30 28 20 18 10 08 00 《单片机应用技术》

存器。

(2) 累加器(ACC——Accumulator)

累加器为8位寄存器,是最常用的专用寄存器,功能较多,地位重要。它既可用于存放操作数,也可用来存放运算的中间结果。MCS-51单片机中大部分单操作数指令的操作数就取自累加器,许多双操作数指令中的一个操作数也取自累加器。

(3) B寄存器

B寄存器是一个8位寄存器,主要用于乘除运算。乘法运算时,B是乘数。乘法操作后,乘积的高8位存于B中,除法运算时,B是除数。除法操作后,余数存于B中。此外,B寄存器也可作为一般数据寄存器使用。

(4) 程序状态字(PSW——Program Status Word)

程序状态字是一个8位寄存器,用于存程序运行中的各种状态信息。其中有些位状态是根据程序执行结果,由硬件自动设置的,而有些位状态则使用软件方法设定。PSW的位状态可以用专门指令进行测试,也可以用指令读出。一些条件转移指令将根据PSW有些位的状态,进行程序转移。PSW的各位定义如下:

PSW位地址 字节地址D0H

D7H D6H D5H F0 D4H RS1 D3H RS0 D2H OV D1H F1 D0H P CY AC

除PSW.1位未用外,对其余各位的定义及使用介绍如下:

CY(PSW.7)——进位标志位。CY是PWS中最常用的标志位,其功能有二:一是存放算术运算的进位标志,在进行加或减运算时,如果操作结果最高位有进位或借位时,CY由硬件置“1”,否则清“0”;二是在位操作中,作累加位使用。位传送、位与位或等位操作,操作位之一固定是进位标志位。

AC(PSW.6)——辅助进位标志位。在进行加减运算中,当有低4位向高4位进位或借位时,AC由硬件置“1”,否则AC位被清“0”。在BCD码调整中也要用到AC位状态。 F0(PSW.5)——用户标志位。这是一个供用户定义的标志位,需要利用软件方法置位或复位,用以控制程序的转向。

RS1和RS0(PSW.4,PSW.3)——寄存器组选择位。用于选择CPU当前工作的通用寄存器组。通用寄存器共有四组,其对应关系为:

片内RAM地址 RS1 RS0 寄存器组 第0组 0 0 00H~07H 0 1 1 0 第1组 第2组 08H~0FH 10H~17H 第3组 1 1 18H~1FH 这两个选择位的状态是由软件设置的,被选中的寄存器组即为当前通用寄存器组。但当单片机上电或复位后,RS1 RS0=00。

OV(PSW.2)——溢出标志位。在带符号数加减运算中,OV=1表示加减运算超出了累加器A所能表示的符号数有效范围(-128 ~ +127),即产生了溢出,因此运算结果是错误;否则,OV=0表示运算正确,即无溢出产生。

在乘法运算中,OV=1表示乘积超过255,即乘积分别在B与A中;否则,OV=0,表示乘积只在A中。

在除法运算中,OV=1表示除数为0,除法不能进行;否则,OV=0,除数不为0,除法可正常进行。

10

《单片机应用技术》

P(PSW.0)——奇偶标志位。表明累加器A内容的奇偶性,如果A中有奇数个“1”,则P置“1”,否则置“0”。凡是改变累加器A中内容的指令均会影响P标志位。 此标志位对串行通信中的数据传输有重要的意义。在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性。

(5) 数据指针(DPTR) 数据指针为16位寄存器,它是MCS-51中一个16位寄存器。编程时,DPTR既可以按16位寄存器使用,也可以按两个8位寄存器分开使用,即:

DPH DPTR高位字节 DPL DPTR低位字节

DPTR通常在访问外部数据存储器时作地址指针使用,由于外部数据存储器的寻址范围为64KB,故把DPTR设计为16位。

(6)堆栈指针(SP----Stack Pointer)

堆栈是一个特殊的存储区,用来暂存数据和地址,它是按“先进后出”的原则存取数据的。堆栈共有两种操作:进栈和出栈。

MCS-51单片机由于堆栈设在内部RAM中, 因此SP是一个8位寄存器. 系统复位后,SP的内容为07H, 使得堆栈实际上从08H单元开始。但08H~1FH单元分别属于工作寄存器1~3区, 如程序中要用到这些区,则最好把SP值改为1FH或更大的值.一般地,堆栈最好在内部RAM的30H~7FH单元中开辟. SP的内容一经确定,堆栈的位置也就跟着确定下来,由于SP可初始化为不同值,因此堆栈位置是浮动的。

此处只集中讲述了六个专用寄存器,其余的专用寄存器(如TCON、TMOD、IE、IP、SCON、PCON、SBUF等)将在以后章节中陆续介绍。

2)专用寄存器中的字节寻址和位地址

MCS-51系列单片机有21个可寻址的专用寄存器,其中有11个专用寄存器是可以位寻址的。下面把各寄存器的字节地址及位地址一并列于表1.4。

对专用寄存器的字节寻址问题作如下几点说明: (1) 21个可字节寻址的专用寄存器是不连续地分散在内部RAM高128单元之中,尽管还余有许多空闲地址,但用户并不能使用。

(2) 程序计数器PC不占据RAM单元,它在物理上是独立的,因此是不可寻址的寄存器。 (3) 对专用寄存器只能使用直接寻址方式,书写时既可使用寄存器符号,也可使用寄存器单元地址。

表中凡字节地址不带括号的寄存器都是可进行位寻址的寄存器,而带括号的是不可位寻址的寄存器,如表所列。全部专用寄存器可寻址的位共83位,这些位都具有专门的定义和用途。这样加上位寻址区的128位,在MCS-51的内部RAM中共有128+83=211个可寻址位。

1.1.2.5 MCS-51内部程序存储器

MCS-51的程序存储器用于存放编好的程序和表格常数。8051片内有4KB的ROM, 8751片内有4KB的EPROM, 8031 片内无程序存储器。 MCS-51 的片外最多能扩展64K字节程序存储器,片内外的ROM 是统一编址的。 如EA端保持高电平, 8051 的程序计数器PC在0000H~0FFFH地址范围内 (即前4KB地址) 是执行片内ROM中的程序, 当PC在1000H~FFFFH地址范围时, 自动执行片外程序存储器中的程序,当EA保持低电平时,只能寻址外部程序存储器, 片外存储器可以从0000H开始编址.

11

《单片机应用技术》

表1.4 MCS-51 专用寄存器地址表

SFR MSB 位地址/位定义 LSB B ACC PSW IP P3 IE P2 SBUF SCON P1 TH1 TH0 TL1 TL0 TMOD TCON F7 E7 D7 CY BF / B7 P3.7 AF EA A7 P2.7 9F SM0 97 P1.7 GAT 8F F6 E6 D6 AC BE / B6 P3.6 AE / A6 P2.6 9E SM1 96 P1.6 C/T 8E TR1 / 86 P0.6 F5 E5 D5 F0 BD / B5 P3.5 AD / A5 P2.5 9D SM2 95 P1.5 M1 8D TF0 / 85 P0.5 F4 E4 D4 RS1 BC PS B4 P3.4 AC ES A4 P2.4 9C REN 94 P1.4 M0 8C TR0 / 84 P0.4 F3 D3 RS0 BB PT1 B3 P3.3 AB ET1 A3 P2.3 9B TB8 93 P1.3 GAT 8B IE1 / 83 P0.3 F2 D2 OV BA PX1 B2 P3.2 AA EX1 A2 P2.2 9A RB8 92 P1.2 C/T 8A IT1 / 82 P0.2 F1 F0 E1 D1 F1 B9 PT0 B1 P3.1 A9 ET0 A1 P2.1 99 TI 91 P1.1 M1 89 IE0 / 81 P0.1 E0 D0 P B8 PX0 B0 P3.0 A8 EX0 A0 P2.0 98 RI 90 P1.0 M0 88 IT0 / 80 P0.0 90H (8DH) (8CH) (8BH) (8AH) (89H) 88H (87H) (83H) (82H) (81H) 80H (99H) 98H A0H A8H B0H B8H E3 E2 字节地址 F0H E0H D0H TF1 PCON SMO DPH DPL SP P0 87 P0.7

MCS-51的程序存储器中有些单元具有特殊功能,使用时应予以注意。

其中一组特殊单元是0000H~0002H。系统复位后,(PC)=0000H,单片机从0000H单元开始取指令执行程序。如果程序不从0000H单元开始,应在这三个单元中存放一条无条件转移指令,以便直接转去执行指定的程序。

还有一组特殊单元是0003H~002AH。共40个单元,这40个单元被均匀地分为五段,作为五个中断源的中断地址区。其中:

12