MCS接口技术----定时/计数,中断

2024-01-01 08:52

本文主要是介绍MCS接口技术----定时/计数,中断,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一.中断系统相关寄存器

1.51单片机中断系统的总体结构:

2.中断源的中断级别(由高到低):

3.与中断有关的四个寄存器:

(1)TCON---定时控制寄存器

(2)IE---中断允许控制寄存器

(3)IP---中断优先级控制寄存器

(4)SCON---串行口控制寄存器

二.定时/计数相关寄存器

1.TMOD---控制寄存器

2.TCON----定时器控制寄存器(支持位寻址)

三.并行接口

四.串行接口

1.串行通信的分类

3.串行通信标准

(1)RS-232C接口

(2)RS-232与RS-423接口,RS-422和RS-485接口对比

4.MCS-51串口控制

(1)数据缓冲器

(2)电源控制寄存器PCON

(3)SCON串行口控制寄存器


一.中断系统相关寄存器

1.51单片机中断系统的总体结构:

2.中断源的中断级别(由高到低):

INT0---外部中断0,中断入口地址:0003H,P3.2提供,有电平和脉冲两种方式

T0---定时器/计数器0中断,中断入口地址:000BH,由T0定时溢出提供

INT1---外部中断1,中断入口地址:0013H,P3.3提供,有电平和脉冲两种方式

T1---定时器/计数器1中断,中断入口地址:001BH,由T1定时溢出提供

TX/RX---串行口中断,中断入口地址:0023H,由串行口提供,串行通信接收和发送都可产生中断

3.与中断有关的四个寄存器:

(1)TCON---定时控制寄存器

TCON寄存器是一个8位的特殊功能寄存器,用于控制定时器/计数器和外部中断。

TCON即以下这部分:

TCON的结构(8FH-88H):

