51单片机定时器、串口、中断

发布时间:2024-08-22  

MCS-51功能单元

一、定时器&计数器

  1. 数量:两个可编程的16位的定时器/计数器T0和T1;都是16位加法计数结构;分为高8位和低8位;TH0、TL0,TH1、TL1;
    定时器/计数器T0、T1是80C51的中断源之一,当数据寄存器溢出,则向CPU申请中断。数据寄存器的复位状态为0。为使计数值或定时值满足自己的要求,需预先将数据寄存器赋值,称为初值设定,中断中也要重新设定初值。

  2. 定时器和计数器本质:都是计数器,对下降沿进行计数,计数达到溢出后置为标志位或者进入中断;

  3. 两者的区别:

    定时器是对内部的机械周期脉冲进行计数,每个脉冲都是一个机械周期;定时时间=机器周期*(2^L-初值) (L=13,16,8)

    计数器则是通过外部IO口进行脉冲计数,一个脉冲加一个数;对应IO口:T0-P3.4,T1-P3.5;

    计数长度:计数长度=(2^L-初值) (L=13,16,8)

    两者的模式切换通过TMOD控制

  4. TMOD结构图:

在这里插入图片描述

  1. TMOD详解

    GATE:门控位

    GATE =1,由中断引脚INT0(P3.2)、INT1(P3.3)和TCON中的位TR0、TR1共同控制来启动定时器/计数器

    GATE =0,由TR0和TR1置位来启动定时器/计数器**(一般为0)**

    C/!T:模式选择位:

    1时,计数器模式;

    0时,定时器模式;

    M0 & M1共同控制工作方式:

在这里插入图片描述

项目开发一般用01,考试大概率考00;

  1. 启动停止与中断控制寄存器TCON

在这里插入图片描述

TFx:定时器或者计数器溢出时置位1,请求中断,中断程序进入后自动清零;

TRx:定时器启动控制位,当其等于1时定时器/计数器启动;

  1. 中断允许控制寄存器:IE
    在这里插入图片描述

    ETx:定时器/计数器的中断允许位
    EA:CPU总中断的允许位

  2. 定时器/计数器使用:(重点)

    工作方式的设置:

    伪代码:

    //设置定时器0工作在16位模式//C语言
    	TMOD=0x01;				//定时器//汇编
    	MOV		TMOD,	#01H;	

    计数初值的计算+装载:

    伪代码:

    //机械周期1us,设置500us中断一次为FE0C//C语言
    	TH0=0xFE;
        TL0=0x0C;//汇编
    	MOV 	TH0,	#0FEH	;
        MOV		TL0,	#0cH	;

    中断允许位的设置:
    伪代码:

    //C 	
    	EA=1;
    	ET0=1;//assembly
    	SETB	EA		;turn on all interrupt
        SETB	ET0		;turn on 0 interrupt

    开启定时器:
    伪代码:

    //c
    	TR0=1;//assembly
    	SETB 	TR0		;turn on
            
    	CLR 	TR0		;turn off !
  3. 使用实例:

    定时器使用方式(中断方式):

    ORG		0000H;
    		AJMP	MAIN;
    ORG		001BH;
    		AJMP	IRQ1;
    MAIN:	
            MOV		TMOD,	#00H	;工作模式0,高8+低5
            MOV		TH1,	#0FCH
            MOV		TL1,	#03H
            SETB	TR1;
            SETB	ET1;
            SETB	EA;
            AJMP	$;
            
    IRQ1:	        
    		MOV		TMOD,	#00H
            MOV		TH1,	#0FCH
            CPL		P1.0
            RETI	;中断返回一定要加!

    计数器使用方式(中断方式):

    ORG		0000H;
    		AJMP	MAIN;
    ORG		001BH;
    		AJMP	IRQ1;
    		
    MAIN:   
    		MOV		TMOD,	#04H	;计数器模式
            MOV		TH1,	#0FCH	;一千个下降沿中断一次
            MOV		TL1,	#03H
            SETB	TR1;
            SETB	ET1;
            SETB	EA;
            AJMP	$;
            
    IRQ1:	        
    		MOV		TMOD,	#00H
            MOV		TH1,	#0FCH
            CPL		P1.0
            RETI			;中断返回一定要加!

    查询方式则是判断TF溢出标志,变高后进入自定义韩式处理数据,清空标志;

二、并行口&串行口

并行口:并行传输数据(不常用)
占据资源大,错误率高,但快

 串行口:(重要)

