8051存储结构.docx
《8051存储结构.docx》由会员分享,可在线阅读,更多相关《8051存储结构.docx(6页珍藏版)》请在冰豆网上搜索。
8051存储结构
8051存储结构
8051存储结构:
1.CODE区
用来存放可执行代码。
被16位寻址,空间可达64K。
代码是只读的。
还可以存储查寻表。
通过数据指针DPTR或者程序计数器加上累加器提供的偏移量进行寻址。
把表头地址装入DPTR,把表中要寻址的元素的偏移量装入累加器中,就可以寻址表中元素。
2.DATA区
第二个是8051内128字节内部RAM,或者8052的钱128字节内部RAM。
这部分主要作为数据段。
访问DATA区用直接寻址方式,访问XDATA区用间接寻址。
通常把使用频繁的变量或者局部变量存储在DATA区,空间有限,需节省使用。
在数据段中也可以通过R0和R1采用间接寻址,R0、R1被作为数据区的指针,将要恢复或者改变字节的地址放入R0或R1中。
数据段中有两个小段,第一个子段包含四个寄存器组,每组包含8个寄存器,可子啊任何时刻通过修改PWS寄存器的RS0和RS1位来选择四组寄存器的任一组作为工作寄存器组,8051也可以默认任意一组喂工作寄存器组。
工作寄存器组的快速切换不仅使参数传递更加方便,而且可以进行快速任务转换。
另一个子段叫做位寻址段(BDATA)包括16个字节,共128位,每一位都可以单独寻址。
也可以进行字节寻址。
3.IDATA区。
8051系列的一些单片机如8052有附加的128字节内部RAM,位于从80H开始的地址空间中,被称为IDATA。
因为IDATA区的地址和SFRs的地址是重叠的,通过区分所访问的存储区来解决地址重叠问题,因为IDATA
4.
5.
6.中断优先级寄存器IP
用来设置每个中断的优先级,如果相应的位被置位,则中断的优先级为高。
此寄存器可位寻址。
IP寄存器可位寻址
--PT2PSPT1PX1PT0PX0
-保留
-保留
PT2定时器2中断优先级PS串行通信中断优先级
PT1定时器1中断优先级PX1外部中断1优先级
PT0定时器0中断优先级PX0外部中断0优先级
中断使能寄存器IE
通过设置中断使能寄存器IE的EA位,使能所有中断,每一个中断源独有单独的使能位,可通过软件设置IE中相应的使能位在任何时刻使能或者禁用中断。
中断使能寄存器IE可位寻址
EA-ET2ESET1EX1ET0EX0
EA使能标志位置位则所有中断使能复位则禁止所有中断
ET2定时器2中断使能ES串行通信中断使能
ET1定时器1中断使能EX1外部中断1使能
ET0定时器0中断使能EX0外部中断2使能
内置定时/计数器
标准的8051有两个定时/计数器,每个定时器有16位。
定时/计数器既可以作为定时器(对机器周期计数),也可以用来对相应的I/O口(T0,T1)上从高到低的跳变脉冲计数。
如果需要,当脉冲计数溢出时,可以产生一个中断。
TCON寄存器用来控制寄存器的工作启停和溢出标志位。
通过改变定时器运行位TR0和TR1来启动和停止定时器工作。
TCON还包括了定时器0和定时器1的溢出中断标志位。
中断标志位可以在任何时候置位和清除,因此可以通过软件产生和阻止定时器中断。
定时器控制寄存器TCON可位寻址
TF1TR1TF0TR0IE1IT1IE0IT0
TF1定时器1溢出中断标志。
响应中断后由处理器清零
TR1定时器1控制位,置位时定时器工作,复位时停止工作
TF0定时器0溢出标志位
TR0定时器0控制位
IE1外部中断1触发标志位,当检测到P3.3有从高到低得跳变电平时置位,处理器响应中断后,由硬件清除该位。
IT1外部中断触发方式控制位,置位时为跳变触发,复位时为低电平触发
IE0外部中断0触发标志位,当检测到P3.2有从高到低的跳变时置位,由处理器清零
IT0外部中断0触发控制位,置位时为跳变触发,复位时为低电平触发
定时器控制寄存器TMOD-不可位寻址
GATEC/TM1M0GATEC/TM1M0
定时器1定时器0
GATE当GATE置位时,定时器仅当TR=1并且INT=1时才开始工作,如果GATE=0,置位TR定时器开始工作
C/T定时器方式选择。
如果C/T=1,定时器以计数方式工作,C/T=0,以定时方式工作
M0模式选择高位M1模式选择高位
可通过C/T位的设置来选择定时器的时钟源。
当定时器用来对内部时钟脉冲计数时,可通过硬件或者软件来控制。
GATE=0为软件控制,置位TR定时器就开始工作,GATE=1为硬件控制,当TR=1并且INT=1时定时器才工作。
当INT脚给出低电平时,定时器将停止工作。
这在测量INT脚的脉冲宽度时十分有用,此时INT不做外部中断使用。
定时器工作方式0和方式1
定时器有四种工作方式。
方式0为13位定时/计数器方式,定时器溢出时置位TF0或TF1,并产生中断。
方式1将以16位定时/计数器工作,除此之外和方式0一样
定时器工作方式2
方式2为8位自动重装载工作方式。
定时器的低8位(TL0或TL1)用来计数,高8位(TH0或TH1)用来存放重装载数值。
当定时器溢出时,TH中的数值被装入TL中。
定时器0和定时器1在方式2是同样地。
定时器1常用此方法来产生波特率。
定时器工作方式3
方式3时,定时器0成为两个8位定时/计数器(TH0和TL0).TH0对应于TMOD中定时器0的控制位,而TL0占据了TMOD中定时器1的控制位。
这样定时器1将不能产生溢出中断,但可以用于不需要产生中断的场合,如作为波特率发生器或者作为定时计数器被软件查询,当系统需要用定时器1来产生波特率,而又同时需要两个定时/计数器时,这种方式十分有用,当定时器1设置为工作方式3时将停止工作。
内置UART
8051有一个全双工串行通讯接口。
由寄存器SCON来进行设置
串行控制寄存器SCON-可位寻址
SM0SM1SM2RENTB8RB8TIRI
SM0串行模式选择
SM1串行模式选择
SM2多机通讯允许位,当模式0时,此位应该位0,模式1时,当接收到停止位时,该位置位。
模式2和3时,当接收到的第9位数据为1时,将置位
REN串行接收允许位
TB8在模式2和3中,将被发送数据的第9位
RB8在模式0中该位不起作用,子模式1中,该位为接收数据的停止位,在模式2和3中,为接收数据的第9位
TI串行中断标志位,由软件清零
RI接收中断标志位,由软件清零
UART模式0
模式0时,UART作为1个8位的移位寄存器使用,波特率为fosc/12。
数据由RXD从低位开始收发。
TXD用来发送同步移位脉冲,因此,方式0不支持全双工。
这种方式可用来和像某些具有8位串行口的EEPROM之类的器件通讯。
当向SBUF写入字节时,开始发送数据。
数据发送完毕时,TI将置位。
置位REN时,将开始接收数据,当接收完8位数据时,RI将置位。
UART模式1
工作于模式1时,传输的是10位:
1位起始位,8位数据位,1个停止位。
这种方式可以和包括PC机在内的许多器件进行通讯。
这种方式的波特率是可调的。
而用来产生波特率的定时器的中断应该被禁止,PCON的SMOD位为1时,可使波特率翻倍。
TI和RI在发送和接收停止位的中间时刻被置位,这使软件可以响应中断并装入新的数据。
如果使用定时器1来产生波特率,则通过下公式计算TH1的装入值
TH1=256—(K*OscFreq)/(384*BaudRate)
K=1ifSMOD=0
K=2ifSMOD=1
要求重装值要小于256,非整数的重装值必须和下一个整数非常接近。
UART模式2
模式2的数据以11位方式发送:
1位起始位,8位数据位,第9位,1位停止位。
发送数据时,第9位为SCON中的TB8,接收数据的第9位保存在RB8中。
第9位一般用来多机通讯,仅在第9位为1时,单片机才接收数据。
多机通讯用SCON的SM2来控制。
当SM2为1时,仅当数据的第9位为1时才引发通讯中断,当SM2为0时,只要接收完11位就产生一次中断。
第9位可以在多机通讯中避免不必要的中断,在传送地址和命令时,第9位置位,串行总线上的所有处理器都产生一个中断,处理器将决定是否继续接收下面的数据。
如果继续接收数据就清零SM2,否则SM2置位,以后的数据流不会使它产生中断。
SMOD=0时,模式2的波特率为1/64OscSMOD=1时波特率为1/32Osc。
模式2和模式3的差别在于可变的波特率