TF1  :TF1=1表示T1有中断产生。(Timer Flag,定时器标志位

TR1  :TR1=1表示T1开始运行。(单片机中T0引脚,需要高低电平的驱动)

TF0  :TF0=1表示T0有中断产生。

TR0  :TR0=1表示T0开始运行。(单片机中T1引脚,需要高低电平的驱动)

IE1   :IE1=1表示INT1有中断产生。

IT1   :IT1=1表示INT1为下降沿触发,IT1=0表示INT1为低电平触发。

IE0   :IE0=1表示INT0有中断产生。

IT0   :IT0=1表示INT0为下降沿(负跳变)触发,IT0=0表示INT0为低电平触发。

针对外部中断(IE/IT):

IE0/IE1:外部中断请求标志位

当INT0(INT1)引脚出现有效的请求信号,此位由单片机自动置1,

CPU开始响应,处理中断,而当入中断程序后由单片机自动置0.

IT0/IT1:外部中断触发方式控制位          //选择有效信号

IT0/IT1=1:脉冲触发方式,下降沿有效。

IT0/IT1=0:电平触发方式,低电平有效。

(2)IE---中断允许控制寄存器

IE寄存器是一个用于控制各种中断的使能和禁止的特殊功能寄存器,包含了一系列位,每个位对应一个特定的中断源,通过设置这些位,可以控制相应中断的触发。

注:支持位寻址

IE寄存器即这一部分:

IE寄存器的结构(AFH-A8H):

EA    :整体中断允许位;EA=1允许中断。

ES    :串行中断允许位;ES=1允许中断。

ET1   :T1中断允许位;ET1=1允许中断。

EX1   :INT1中断允许位;EX1=1允许中断。

ET0   :T0中断允许位;ET0=1允许中断。

EX0   :INT0中断允许位;EX0=1允许中断。

注:D6,D5为无关位

(3)IP---中断优先级控制寄存器

IP寄存器用于控制中断的优先级,支持位寻址,而在默认情况下,中断优先级由高到低为:X0 > T0 > X1 > T1 > S

X0表示外部中断源0的优先级位,T0表示定时器0中断的优先级位,X1表示外部中断源1的优先级位,T1表示定时器1中断的优先级位,而S则表示串行通信中断的优先级位

即中断系统的这一部分:

IP寄存器的结构(B8H-BFH):

PS——串行口中断优先级控制位。

PS=1,串行口中断定义为高优先级中断。

PS=0,串行口中断定义为低优先级中断。

PT1——定时器/计数器1中断优先级控制位。

PT1=1,定时器/计数器1中断定义为高优先级中断。

PT1=0,定时器/计数器1中断定义为低优先级中断。

PX1——外部中断1中断优先级控制位。

PX1=1,外部中断1定义为高优先级中断。

PX1=0,外部中断1定义为低优先级中断。

PT0——定时器/计数器0中断优先级控制位。

PT0=1,定时器/计数器0中断定义为高优先级中断。

PT0=0,定时器/计数器0中断定义为低优先级中断。

PX0——外部中断0中断优先级控制位。

PX0=1,外部中断0定义为高优先级中断。

PX0=0,外部中断0定义为低优先级中断。

注:D7,D6,D5为无关位。

(4)SCON---串行口控制寄存器

SCON寄存器的结构(98H~9FH):

1.SM0、SM1:串行口工作方式控制位

2.SM2:多机通信控制位

多机通信工作于方式2和方式3,故SM2位主要用于方式2和方式3。

①在接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入sbuf,且置位RI发出中断申请,否则会将接受到的数据放弃。

②当SM2=0时,就不管第9位数据是0还是1,都得将数据送入sbuf,并发出中断申请。即此时RI是否置位由SM2和RB8共同决定。

工作于方式0时,SM2必须为0。

3.REN:允许接收位

REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。

4.TB8:发送接收数据位8

在方式2和方式3中,TB8是要发送的——即第9位数据位。在多机通信中同样也要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。

5.RB8:接收数据位8

在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。

6.TI:发送中断标志位

可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件置0。

7.RI:接收中断标志位

可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。

注:在串口中断处理时,TIRI都需要软件置0,硬件置位后不可能自动清0,此外,在进行缓冲区操作时,需要ES=0,以防止中断出现。

二.定时/计数相关寄存器

定时/计数器的逻辑结构:

1.TMOD---控制寄存器

TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。

D0~D3为T0定时/计数器的设置,D4~D7为T1定时/计数器的设置 。

GATE:为门控位:

GATE=0时,只要在编写程序时,使TCON中的TRO或TR1为1,就可以启动定时器/计数器工作。

GATE=1时,不仅要在编写程序时,使TCON中的TRO或TR1为1,且需要外部引脚也为高电平,才能 工作。

C/T :定时/计数模式切换,C/T=0时为定时模式,C/T=1时为计数模式。

M1,M0:用来选择定时计/计数器的工作方式,一般使用都是采用16位的计时计数器。

想要详细了解工作方式:http://t.csdnimg.cn/904wt

2.TCON----定时器控制寄存器(支持位寻址)

TR1:1启动T1,0停止T1

TR0:1启动T0,0停止T0

其余6位:与中断有关

三.并行接口

MCS-51单片机有4个8位并行接口,如果想深入学习可以看:

http://t.csdnimg.cn/seBQm

四.串行接口

1.串行通信的分类

(1)同步通信

(2)异步通信

2.串行通信的制式

3.串行通信标准

(1)RS-232C接口

PC常用的RS-232C接口信号定义(9针)

PC常用的RS-232C接口信号定义(25针)

(2)RS-232与RS-423接口,RS-422和RS-485接口对比

4.MCS-51串口控制

MCS-51串口结构

MCS-51提供一个全双工串口,可以转换为标准的RS-232串口。

(1)数据缓冲器

发送SBUF和接收SBUF共用一个地址99H。               

•发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。      

          发送指令:       MOV        SBUF,A

•接收SBUF存放已接收成功的8位数据,供CPU读取。

          读取串行口接收数据指令:MOV  A,SBUF

(2)电源控制寄存器PCON

电源管理寄存器在特殊功能寄存器中,字节地址为 87H,不能位寻址,PCON用来管理单片机的电源部分,包括上电复位检测、掉电模式、空闲模式等。单片机复位时 PCON 全部被清0。

(3)SCON串行口控制寄存器

在中断控制节已经介绍:

D7、D6:SM0、SM1,工作方式,有四种。

D5:SM2,1多机通信,0双机

D4:REN,1允许接收

D3:TB8,发送的第9位数据

D2:RB8,接收的第9位数据

D1:TI,发送中断标志

D0:RI,接收中断标志

具体介绍四种工作方式:

方式0( SM0 SM1 :0 0):

串行口的工作方式0为移位寄存器I/O方式,可外接移位寄存器,一扩展I/O口,也可外接同步I/O设备。

发送操作:当执行一条“MOV SBUF,A”指令时,启动发送操作,由TXD输出移位脉冲,由RXD串行SBUF中的数据。发送完8位数据后自动置TI=1.请求中断。要继续发送时,TI必须有指令清零。

接收操作:REN是串行口接收允许控制位。REN=0时禁止接收;REN=1时允许接收。当软件将REN置“1”时,即开始从RXD端口以fosc/12波特率输入数据,当接收到8位数据时,将中断标志RI置“1”。再次接收数据之前,必须用软件将RI清0。

方式1( SM0 SM1 :0 1):

串行口为10位通用异步接口。发送或接收一帧数据信息为10位,包括1位起始位“0”、8位数据位、1位停止位“1”。

发送数据:数据从TXD端口输出,当数据写入发送缓冲器SBUF时,就启动发送器发送。发送完一帧数据后,置中断标志TI=1,申请中断,通知CPU可以发送下一个数据了。

接收数据:首先使REN=1(允许接收数据),串行口从RXD接收数据,当采样到1至0跳变时,确认是起始位“0”,就开始接收一帧数据,当接收完一帧数据时,置中断标志RI=1,申请中断,通知CPU从SBUF取走接收到的数据 。

方式2 ( SM0 SM1 :1 0) :

串行口为11位异步通信接口。发送或接收一帧信息包括1位起始位“0”、8位数据位、1位可编程位、1位停止位“1”。

发送数据:发送前,先根据通信协议由软件设置TB8为“奇偶校验位”或“数据标识位”,然后将要发送的数据写入SBUF,即能启动发送器。发送过程是由执行任何一条以SBUF为目的寄存器的指令而启动的,把8位数据装入SBUF,同时还把TB8装到发送移位寄存器的第9位上,然后从TXD(P3.1)端口输出一帧数据。

接收数据:先置REN=1,使串行口为允许接收状态,同时还要将RI清“0”。然后再根据SM2的状态和所接收到的RB8的状态决定此串行口在信息到来后是否置RI=1,并申请中断,通知CPU接收数据。当SM2=0时,不管RB8为“0”还是为“1”,都置RI=1,此串行口将接收发送来的信息。当SM2=1时,且RB8=1,表示在多机通信情况下,接收的信息为“地址帧”, 此时置RI=1,串行口将接收发来的地址。当SM2=1时,且RB8=0,表示在多机通信情况下,接收的信息为“数据帧”, 但不是发给本从机的,此时RI不置为“1”,因而SBUF中接收的数据帧将丢失。

(4)方式3 ( SM0 SM1 :1 1) :

方式3为波特率可变的11位异步通信方式,除了波特率有所区别之外,其余方式都与方式2相同。

这篇关于MCS接口技术----定时/计数,中断的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/558749

相关文章

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Spring定时任务之fixedRateString的实现示例

《Spring定时任务之fixedRateString的实现示例》本文主要介绍了Spring定时任务之fixedRateString的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录从毫秒到 Duration:为何要改变?核心:Java.time.Duration.parse

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Python Flask实现定时任务的不同方法详解

《PythonFlask实现定时任务的不同方法详解》在Flask中实现定时任务,最常用的方法是使用APScheduler库,本文将提供一个完整的解决方案,有需要的小伙伴可以跟随小编一起学习一下... 目录完js整实现方案代码解释1. 依赖安装2. 核心组件3. 任务类型4. 任务管理5. 持久化存储生产环境

Nginx进行平滑升级的实战指南(不中断服务版本更新)

《Nginx进行平滑升级的实战指南(不中断服务版本更新)》Nginx的平滑升级(也称为热升级)是一种在不停止服务的情况下更新Nginx版本或添加模块的方法,这种升级方式确保了服务的高可用性,避免了因升... 目录一.下载并编译新版Nginx1.下载解压2.编译二.替换可执行文件,并平滑升级1.替换可执行文件

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

Django之定时任务django-crontab的实现

《Django之定时任务django-crontab的实现》Django可以使用第三方库如django-crontab来实现定时任务的调度,本文主要介绍了Django之定时任务django-cront... 目录crontab安装django-crontab注册应用定时时间格式定时时间示例设置定时任务@符号