稳定,占据IO口小,准确,稍微慢

  1.  串行口控制寄存器SCON:
    在这里插入图片描述
    SM0和SM1:串行口方式选择位;
    00-移位寄存器方式
    01-8位UART,波特率可变
    10-9位UART,波特率为fosc/64或fosc/32(PCON决定)
    11-9位UART,波特率可变
    方式1为常用通信方式;方式2、3为多机通信,方式0为移位寄存器,不常用;

     重要标志位:
     TI:发送完成标志
     RI:接收完成标志
  2. 串口波特率与定时器1关联,公式如下:
    波特率=2^SMOD * fosc / [32 * 12(2^K-初值)];(fosc系统主频)

 波特率翻倍寄存器:PCON
只有最高位(SMOD)有效:为1时波特率翻倍,为0时不翻倍

方式1串口通信接收代码:

ORG		0000H
LJMP	MAIN
ORG		0023H
LJMP	RX_TI

MAIN:
		MOV		SCON,		#50H
		MOV		PCON,		#00H
		MOV		TMOD,	#02H
		MOV		TH1,		#0FDH
		MOV		TL1,			#0FDH
		SETB	TR1
		SETB	EA
		SETB	ES
		
RX_TI:
		PUSH		ACC
		MOV		TH1,		#0FDH
		MOV		TL1,			#0FDH
		MOV		A,		SBUF		;处理
		POP			ACC
		RETI

发送套用代码:

MOV		SBUF,	A
JNB		TI,		$
CLR		TI
RET

三、中断系统

 所有中断控制位:
TCON:
在这里插入图片描述

TF1、TF0:定时器溢出标志、请求中断:
IE1、IE0:外部中断溢出请求:
IT1、IT0:外部中断触发方式选择-1下降沿触发、0低电平触发

SCON:
内部TI、RI触发接收发送中断。

所有中断允许位:

image.png

中断处理跳转地址:

中断源 矢量单元
外部中断0 0003H
定时器0溢出中断 000BH
外部中断1 0013H
定时器1溢出中断 001BH
串行口 0023H
定时器2溢出中断 002BH

注:进入中断后一般需要对现场进行保护:

使用PUSH和POP做现场保护

;对A和PSW压栈保护
PUSH 	ACC
PUSH	PSW

;对A和PSW出栈保护
POP		PSW
POP		ACC


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    个可寻址64KB外部数据存储器、还可以寻址64KB外部程序存储器的三总线的控制电路。              MCS-51单片机最大的时序定时单位   4个时序单位从小到大为:节拍,状态周期机器周期,指令周期......
    单片机最小系统详解,你要知道的都在这里了;最小系统,或者称为最小应用系统,是指用最少的元件组成的可以工作的系统,对51系列来说,最小系统一般应该包括:单片机、晶振电路、复位电路。本文引用地址: 单片机......
    完成一个独立的操作。       (4) 指令周期: 它是指CPU完成一条操作所需的全部时间。 每条指令执行时间都是有一个或几个机器周期组成。MCS - 51 系统中, 有单周期指令、双周期指令和四周期指令。 ......
    机器周期,指令周期,时钟周期,节拍与晶振;时钟周期       时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计......
    组成。 例题:单片机采用内部时钟,晶振频率f为6MHz,则: 振荡周期=1/6 MHz=1/6 us 时钟周期=1/3 us 机器周期=2 us 指令周期=机器周期的1......
    的晶振,机器周期为12/24M秒。 例如:外接晶振为 12MHz 时,51 单片机相关周期的具体值为: 振荡周期=1/12us; 状态周期=1/6us; 机器周期=1us; 指令周期=1~4us; (2......
    组成。MCS-51系统中,有单周期指令、双周期指令和四周期指令。 学单片是学什么? 1、对I/o的控制,无论单片机对外界进行何种控制,都是通过I/O口进行的。 2......
    机器周期,像乘法或除法就含有4个机器周期,单指令就只含有1个机器周期。   对于大多说的51单片机来说,1个机器周期=12个时钟周期(或振荡周期)   也有部分单片机时钟周期和振荡周期不相等,例如,1......
    MCS51单片机的指令时序;  时序是用定时单位来描述的,MCS-51的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期,接下来我们分别加以说明。   ·节拍与状态:   我们把振荡脉冲的周期......
    输入的外部脉冲源。 作为定时器使用时,定时器计数8051单片机片内振荡器输出经过12分频后的脉冲个数,即:每个机器周期使定时器T0/T1的寄存器值自动累加1,直到溢出,溢出后继续从0开始循环计数;所以......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>