ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

51单片机特殊功能寄存器

2022-07-19 05:00:06  阅读:192  来源: 互联网

标签:定时器 置位 引脚 中断 51 串行口 T2EX 单片机 寄存器


1 stc89c52 定时计数器

定时器1.2相关寄存器

TF1(TF0):定时器/计数器T1(T0)溢出标志。响应中断后,由硬件清零(也可由程序查询清零)。

TR1(TR0): 定时器T1(T0)的运行控制位。由软件置位和清零。置位后计数条件:GATE=0或者GATE=1,INT1脚为高电平。

IT1(IT0): 外部中断1触发方式控制位。IT1=0,外部中断INT1引脚为低电平触发。IT1=1,下降沿触发。

IE1(IE0): 外部中断1请求源标志。当引脚INT1低电平或者下降沿,置位IE1. 响应中断后,由硬件清零。

GATE:为0不影响。置1时,只有INT引脚为高时,TR才能有效。(可以测量INT脚高电平时间)

C/T: 清零为定时器(内部时钟输入),置1为计数器(从T引脚输入)。

M1、M0: 模式选择。00(13位)、01(16位)、10(8位自动重装载)、11(定时器0作为双8位)

#include <REGX52.H>

typedef unsigned char BYTE;
typedef unsigned int WORD;

#define FOSC 11059200L  //晶振频率
#define TIMS (65536-FOSC/12*0.001) // 16位定时器,12T模式,1毫秒(0.001秒)中断一次

WORD count; //计数变量,对1ms计数1000次,即1s执行一次代码

void tm0_isr() interrupt 1
{
	TL0=TIMS;  //16位赋值给8位,自动取低8位
	TH0=TIMS>>8;
	if(count--==0)
	{
		count=1000;
		//执行代码
	}
}

void main()
{
	TMOD &= 0xF0;		//setp1:设置定时器模式1,16位模式
	TMOD |= 0x01;		//
	TF0 = 0;		//清除TF0标志
	TL0=TIMS;       //setp2:设置定时器初始值
	TH0=TIMS>>8;
	ET0=1;      //setp3:打开中断
	EA=1;
	count=0;
	TR0=1;  //setp4:最后才启动定时器,以免启动早,进入中断
	while(1);
}

定时器2相关寄存器表:

TF2:定时器2溢出标志,必须由软件清除。定时器2用作串口时(RCLK或TCLK=1),TF2将不会置位。

TR2: 定时器2启动/停止控制位,置1时启动定时器。

C/T2: 0=内部定时器(12T或者6T),1=外部事件计数器(T2引脚下降沿触发)

EXEN2:定时器2外部使能标志。置位时且定时器2未作为串行口时钟时,允许T2EX的负跳变产生捕获或重装。

EXF2:定时器2外部标志。当EXEN2=1且T2EX的负跳变产生捕获或者重装时,EXF2置位。必须软件清零。递增递减模式(DCEN=1)中,EXF2不会引起中断。

RCLK:接收时钟标志。置位后,定时器2作为串行口模式1和3的接收时钟。RCLK=0,串行口用定时器1。

TCLK:发送时钟标志。置位后,定时器2作为串行口模式1和3的发送时钟。TCLK=0,串行口用定时器1。

CP/RL2: 捕获/重装标志。置位且EXEN2=1时,T2EX的负跳变产生捕获。清零且EXEN2=0时,定时器溢出或者T2EX的负跳变都可使定时器自动重装。定时器2用作串行口时,此位无效,溢出自动重装。

T2OE:定时器2输出使能位

DECN:向下计数使能位。为0时,默认向上计数。为1时,T2EX引脚确定递增或者递减计数。

定时器2的捕获模式:

定时器2作为16位定时器或者计数器,溢出置位TF2。该模式中,无重新装载值。

当EXEN2=1时,T2EX的负跳变,将TL2、TH2的值捕获到RCAP2L、RCAP2H中,并且置位EXF2。

TF2、EXF2中断地址相同,中断程序中查询。

定时器2的自动重装模式(递增、递减计数器)

DCEN=0,自动重装模式:16位向上计数,溢出或者负跳变(EXEN2使能)时16位重新装载。

DCEN=1,递增递减模式:T2EX=1时,递增计数,溢出置位TF2,且把RCAP2值重新装载。

​ T2EX=0时,递减计数,当计数到等于RCAP时,中断,重装值为0XFFFF。

2 中断系统

中断允许位

EA: 总中断允许控制位。

ET2、ET1、ET0: 定时/计数器T2、T1、T0中断允许位。

ES: 串行口1中断允许位。

EX0、EX1、EX2、EX3 : 外部中断0、1、2、3中断允许位。

中断请求标志位

TF0、TF1、TF2、EXF2 :定时/计数器T0、T1、T2溢出标志位,定时器2外部标志位。

IE0、IE1、IE2、IE3:外部中断中断请求标志位。

RI、TI 串行口中断标志位。

外部中断源类型选择位

IT0、IT1、IT2、IT3 :为0,引脚低电平触发外部中断,为1,下降沿触发。

中断优先级(只设置IP,2级)

PX3H,PX3、PX2H,PX2、PX1H,PX1、PX0H,PX0: 外部中断。00-01-10-11对应优先级0-1-2-3

PT2H,PT2、PT1H,PT1、PT0H,PT0 :定时器。

PSH,PS : 串口1.

3 串行口通信

SM0 SM1(SMOD0=0时): 串行口工作方式,0 0 方式0,移位寄存器。0 1 方式1,8位UART,波特率可变。1 0 方式2,9位UART。1 1 方式3,9位,波特率可变. (SMOD0=1时,SM0用于帧错误检测,无效停止位时置位)

SM2:多机通信允许控制位。方式2、3时,如果SM2=1,REN=1,只有接收到RB8为1(地址帧)时,RI才为一。

REN: 允许、禁止串行接收控制位。为1,允许接收。为0,禁止接收。

TB8、RB8:方式2、3中是发送或接收到的第9位。

TI、RI:发送(接收)中断请求标志位。必须用软件复位。中断入口是 一个,中断处理程序中判断。

SMOD:置位时,方式1、2、3波特率加倍。

SMOD0:帧错误检测有效控制位。置位时,SM0用于帧错误检测,无效停止位时置位。

SADEN SADDR: 从机地址掩膜寄存器,从机地址寄存器。

标签:定时器,置位,引脚,中断,51,串行口,T2EX,单片机,寄存器
来源: https://www.cnblogs.com/sunwenping/p/16492630.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有