51寄存器

来源:互联网 发布:java游戏安卓版 编辑:程序博客网 时间:2024/04/28 18:17



一 : 定时器 / 计数器方式选择 : TMOD 地址 (89H) 不可位寻址
D7 D6 D5 D4 D3 D2 D1 D0
GATE C/T M1 M0 GATE C/T M1 M0
GATE : 门控制位 GATE="0" 时于外部中断无关 GATE="1" 时无外部中断才允许启动。即( INT0/1 = 1 时)
C/T : 定时、计数 方式选择位。 C/T=0 时为定时方式 C/T=1 时计数方式
M1M0 : M0M1=00 时为方式 0 , M1M0=10 时为方式 1 , M1M0=11 时为方式 3

二 : 中断标志与中断控制寄存器 : TCON 地址( 88H )可位寻址
D7 D6 D5 D4 D3 D2 D1 D0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TR1 、 TR0 是 T1 、 T0 的启动控制位,置 1 起动。置 0 停止定时 / 计数器。
TF1 、 TF0 是 T1 、 T0 的溢出标志位,溢出时由硬件置 1 , CPU 响应中断后由硬件清0 软件查询时由软件清 0
IT0 、 IT1 为外部中断 0 、 1 的触发控制位 IT0/1 = 0 时为电平触发= 1 时下降沿触发
IE0 、 IE1 为外部中断 0 、 1 请求标志,当有中断信号时由硬件置 1 ,完成中断时由硬件清 0

三 : 中断允许控制寄存器 : IE 地址( A8H )可位寻址
D7 D6 D5 D4 D3 D2 D1 D0
EA ― ― ES ET1 EX1 ET0 EX0
EA : 总控位, EA="0" 时关所有中断。 EA="1" 时所有中断请求均被开放。
ES : 串行口, ES="1" 时开, ES="0" 时关串行中断
ET1 、 ET0 定时计数 = 1 时开 = 0 时关 EX1 、 EX0 外部中断= 1 时开= 0 时关

四 : 中断优先级控制寄存器 IP 地址 (B8H) 可位寻址
D7 D6 D5 D4 D3 D2 D1 D0
― ― ― PS PT1 PX1 PT0 PX0
PS: 串口 PT1/0 定时 / 计数器 PX1/0 外部中断 = 1 高优先 = 0 低优先

五 : 串行控制寄存器 SCON 地址 (98H) 可位寻址
D7 D6 D5 D4 D3 D2 D1 D0
SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0/1 是串行工作方式选择位,共四种工作方式见表
SM0 SM1 工作方式 说明 波特率
0 0 方式 0 同步移位寄存器 Fosc/12
0 1 方式 1 10 位异步收发 由定时器控制
1 0 方式 2 11 位异步收发 Fosc/32/64
1 1 方式 3 11 位异步收发 由定时器控制
SM2 : 是多机通信控制位,主要用于 2 和 3 。仅用于接收。
对于方式 2 和 3:若 SM2=1 ,允许多机通信,只有当接收到第 9 位数( RB8 )为 1 时,才接收前 8 位数送入 SBUF ,并向 RI 位产生中断请求,否则前 8 位数丢弃。SM2=0 时,无论 RB8 是 0/1 都将前 8 位数装入 SBUF 中并产生中断请求。在方式 0 进不用 SM2 时必须设为 0 。在方式 1 时,若 SM2=1 时则只有接收到有效停止位时 RI 才置 1 。 REN 允许接收位, REN = 1 允许接收,否则不允许。
TB8: 为发送的第 9 位数(在方式 2 、 3 时),可用作校验位,在多机通信中,用 TB8 的状态表示主机发送的是地址还是数据。 TB8=1 时表示地址。= 0 时表示数据。
RB8: 是接收数据第 9 位(方式 2 、 3 )还代表接收数据的特征,可能是校验或地址 / 数据标志
TI: 发关中断标志位 RI: 接收中断标志位。 由软件清 0 。串行接收必须满足 REN="1",RI=0.
六:电源控制寄存器 PCON 地址( 87H ) SMOD =1 时波特率提高 1 倍, MOV PCON, #80H中断控制寄存器TCON:

TF1TR1TF0TR0IE1IT1IE0IT0

TF:定时器/计数器溢出标志位(F:FULL)

TR:定时器/计数器运行标志位(R:RUN)

IE:外部中断请求标志位

IT:外部中断触发方式标志位

中断允许寄存器IE:

EAESET1EX1ET0EX0

EA:中断允许标志位

ES:传星口中断允许标志位

ET:定时器/计数器溢出允许标志位

EX:外部中断允许标志位

定时器/计数器工作方式寄存器TMOD

GATEC/TM1M0GATEC/TM1M0

GATE:定时器/计数器工作开关

C/T:计数器/定时器控制位

M1 M0:定时器/计数器工作方式(00、01、10、11四种)

0 013位定时器/计数器

0 1 16位定时器/计数器

1 0 具有自动重装初值的8位定时器/计数器

1 1方式3仅适用于T0,分为28位计数器

不论哪种工作方式,机器周期都是晶振频率除以12;

16位定时器的最大值是65536;

13位定时器的最大值是8192;

TH=(初值/256);

TL=(初值%256);

TCON的清零需要程序员在程序中清零,即TF0=0;

中断服务程序写法:

void 函数名(void)interrupt n using n

Interrupt n 中n有0-5共六种:

外部中断0、定时器0、外部中断1、定时器1、串行口、定时器2

Using n中n有0-3共四组寄存器。

IP 中断优先级控制寄存器 在51中IP.0--IP.4依次控制INT0、T0、INT1、T1、UART中断的优先级,高三位不用

IE 中断使能控制器 IE.7是所有中断的总开关EA,IE.0--IE.4依次控制INT0、T0、INT1、T1、UART中断功能的开放或关断

P0、P1、P2、P3 这四个寄存器用于读写51单片机的四个I/O端口

SBUF 串行数据缓冲器 将数据写入SBUF,单片机就自动将数据从UART口发送出去

SCON 串行口功能控制器 最高两位SM0、SM1控制串行口工作模式;第5位SM2通常用于多机通信中区分地址帧和数据帧;第4位REN是控制串口接收数据的使能位;第3位TB8 和第2位RB8分别是在串口的相关工作模式下要发送的和接收到的第9位数据;次低位TI和最低位RI分别标识一个发送或接收过程已结束,这两个标志位都会 触发串口中断

TH0、TL0 定时器T0的计数单元的高8位和低8位

TH1、TL1 定时器T1的计数单元的高8位和低8位

TMOD 定时/计数器工作模式控制器 低4位和高4位的内容对应相同,分别控制T0和T1的工作模式,次低位和最低位控制对应定时/计数器的工作模式;最高位控制定时/计数器的计数是否由外中断口线参与控制;次高位控制对应的定时器/计数器工作在定时方式还是对相应口线的脉冲进行计数的方式

TCON 定时/计数器控制字 TCON.0和TCON.2分别是外中断INT0和INT1的触发方式选择位IT0和IT1;TCON.1和TCON.3分别是外中断INT0和INT1 的中断触发标志位IE0和IE1;TCON.4和TCON.6分别是T0和T1的计数开关TR0和TR1;TCON.5和TCON.7分别是T0和T1的 中断触发标志位TF0和TF1

PCON 电源模式控制器 最高位SMOD用于串行口通信的波特率加倍,低4位用于选择不同的低功耗模式,比如空闲模式、掉电模式、时钟停止模式等,但具体每一位的用法没有找到相关资料下面举例说明波特率选择过程:假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。则
TH1=256-62500/波特率
根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。列计数器重载值,通信误差如下表:
波特率计数器重载值TH1波特率误差12002040.16%24002300.16%48002430.16%96002496.99%192002538.51%因此,在通信中,最好选用波特率为1200,2400,4800中的一个。

http://apps.hi.baidu.com/share/detail/32709213