一 : 定时器 / 计数器方式选择 : 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:
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TF:定时器/计数器溢出标志位(F:FULL)
TR:定时器/计数器运行标志位(R:RUN)
IE:外部中断请求标志位
IT:外部中断触发方式标志位
中断允许寄存器IE:
EA — — ES ET1 EX1 ET0 EX0
EA:中断允许标志位
ES:传星口中断允许标志位
ET:定时器/计数器溢出允许标志位
EX:外部中断允许标志位
定时器/计数器工作方式寄存器TMOD
GATE C/T M1 M0 GATE C/T M1 M0
GATE:定时器/计数器工作开关
C/T:计数器/定时器控制位
M1 M0:定时器/计数器工作方式(00、01、10、11四种)
0 0 13位定时器/计数器
0 1 16位定时器/计数器
1 0 具有自动重装初值的8位定时器/计数器
1 1 方式3仅适用于T0,分为2个8位计数器
不论哪种工作方式,机器周期都是晶振频率除以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。列计数器重载值,通信误差如下表:
因此,在通信中,最好选用波特率为1200,2400,4800中的一个。
阅读(3173) | 评论(0) | 转发(0) |