导图社区 第七章 51单片机的内部资源及编程
这是一篇关于第七章 51单片机的内部资源及编程的思维导图,包括:并行输入/输出接口、定时/计数器接口、串行接口、中断系统。
编辑于2022-04-23 20:59:04第七章 51单片机的内部资源及编程
并行输入/输出接口
51单片机。这四口计科并行输入或输出八位数据,又可以按位方式使用,即每一位均能独立的作为输入或输出接口有4个8位的并行输入/输出接口:P0、P1、P2、P3口
汇编语言程序代码如下; ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV P1,#0FFH LOOP:MOV A,P1 MOV P0,A SJMP LOOP END
C51语言程序代码如下: #include <reg51.h> void main(void) { unsigned char i; P1=0xff; 0x:16进制标识 ff:1111 1111 八位高电平八位数据同时运行 for(;;) {i=P1;P0=i} }
定时/计数器接口
定时/计数器的主要特征
1)MCS-51系列中有两个16位的可编程定时/计数器:T0和T1;52子系列有三个 2)每个定时/计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能。 3)每个定时/计数器都有多种工作方式,其中T0有四种工作方式;T1有三种工作方式,T2有三种工作方式。 4)每一个定时/计数器定时计数到时产生溢出,使相应的溢出位置位。溢出可通过查询或中断方式来处理。
定时/计数器T0、T1的结构及工作原理
1)加法计数器:16位加法计数器用于对系统时间计数实现定时或对外部计数信号计数实现计数 2)方式寄存器TMOD:用于设定定时/计数器T0和T1的工作方式 3)控制寄存器TCON:用于对定时/计数器的启动、停止进行控制。 4)内部总线;各部分之间连接和信息传送
当定时/计数器用于定时时,对内部周期Tcy进行计数,如:Tcy=1μs,计数100,定时100μs
当定时/计数器用于计数时,加法计数器对对单片机芯片引脚T0(P=3.4)或T1(P=3.5)上的输入脉冲进行计数。每来一个输入脉冲,加法计数器加1.当由全1再加1变为全零时产生溢出,使溢出位TF0或TF1置位,如中断允许,则向CPU提出定时/计数中断;如中断不被允许,则只有通过查询方式使用溢出位
注意事项: 1)由于它是加法计数器,由全1加到全0时记满溢出。因而,如果要计N个单位,则首先应向计数器置初值为X,有 初值X=最大计数值(满值)M-计数值N。当定时/计数器工作于R位计数方式时,他的满值位2的R次幂 2)当定时/计数器工作于计数方式时,对芯片引脚T0(P3.4)或T1(P3.5)上的输入脉冲计数。在每一个周期的S5P2时刻对T0(P3.4)或T1(P3.5)上的信号采样一次,如果上一个机器周期采样到高电平,下一个机器周期采样到低电平,则计数器在下一个机器周期的S3P2时刻加1计数一次。因而需要两个机器周期才能识别一个计数脉冲,所以外部计数脉冲的频率应小于震荡频率的1/24。
定时/计数器的方式和控制寄存器
方式寄存器TMOD:用预设定定时/计数器T0和T1的工作方式,他的字节地址为89H
TMOD D7 D6 D5 D4 D3 D2 D1 D0 (89H) GATE C/T M1 M0 GATE C/T M1 M0 | 定时器1 | 定时器2 |
其中各二进制位的含义说明如下: M1、M0:工作方式选择位,用于对T0的四种工作方式、T1的三种工作方式进行选择,如下表; M1 M2 工作方式 方式说明 0 0 0 13位定时/计数器方式 0 1 1 16位定时/计数器方式 1 0 2 8位自动重置定时/计数器方式 1 1 3 两个8位定时/计数器方式(仅T0) C/T:定时或计数方式选择位。当C/T=1时工作于计数方式;当C/T=0时工作于定时方式 GATE:门控位,用于控制定时/计数器的启动是否受到外部中断请求信号的影响。GATE=0,与外部中断请求信号引脚INTO(P3.2)和INTI(P3.3)无关。GATE=1,定时/计数器T0的启动还受到芯片外部中断请求信号引脚INTI(P3.2)的控制,T1受到引脚INTI(P3.3)的控制,只有外部中断请求信号引脚INTO(P3.2)INTI(P3.3)为高电平才开始启动计数;
控制寄存器TCON:用于控制定时/计数器的启动与溢出,他的字节地址为88H,可以进行位寻址。
TCON D7 D6 D5 D4 D3 D2 D1 D0 (88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
其中各二进制位的含义说明如下: TF1:定时/计数器T1的溢出标志位。当定时/计数器T1记满时,由硬件使他置位,如中断允许则触发T1中断。进入中断处理后由内部硬件电路自动清除 TR1:定时/计数器T1的启动位。可由软件置位或清零,当TR1=1时启动;TR1=0时停止。 TF0:定时/计数器T0的溢出标志位,当定时/计数器T0记满时,由硬件置位,如中断允许则触发T0中断。 TR0:定时/计数器T0的启动位。可由软件置位或清零。TR0=1时启动,TR0=0时停止。
定时/计数器的工作方式
1、方式0——13位定时/计数器方式 当M1M0两位为00时,定时/计数工作器工作于方式0,结构如图, 这种情况下,TL0(或TL1)的低五位和TH0(或TH1)的八位。当TL0(或TL1)低五位记满则向TH0(或TH1)进位,当TH0(或TH1)也记满时则溢出,使TF0(或TF1)置位。如果中断允许则提出中断请求。这种情况下的最大计数值(满值)为2的13次幂 2、方式1——16位定时/计数器方式 当M1M0为01时,方式1的结构与方式2的结构相同,只是把13位变成16位。 3、方式2——8位自动重置定时/计数器方式 当M1M0两位为10时,工作于方式2,结构如图。 4、方式3——两个8位的定时/计数器方式 方式三仅限于T0,当M1M0为11时启动,结构如图所示。
定时/计数器具体工作方式的选择 计数值位于1~256之间 方式0、1、2 计数值位于256~8192 方式0、1 计数值大于8192~65536 方式1 计数值大于65536 其他方式
定时/计数器的初始化编程及应用
定时/计数器的编程
过程如下: 1)根据要求确定是定时还是计数 2)根据要求计算定时/计数器的计数值,确定方式控制字写入方式控制寄存器。 3)根据所选方式和计数值求得初值,写入初值寄存器。 4)根据需要开放定时/计数器控制寄存器TCON的值,启动定时/计数器开始工作 5)设置定时/计数器控制寄存器TCON的值,启动定时/计数器开始工作。 6)等待定时/计数器时间到,溢出标志置位,执行中断服务程序:如用查询处理则编写查询程序,判断溢出标志,溢出标志等于1,进行相应处理。
定时/计数器的应用
1)统计外部事件的次数
2)产生周期性波形
3)脉冲宽度测量
AT89S5X单片机看门狗WDT定时器
看门狗定时器执行程序过程中,应在16384μs(时钟频率12MHz)内不断向WDTRST写入1EH和E1H,清零看门狗定时器。
串行接口
串行接口是计算机中一个重要的外部接口,计算机通过他与外部设备进行通信。
通信的基本概念
并行通信
1)一次传送多位数据 2)通过并行输入/输出接口实现 3)通信速度快,但传输信号线多,传输距离较远时线路复杂,成本高,通常用于近距离传输。
串行通信
1)按一位一位顺序传送数据 2)通过串行接口来实现 3)传输线少,通信线路简单,通信速度慢,成本低,适合长距离通信
单工
子主题
半双工
子主题
全双工
子主题
串行通信数据传输的基本过程
传输线上高电平表示二进制1,低电平表示二进制0,通过时钟进行控制,发送端通过发送时钟进行控制,每一个时钟周期发送一位,接收端通过接受时钟控制,每个时钟周期检测一位,因而发射时钟要和接收时钟保持一致。
1)发送过程
①发送端发送数据,先将数据送入移位寄存器 ②在发送时钟控制下将该并行数据逐位移位输出发送到数据线,数据为1 则发送数据线送高电平,数据为0,则发送数据线送低电平。③通常发送时钟的下降沿将移位寄存器中的数据串行输出,每个数据位的时间间隔由发送时钟的周期划分
2)接收过程
一般用接收时钟的上升沿对接收数据进行采样,进行数据位检测,如果检测到高电平,接收为1,检测到低电平接收为0,将接收的数据依次移入接收器的移位寄存器中。
异步通信和同步通信
串行异步通信
数据在线路上传送时是以一个字符为单位,未传送时线路处于空闲状态,空闲线路约定为高电平”1“。传送时每一个字符前加一个低电平的起始位,然后是数据位,可以为5~8位,低位前,高位后。数据位后可带奇偶校验位,最后为停止位,停止位使用高电平表示。(1位,1位半,或2位)
字符间可以间隔,间隔的位数不定。对发送时钟和接收时钟的要求相对不高,线路简单,但传送速度较慢。
串行同步通信
数据在线上传送时以字符块位单位,一次传送多个字符,传送时须在前面加上一个或两个同步字符,后面加上校验字符。
一次连续传送多个字符,传送的位数多,对发送时钟和接收时钟要求较高,往往用同一个时钟源控制,控制线路复杂,传送速度快。
波特率
指串行通讯中,单位时间传送的二进制数,单位为bps。例如:每秒传送200位二进制位,则波特率位200bps。
异步通讯中,传送速度往往用每秒传送多少个字节来表示(Bps)。波特率(bps)=一个进制的二进制位数x字符/秒(Bps)
51单片机串行口的功能与结构
功能
MCS-51单片机具有一个全双工的串行异步通信接口,可以同时发送、接收数据。发送、接收数据可通过查询或中断方式来处理,使用十分灵活,能方便的与其他计算机或串行传送信息的外部设备实现双机,多机通信。
其有四种工作方式: 方式0:称为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展I/O接口。 方式1:称为8位异步通信方式,通常用于双击通讯。 方式2和方式3:称为9位异步通信方式,通常用于多机通信。 *不同工作方式波特率也不同,方式0和方式2的波特率直接由系统时钟产生,方式1和3的波特率由定时/计数器T1的溢出决定。
结构
MCS-51单片机串行口主要由发送数据寄存器、发送控制输出控制门、接收数据寄存器、接收控制器、输入移位寄存器等组成。
串行口控制寄存器SCON
特殊功能寄存器,地址为98H,可以进行位寻址,位地址为98H~9FH。
SM2:多机通信控制位。 》在方式2和方式3接收数据时, 当SM2=1,如果接收到的第9位数据(RB8)为“0”,则输 入移位寄存器中接收的数据不能移入到接收数据寄存器 SBUF ,接收中断标志位 RI 不置“1”接收无效;如果接收到的第9位数据RB8)为““1”则输入移位寄存器中接收的数据将移入到接收数据寄存器 SBUF ,接收中断标志位 RI 置“1”,接收才有效; √当SM2=0时,无论接收到的数据的第9位(RB8)是“1”还是“0”输入移位寄存器中接收的数据都将移入到接收数据寄存器 SBUF ,同时接收中断标志位 RI 置“1”,接收都有效。 上方式1时,若SM2=1,则只有接收到有效的停止位,接收才有效。 上方式0时,SM2位必须为0。 REN :允许接收控制位。当 REN =1,则允许接收,当 REN =0,则禁止接收。 TB8:发送数据的第9位。 √在方式2和方式3中,TB8中为发送数据的第9位。它可以用来做奇偶校验位。 在多机通信中,它往往用来表示主机发送的是地址还是数据:TB8=0为数据,TB8=1为地址。 √该位可以由软件置“1”或清“0”。RB8:接收数据的第9位。 √在方式2和方式3中,RB8用于存放接收数据的第9位。在方式1时,若SM2-0,则RB8为接收到的停止位。√在方式 O 时,不使用RB8。 Tl :发送中断标志位。 √在一组数据发送完后被硬件置位。在方式 O 时,当发送数据第8位结束后,由内部硬件使 TI 置位;在方式1、2、3时,在停止位开始发送时由硬件置位。 TI 置位,标志着上一个数据发送完毕, CPU 可以通过串行口发送下一个数据。在 CPU 响应中断后, TI 不能自动清零,必须用软件清零。 TI 可供查询使用。 RI :接收中断标志位。√当数据接收有效后由硬件置位。 √在方式 O 时,当接收数据的第8位结束后,由内部硬件使 RI 置位。√在方式1、2、3时,当接收有效,由硬件使 RI 置位。 √ RI 置位,标志着一个数据已经接收到, CPU 可以从接收数据寄存器中来取接收的数据。 √对于 RI 标志,在 CPU 响应中断后,也不能自动清零,必须用软件清零。√ RI 也可供查询使用。 对于串口发送中断 TI 和接收中断 RI ,无论哪个响应,都触发串口中断。到底是发送中断还是接收中断,只有在中断服务程序中通过软件来识别。 →在系统复位时, SCON 的所有位都被清零。
电源能控制寄存器PCON
特殊功能寄存器。主要用于电源控制方面。PCON中的最高位SMOD,称为波特率加倍位。用于对串行口的波特率进行控制。当SMOD位为1,则串行口方式1、2、3的波特率加倍。PCON的字节地址为87H,不能进行位寻址,只能按照字节方式访问
串行口的工作方式
方式0
SM0和SM1为00时,常用来外接移位寄存器,用作扩展I/O接口。方式0工作时波特率固定为f OCS/12,串行数据通过RXD输入和输出,同步时钟通过TXD输出。发送和接收数据时低位在前,高位在后,长度为8位。
方式1
当SM0、SM1为01时工作于方式1,为8位异步通讯方式:在方式1下,一帧的信息为10位,1位起始位(0),八位数据位(低位在前),和1位停止位(1)。TXD位发送数据端,RXD位接收数据端。波特率可变,由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定。即: 波特率=2SMOD次方 x (T1的溢出率)/32.
方式2、3
9位异步通讯接口,接收和发送信息一帧的长度为11位,即1个低电平的起始位,9位数据位,1个高电平的停止位。发送的低9位数据放于TB8中,接受的第9位数据放于RB8中。TXD为发送数据端,RXD为接收数据端。方式2和方式3的不同在于波特率的不同,其中方式2波特率只有两种:fosc/32或fosc/64;方式3的波特率与方式1相同,由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定,即: 波特率=2的SMOD次方 x (T1的溢出率)/32。
串行口的编程及应用
串行口初始化编程
MCS-51串行口使用前必须进行初始化,,设定串口的工作方式和波特率。
串行口控制寄存器SCON位的确定
根据工作方式确定SM0、SM1位,方式2、3还需确定SM2位。为接收端,则置允许接收位为REN为1;如果为方式2、3发送数据,则将发送数据的第9位写入TB8中
设置波特率
方式0:无需设置波特率 方式2:设置时仅需对PCON中的SMOD位进行设置。 方式1、3:设置波特率不仅对PCON中的SMOD进行设置,还要对定时/计数器T1进行设置,初值可由下面公式求得; 由于: 波特率=2的SMOD次方 x (T1的溢出率)/32 则: T1的溢出率=波特率x32/2的SMOD次方 而T1的工作方式2的溢出率又可由下式表示: T1的溢出率=fosc/【12x(256-初值)】 所以; T1的初值=256-focsx2的SMOD次方/(12x波特率x32)
串行口的应用
1)利用方式0扩展并行I/O接口
2)利用方式1实现点对点的双机通信
3)利用方式2或3实现多机通信
中断系统
中断系统基本概念
中断源及中断请求:产生中断请求的事件,分为软件中断和硬件中断。当中断源申请CPU中断时,就通过软件或硬件的形式向CPU提出中断请求。
中断优先权控制;实际系统中,往往根据中断源的重要程度给不同的中断源设定优先等级。当多个中断源提出中断请求时,优先级高的先响应,优先级低的后相应
中断允许与中断屏蔽:某个中断源被系统设置为屏蔽状态,则无论中断请求是否提出,都不会响应;当中断源设置为允许状态,又提出了中断请求,则CPU才会响应
中断响应于中断返回:中断响应时首先对当前的断点地址进行入栈保护,然后把中断服务程序的入口地址送给程序指针PC,转移到中断服务程序,在中断服务程序中进行相应的中断处理。最后,用中断返回指令RETI返回断点位置,结束中断。在中断服务程序中往往还涉及现场保护和恢复现场以及其他处理GV
51单片机的中断系统结构
51单片机的中断源
外部中断源INT0和INT1的中断请求信号从外部引脚P3.2和P3.3输入,主要用于自动控制、实时处理、单片机掉电和设备故障的处理
定时/计数器T0和T1中断:当定时/计数器T0(或T1)溢出时,由硬件置TF0(或TF1)为“1”,向CPU发送中断请求,当CPU响应中断后,由硬件自动清除TF0(或TF1).
串行口中断:51单片机的串行口中断对应两个中端口标志位,串行口发送中断标志位T1和串行口接收中断标志位RI。无论那个标志位置"1",都请求串行口中断。
两级中断允许控制
两级优先级控制
中断响应
中断响应的条件
条件:中断源有请求且中断允许。 优先级满足下列条件: 1)无同级或高级中断正在处理 2)现行指令执行到最后一个机器周期且以结束 3)若现行指令为RETI或访问IE、IP的指令时,执行完该指令且紧随其后的一条指令也执行完毕。
中断响应过程
51单片机响应中断后,由硬件自动执行如下的功能操作: 1)根据中断请求源的优先级高低,对相应的优先级状态触发器置"1"。 2)保护断点,即把程序计数器PC的内容压入堆栈保存。 3)清除内部硬件可清除的中断请求标志位(IE0、IE1、TF0、TF1) 4)把被响应的中断服务程序入口地址送入PC中从而转入相应的中断服务程序执行。
中断响应时间
是指从CPU检测到中断请求信号到转入中断服务程序入口所需要的机器周期。
浮动主题