找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3787|回复: 1
收起左侧

单片机重要寄存器

[复制链接]
ID:313368 发表于 2018-7-16 21:03 | 显示全部楼层 |阅读模式
一、中断:
52单片机一共有6个中断源:
INTO0--外部中断0,由P3.2端口线引入,低电平或下降沿引起。
INTO1--外部中断1,有P3.3端口线引入,低电平或下降沿引起。
T0--定时器/计数器0中断,由T0计数器计满回零引起。
T1--定时器/计数器1中断,由T1计数器计满回零引起。
T2--定时器/计数器2中断,由T2计数器计满回零引起。
TI/RI--串口中断,串行端口完成一帧字符发送/接收后引起。
52单片机的中断级别

单片机在使用中断功能时,通常需要设置两个与中断有关的寄存器:
①中断允许寄存器IE
②中断优先级寄存器IP
一,中断允许寄存器 IE





功能:
EA-- 全局中断允许位
EA=1 打开全局中断控制,在此条件下,有各个中断控制位确定相应中断的打开或关闭
EA=0 关闭全部中断
ET2  定时器/计数器2中断允许位
ET2=1   打开T2中断
ET2=0 关闭T2中断
ES 串行中断允许位
ET1 定时器1中断允许位
EX1 外部中断1允许位
ET0 定时器/计数器0中断允许位
EX0 外部中断允许位
二、定时器
单片机在使用定时器/计数器功能时,通常需要设置两个与定时器有关的寄存器:
①工作方式寄存器TMOD
②控制计数器TCON
一,工作方式寄存器TMOD
GATE 门控位
GATE=0 定时器/计数器启动与停止仅受TCON寄存器中TRX(X=0,1)来控制
GATE=1 定时器/计数器启动与停止由TCON寄存器中TRX(X=0,1)和外部中断引脚(INT0或INT1)上的电平状态来共同控制
C/T 定时器模式和计数器模式选择位(1为计数器模式,0为定时器模式)
M1M0 工作方式选择位
每个定时器有4个工作方式,他们由M1M0设定
二,定时器/计数器控制寄存器TCON
IF1   定时器1溢出标志位
TR1  定时器1运行控制位
由软件清零关闭定时器1,当GATE=1,且INT1为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1启动定时器1
IE1  外部中断1请求标志
IT0=1时为电平触发方式,每个机器周期的S5P2采样INT1引脚,若INT1脚为低电平。则置1,否则IE1清0.
IT1=0时,INT1为跳变沿触发,当第一个机器周期采样到INT1为低电平时,则IE1置1,便是外部中断1正向CPU申请中断,当CPU响应中断,转向中断服务程序时,该位由硬件清0.
IT1   外部中断1触发方式选择位
IT1=0  为电平触发模式,引脚INT1上低电平有效
IT1=1 为跳变沿触发模式,引脚INT1上下降沿有效
IE0 同上
IT0 同上
计算定时器的初值问题
52单片机内部有12倍的分频,假设采用的是12MHZ的晶振,那么12个时钟周期为一个机器周期,那么此时机器周期就是1us。以定时器1,工作方式1为例。16位的计数器
溢出一次需要计数2^16-1个数=65536。约为65.5ms
如果要定时50ms的话,(65536-50000)/256 转载到THX
     (65536-50000)/256 转载到TLX
公式:
THX=(65536-50000)/256
LTX =(65536-50000)/256
定时器的初始化过程如下
①对TMOD赋值,以确定T0和T1的工作方式
②计算初值,并将初值写入TH0,TL0,或TH1,TL1
③中断方式,则对IE赋值,开放中断
④使TR0或TR1置位,启动定时器/计数器定时或计数
程序实例
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led1=P1^0;
uchar num;
void main()
{
TMOD=0X01; //设置定时器工作方式1(M1M0为01)
TH0(65536-45872)/256; //装初值11.0592M晶振时为50ms数为45872
HL0=(65536-45872)%6;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
while(1); //程序停止在这等待中断发生
}
void T0_time() interrupt 1
{
TH0(65536-45872)/256; //装初值11.0592M晶振时为50ms数为45872
HL0=(65536-45872)%6;
num++;
if(num==20)
{
num=0;
led1=~led1;
}
}
串行口控制寄存器SCON
串行口控制寄存器SCON如表12.2所示。
12.2  串行口控制寄存器SCON
SCON
D7
D6
D5
D4
D3
D2
D1
D0
SM0/FE
SM1
SM2
REN
TB8
RB8
TI
RI
1)SM0/FE:当PCON寄存器中的SMOD0 = 1时,该位用于帧错误检测,当检测到无效停止位时,由硬件将该位置"1",该位必须由软件清零。当SMOD0 = 0时,该位和SM1一起用来设置串行口通信的方式。
2)SM1:SM1和SM0一起用来设置串行口通信的方式,如表12.3所示。
12.3  串行口工作方式
SM0
SM1
工作方式
功能说明
波特率
0
0
方式0
同步移位寄存器方式
fosc  / 12
0
1
方式1
8位数据,10位异
步收发,波特率可变
(2SMOD / 32) ×
定时器1溢出率
1
0
方式2
9位数据,11位
异步收发
(2SMOD / 64) × fosc
1
1
方式3
9位数据,11位异步
收发,波特率可变
(2SMOD / 32) ×
定时器1溢出率
关于串行口的4种工作方式和波特率的计算方法我们在后面详细说明。
3)SM2:允许方式2或方式3多机通信位。如果SM2 = 1,REN = 1,则从机只有接收到RB8位为1时才将中断请求位RI置1,并向系统申请中断。如果SM2 = 0,则无论RB8收到什么数据都会将RI位置1,请求中断。通过设置SM2的值,可以区分主机和从机,实现多机通信。在方式0时,SM2必须为0,在方式1时,只有收到有效停止位,就将RI置1。
4)REN:允许串行口接收位。当REN = 1时,允许串行口接收数据;当REN = 0时,禁止串行口接收数据。
5)TB8:在方式2和方式3,TB8作为发送数据的第9位,其值由软件修改。
6)RB8:在方式2和方式3,RB8保存接收到的第9位数据。在方式0,不用RB8。在方式1,如果SM2 = 0,则RB8是接收到的停止位。
7)TI:发送完成中断标志位。当1帧数据发送完成时,由硬件将该位置位,请求中断,响应中断后,用软件清零。
8)RI:接收完成标志位。当接收完1帧数据时,由硬件将该位置位,请求中断,响应中断后,用软件清零。


详细信息下载word文档

单片机寄存器.docx

59.47 KB, 下载次数: 8, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:313368 发表于 2018-7-16 21:04 | 显示全部楼层
文档很详细,网页版有些不完整
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表