第四章 单片机的其他片内功能部件_第1页
第四章 单片机的其他片内功能部件_第2页
第四章 单片机的其他片内功能部件_第3页
第四章 单片机的其他片内功能部件_第4页
第四章 单片机的其他片内功能部件_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章

单片机的其他片内

功能部件4-1 并行I/O口

4-2 定时器/计数器

4-4 中断系统

4-3 串行通信接口

I/O接口的作用实现和不同外设的速度匹配改变数据传送方式改变信号的性质和电平外部设备的编址1.对外设端口单独编址

INA,(N);N端口中的数OUT(N),A2.外设端口和存储器统一编址将一部分地址空间让给外设端口,存储器不再使用。优点:(1)一切指令均适用于I/O端口的访问,增强了CPU对外围设备的处理能力。(2)CPU本身不需要专门的I/O指令。(3)外设地址安排灵活,数量不限。端口与接口端口:常指I/O接口中带有端口地址的寄存器或缓冲器,CPU通过端口地址就可以对端口中信息进行读写。接口:指CPU与外设间的I/O接口芯片,一个外设通常需要一个I/O接口,但一个I/O接口可以有多个I/O端口,传送数据字的端口称数据口,传送命令字的称命令口,传送状态字的称为状态口。4-1并行I/O口四个8位并行I/O端口:P0、P1、P2和P3。每个端口都是8位准双向口,包含一个锁存器(即特殊功能寄存器P0~P3)、一个输出驱动器和一个输入缓冲器。这四个并行I/O口都可以作准双向通用I/O口,既可以作输入口,又可以作输出口,还可以作双向口。输出有锁存功能;输入有三态缓冲但无锁存功能。它们既可以以字节寻址,也可以按位独立输入/输出。

三种I/O端口操作方式1.数据输出方式(写端口)通过一条指令将数据写入P0-P3的数据锁存器,然后通过输出驱动器送到端口引脚。MOVP0,A;累加器A中内容送P0口2.读端口对端口锁存器数据进行读入,这个数据并非端口引脚上的数据MOVA,P1;P1锁存器中数据送A3.读引脚从端口引脚上读数据,先使对应端口锁存器置位,使T管截止,然后打开数据缓冲器,使引脚数据输入数据总线。MOVP1,#0FH;使P1口低四位锁存器置位MOVA,P1;读P1口低四位引脚线信号P1口的位结构通用I/O口 可以采用字节操作也可以采用位操作,CPU既可以把它们看作数据口也可以看作状态口。

CPU复位后,口锁存器为“1”,对于作为输入的口脚(读引脚),相应位的口锁存器不能写入“0”。4-1-1P1口例4-1读P1.4~P1.7口状态送指示灯显示。

字节操作参考程序:

ORLP1,#0F0H;P1.4~P1.7口锁存器置1MOVA,P1;读P1.4~P1.7引脚状态SWAPA;MOVP1,A;RETP2口有两种功能:对于内部有程序存贮器的单片机,P2口既可以作为输入/输出口使用,也可以作为系统扩展的地址总线口,输出高8位地址A8~A15。

对于内部没有程序存贮器的单片机,必须外接程序存贮器,一般情况下P2口只能作为系统扩展的高8位地址总线口,而不能作为外部设备的输入/输出口。

4-1-2P2口P2口作通用I/O口

例4-3

XRLP2,#01H;P2.0取反CPLP2.0;P2.0取反

P2口作地址总线(1)若片外数据存储器的容量≤256B这时P2口不输出地址,仍可作为I/O口使用例4-4将56H写入外部RAM的38H单元,CPU执行下面的程序段不影响P2口状态:

MOVR0,#38HMOVA,#56HMOVX@R0,A

(2)若片外数据存储器的容量≥256B

MOVXA,@DPTRMOVX@DPTR,A

4-1-3P0口

P0口既可作通用I/O口(用8051时)使用,又可作地址/数据分时复用总线使用。

P3口除了作为准双向通用I/O接口使用外,每一根线还具有第二种功能。4-1-4P3口

引脚第

能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0请求输入端)P3.3INT1(外部中断1请求输入端)P3.4T0(定时器/计数器0计数脉冲输入端)P3.5T1(定时器/计数器1计数脉冲输入端)P3.6WR(片外RAM写选通信号输出端)P3.7RD(片外RAM读选通信号输出端)1、MCS-51内部具有两个定时/计数器,可用于定时控制,分频器和事故处理来用。2、内部是一个二进制加1计数器,当计数器计满回零时能自动产生溢出中断请求,表示定时时间已到或计数已中止。4-2 定时器/计数器2个可独立控制的16位定时器/计数器:T0、T1原理:1、定时模式

每一个机器周期计数器加1,直至计满溢出产生中断请求。对于一个N位的加1计数器,若计数时钟的频率f是已知的,则从初值a开始加1计数至溢出所占用的时间为:当N=8、a=0、t=1/f时,最大的定时时间为:T=256t2、计数模式 外部输入信号是加到T0(P3.4)或T1(P3.5)端,CPU每个机器周期对T0(或T1)检测一次,只有在前一次检测为1后一次检测为0时才使计数器加1。所以,对外部输入信号的最高计数速率是晶振的1/24。一.定时器控制、状态寄存器1.TMOD定时器方式寄存器(89H)1)功能选择位C/T:=0,定时功能,计数内部机器周期脉冲;=1,计数功能,计数引脚T0(T1)输入的脉冲下降沿。2)方式选择位M1、M0:4种工作方式:13/16/8位3)门控方式选择位GATE:=0,非门控方式(内部启动):

TRx=1,启动定时器工作;

TRx=0,停止定时器工作。=1,门控方式(外部启动):TRx=1且引脚INTx=1才启动。T1T0MOV TMOD,#11010010B

或MOV TMOD,#0D2H注:只能字节寻址

TMOD确定定时器工作方式指令:MOVTMOD,#方式字例:设T0用方式2非门控定时,T1用方式1门控计数。2.TCON定时器控制/状态寄存器(88H)1)启动控制位TR0、TR1=0,停止定时器工作;=1,启动定时器工作。例:启动T0: SETB TR0;注:可以位寻址

2)溢出中断标志位TF0、TF1定时器溢出使TFx=1。中断方式:TFx=1引起中断请求,CPU响应Tx中断后,自动对TFx清0。软件查询方式:可用软件检测TFx,必须软件清0。

WAIT:JBCTF0,NEXT;检测T0是否溢出

SJMP WAIT ;未溢出,继续检测

NEXT:… ;溢出,TF0清0,处理溢出3.可预置初值的16位加1定时计数器属于SFR中的一种,T0由TH0、TL0组成,

T1由TH1、TL1组成。通过预设初值来定时。预置T0初值指令: MOV TH0,#XH

MOV TL0,#XL二、定时器工作方式

由方式选择位M1、M0设定1.方式013位定时/计数器。计数外部脉冲个数:1~8192(213)定时时间(12MHz,即:T=1s):1s~8.192ms振荡器÷12THxTLxTFx8位5位Tx脚&TRx1GATE启动控制INTxC/T=0C/T=1中断申请THx

高8位和TLx

低5位组成13位加1计数器例:计算得初值为7692,13位定时器T0应装初值多少?7692化为16进制数1E0CH,则TH0=0FOH,TL0=0CH2.方式116位定时/计数器。THx8位和TLx8位组成16位加1计数器计数外部脉冲个数:1~65536(216)定时时间(T=1s):1s~65536×T=65.54ms振荡器÷12THxTLxTFx8位8位Tx脚&TRx1GATE启动控制INTxC/T=0C/T=1中断申请3.方式2自动恢复初值8位定时/计数器。TLx为8位加1计数器,THx为8位初值暂存器。无需重装初值,用于需要重复定时和计数的场合。最大计数值:256(28)最大定时时间(T=1s):256s振荡器÷12TLxTHxTFx8位

Tx脚&TRx1GATE启动控制INTxC/T=0C/T=1中断申请重装方式2下,当定时器计满回零时,一方面向CPU发出溢出中断请求,另一方面从TH中重新获得初值并启动计数。而方式0、1、3下,定时器必须通过重装初值来重新启动计数。4.方式3(只适用T0)T0分成2个独立的8位定时器:TL0定时/计数器和TH0定时器TL0占用T0控制位:C/T,TR0,GATE;TH0占用T1控制位。T1不能使用方式3工作,一般当T1作为波特率发生器时,T0选方式3。振荡器÷12TL0TF08位

T0脚&TR01GATE启动控制INT0C/T=0C/T=1中断申请TH0TF18位

启动控制中断申请振荡器÷12TR14-2-3定时器/计数器的初始化

1.初始化步骤

1)给定时器方式寄存器TMOD写一个方式控制字。2)给定时器送定时初值。3)给中断允许寄存器IE选送中断控制字和中断优先级寄存器IP选送中断优先级字,以开放相应中断和设定中断优先级。4)给定时器控制寄存器TCON送命令字,以启动或禁止定时器/计数器的运行。

2.计数器初值的计算

TC=M-C

方式0时M为2^13;方式1时M为2^16;方式2和方式3时M为2^8。TC为计数初值C为计满所需要的计数个数3.定时器初值的计算T=(M-TC)T计数上式也可写成:TC=M-T/T计数式中,M为模值,和定时器的工作方式有关;T计数是单片机时钟周期TCLK的12倍;TC为定时器的定时初值。

例4-7

若单片机时钟频率为12MHz,请计算定时2ms所需的定时器初值。解:由于定时器工作在方式2和方式3下时的最大定时时间只有0.256ms,因此要想获得2ms的定时时间定时器必须工作在方式0或方式1。若采用方式0,则根据公式可得定时器初值为:TC=M-T/T计数=

2^13

-2*10^3/1=6192=1830H即:TH0应装#0C1H;TL0应装#10H(高三位为0)若采用方式1,则根据公式可得定时器初值为:TC=-2ms/1=63536=F830H

即:TH0应装#0F8H;TL0应装#30H。例:设8031时钟频率为12MHz,要求定时器T0定时50ms,写出初始化程序。TC=M-T/T计数=2^16-50ms/1us=15536=3CB0HSTART:MOVTMOD#01H;方式1MOVTH0,#3CH;装初值MOVTL0,#0B0HSETBTR0;启动T0计数WAIT:JBCTF0,TT0;检测T0是否溢出

SJMPWAIT ;未溢出,继续检测TTO:MOVTH0,#3CH;重装初值MOVTL0,#0B0H…

4-3 串行接口一、数据通信的基本方式并行通信数据有多少位就需多少根传送线,传送距离短,传送速度快。串行通信只需一对传送线,传送距离相对较远,但传送速度慢。二.串行通讯的基本方式(一).异步通讯

以字符为传送单位用起始位和停止位标识每个字符的开始和结束,字符间隔不固定,只需字符传送时同步。

(二).同步通信

每一数据块开头时发送一个或两个同步字符,使发送与接收双方取得同步。数据块的各个字符间取消了起始位和停止位,所以通信速度得以提高。

三.串行数据传送方向单工通讯:数据单向传送。半双工通讯:数据可分时双向传送。全双工通讯:可同时进行发送和接收。发送器接收器发送器接收器四.串行接口的基本结构1.发送器:并串数据格式转换,添加标识位和校验位,一帧发送结束,设置结束标志,申请中断。2.接收器:串并数据格式转换,检查错误,去掉标识位,保存有效数据,设置接收结束标志,申请中断。3.控制器:接收编程命令和控制参数,设置工作方式:同步/异步、字符格式、波特率、校验方式、数据位与同步时钟比例等。五、MCS-51的串行接口控制器1.数据缓冲器(发送器和接收器)SBUF发送SBUF和接收SBUF共用一个地址99H 。

1)发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。发送指令:

MOV SBUF,A2)接收SBUF存放已接收成功的8位数据,供CPU读取。读取串行口接收数据指令:MOVA,SBUF2.串行口控制/状态寄存器SCON(98H)(控制器)SM0,SM1:选择串行口4种工作方式。2.串行口控制/状态寄存器SCONSCONCON(98H)SM2:多机控制位,用于多机通讯。方式2、3时,SM2=1&RB8=1则激活RI;方式1时,SM2=0&RB8=1时激活RI.REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收.TB8:发送的第9位数据位,可用作校验位和地址/数据标识位.RB8:接收的第9位数据位或停止位.TI:发送中断标志,发送一帧结束,TI=1,须软件清零.RI:接收中断标志,接收一帧结束,RI=1,须软件清零.SMOD(PCON.7):波特率加倍控制位。SMOD=1,波特率加倍,SMOD=0,则不加倍。3.节电控制寄存器PCONPPCPCPCONONCON波特率:每秒钟传送二进制数码的位数(bit数),单位是bps(bitpersecond)。若波特率为1200bps,字符的实际传送速率为1200/10=120帧/秒。四、串行接口的工作方式

SM0,SM1选择四种工作方式。方式0:同步移位寄存器方式。用于扩展并行I/O接口。1.数据结构:一帧8位,无起始位和停止位。2.RXD:数据输入/输出端。

TXD:同步脉冲输出端,每个脉冲对应一个数据位。3.波特率:B=fosc/12

如:fosc=12MHz,B=1MHz,每位数据占1s。4.发送过程:先对TI清零,写入SBUF,启动发送,一帧发送结束,TI=1。

接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。

串行输入、并行输出移位寄存器内部结构RXDTXD(2)方式1

8位数据异步通讯方式。1.数据结构:一帧10位,8位数据位,1个起始位(0),1个停止位(1)。2.RXD:接收数据端。

TXD:发送数据端。3.波特率:用T1作为波特率发生器,B=(2SMOD/32)×T1溢出率。4.发送:先对TI清零,写入SBUF,同时启动发送,一帧发送结束,TI=1。

接收:REN=1,RI=0,允许接收。接收完一帧,将接收数据装入SBUF,RI=1。接收原理:当REN=1,CPU开始采样RXD引脚负跳变信号,若出现负跳变,才进入数据接收状态。即先检测起始位,若第一位为0,继续接收其余位;否则,停止接收,重新采样负跳变。数据采样速率为波特率16倍频,在数据位中间,用第7、8、9个脉冲采样3次数据位,并3中取2保留采样值。写入SBUF采样(a)发送时序图TXD数据输出TID0D1D2D3D4D5D6D7停止位起始位RXD输入数据(b)接收时序图D0D1D2D3D4D5D6D7停止位起始位RI检测负跳变接收和发送时序图(3)

方式2和方式3

9位数据异步通讯方式。1.一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。2.RXD:接收数据端TXD:发送数据端3.波特率:方式2:B=(2SMOD/64)×fosc。

方式3:B=(2SMOD/32)×T1溢出率。4.发送:先装入TB8,写入SBUF并启动发送,发送结束,TI=1。

接收:REN=1,允许接收。接收完一帧,若RI=0,SM2=0或RB8=1,将接收数据装入接收SBUF,第9位装入RB8,使RI=1;否则丢弃接收数据,不置位RI。(4)计算波特率方式0为固定波特率:B=fosc/12 方式2可选两种波特率:B=(2SMOD

/64)×fosc 方式1、3为可变波特率,用T1作波特率发生器。

B=(2SMOD/32)×T1溢出率T1为方式2的溢出时间:t=(28-X)T=(28-X)×12/foscT1溢出率=1/t=fosc/[12×(2n-X)]

波特率B=(2SMOD

/32)×fosc/[12×(28-X)]串行口方式1、3,根据波特率选择T1工作方式,计算时间常数。T1选方式2:TH1=X=28-fosc/12×2SMOD/(32×B)T1选方式1用于低波特率,需考虑T1重装时间常数时间。4-3-5单片机双机通讯和多机通信

1.双机通讯

2.多机通讯串行口的应用串行口初始化编程格式:

SIO:MOVSCON,#××H;方式字,且TI=RI=0 MOVPCON,#80H ;波特率加倍

MOVTMOD,#20H ;T1作波特率发生器,方式2

MOVTH1,#X;选定波特率

MOVTL1,#X SETBTR1 SETBEA ;开串行口中断

SETBES发送程序:先发送一个字符,等待TI=1后再发送下一个字符。1.查询方式:TRAM: MOV A,@R0 ;取数据

MOV SBUF,A ;发送一个字符WAIT: JBC TI,NEXT ;等待发送结束

SJMP WAITNEXT: INC R0 ;准备下一次发送

SJMP TRAM2.中断方式:

ORG 0023H ;串行口中断入口

AJMPSINTMAIN: … ;初始化编程TRAM: MOV A,@R0 ;取数据

MOV SBUF,A ;发送第一个字符

H: SJMP H ;其它工作

SINT: CLRTI ;中断服务程序

INC R0 MOV A,@R0 ;取数据

MOV SBUF,A ;发送下一个字符

RETI接收程序:REN=1、RI=0等待接收,当RI=1,从SBUF读取数据。1.查询方式:

WAIT: JBC RI,NEXT ;查询等待

SJMP WAITNEXT: MOV A,SBUF ;读取接收数据

MOV @R0,A ;保存数据

INC R0 ;准备下一次接收

SJMP WAIT2.中断方式:

ORG 0023H AJMP RINTMAIN: … ;初始化编程

H: SJMP H ;其它任务

RINT: CLR RI ;清中断标志

MOV A,SBUF ;读取接收数据

MOV @R0,A ;保存数据

INC R0 RETI(二)异步通讯程序举例

1.发送程序:将片内RAM50H起始单元的16个数由串行口发送。要求发送波特率为系统时钟的32分频,并进行奇偶校验。MAINT:MOV SCON,#80H;串行口初始化,方式2

MOV PCON,#80H;波特率,SMOD=1

MOV R0,#50H ;设数据指针

MOV R7,#10H ;数据长度LOOP:MOVA,@R0 ;取一个字符

MOV C,P ;加奇偶校验

MOV TB8,C MOV SBUF,A ;启动第一次发送

WAIT: JBC TI,NEXT ;等待发送结束

SJMP WAITNEXT: INC R0 ;准备下一次发送

DJNZ R7,LOOP;是否发送完?

END2.接收程序:串行接收16个字符,存入片内RAM的50H起始单元,串行口波特率为2400(设晶振为11.0592MHz),进行奇偶校验。MAIN: MOV SCON,#0D0H;串行口方式3允许接收

MOV TMOD,#20H;T1方式2定时

MOV TL1,#0F4H;写入T1时间常数

MOV TH1,#0F4H SETBTR1 ;启动T1 MOV R0,#50H;设数据指针

MOV R7,#10H

;接收数据长度

WAIT:JBCRI,NEXT ;等待串行口接收

SJMPWAIT

NEXT:MOVA,SBUF ;取一个接收字符

JNB P,COMP ;奇偶校验

JNB RB8,ERR ;P≠RB8,数据出错

SJMPRIGHT ;P=RB8,数据正确COMP:JB RB8,ERRRIGHT:MOV@R0,A ;保存一个字符

INCR0 ;修改指针

DJNZR7,WAIT;全部字符接收完?

CLRF0 ;F0=0,接收数据全部正确

SJMPQUITERR:SETBF0;F0=1,接收数据出错QUIT: RET4.4.1中断系统概述一、中断的概念中央处理器CPU正在处理某事件的时候,外部发生了更为紧急的事件,请求CPU暂停当前的工作,转入处理所发生的事情,处理完后,再回到被中断的地方,继续原来的工作,这样的过程称为中断。日常事务程序中断服务程序4-4 中断系统中断技术的优点:提高CPU的效率。提高实时数据的处理时效。

被控对象的实时参数、越限数据和故障信息为计算机及时采集,以便应急处理。故障处理

如掉电中断。中断系统的功能:中断优先权排队

根据轻重缓急排队,优先处理最紧急事件的中断请求。实现中断嵌套

CPU处理中断时,发生另一个优先级更高的中断请求,CPU转而响应优先级更高的中断请求,处理完之后再回到原来中断服务程序。自动响应中断实现中断返回。二、中断系统结构2个外部中断源信号:INT0、INT12个定时器T0、T1溢出中断请求:TF0、TF11个串行口数据发送、接收结束中断请求:TI、RI三、中断控制寄存器四、中断控制寄存器中的各中断标志1.中断标志位:

TF1、TF0、IE1、IE0、RI、TI

SCONTCON登记各中断源请求信号:=1,有中断请求;=0,无中断请求。CPU响应中断后,各中断标志自动清零。注意:TI,RI标志必须软件清零。2.外部中断触发方式选择位:IT0、IT1=1,负边沿触发中断请求;=0,低电平触发中断请求。五、中断控制寄存器中各控制位=1,开中断;=0,关中断。例:允许CPU响应T0的中断请求

MOVIE,#82H或者SETBET0 SETBEA 2级优先级:=1,为高优先级;=0,为低优先级。 同一优先级别按内部查询顺序排列优先级:

高INT0、T0、INT1、T1、SIO低。3.中断允许控制位:EA、ES、ET1、EX1、ET0、EX0IEIP4.中断优先级控制位:PS、PT1、PX1、PT0、PX0注意:低优先级中断可以被高优先级中断所中断,反之不能。一种中断一旦得到响应,与它同级的中断不能再中断它。4.4.2中断处理过程

1.中断响应(一)中断响应条件1.有中断源发出中断请求;2.中断总允许位EA=1,即CPU开中断;3.相应的中断允许位为1,即没有屏蔽。(二)响应过程1.阻断同级或低级中断;2.PC指针内容压栈保护;3.相应中断入口地址装入PC,程序转移到该中断入口地址单元。(三)中断响应阻断.1.当CPU未执行完一条指令。2.当有同级或高级中断服务。3.执行RET、RETI等指令后,不能立即响应中断。2.中断处理注意:

(1)各中断源的入口矢量地址之间,相隔8个单元,通常是在中断入口矢量地址单元处存放一条无条件转移指令,转至存储器其他的任何空间去执行中断服务程序。

(2)若要在执行当前中断程序时禁止更高优先级中断,应用软件关闭CPU中断,或屏蔽更高级中断源的中断,在中断返回前再开放中断。

(3)在保护现场和恢复现场时,为了不使现场信息受到破坏或造成混乱,一般在此情况下,应关CPU中断,使CPU暂不响应新的中断请求。

3.中断返回中断返回指令:

RETI=RET指令+通知CPU中断服务已结束。4.4.3中断系统应用中断服务程序的—般格式如下:

CLR EA ;关中断PUSHPSW;保护现场PUSHA…SETB EA ;开中断,允许CPU响应高级中断CLR EA ;关中断POPA;恢复现场POPPSW…SETB EA ;开中断RETI ;中断返回

…;服务程序1.定时器/计数器的应用和编程

例4-10产生2ms的方波

ORG 0000HRESET:AJMP MAIN

;转主程序

ORG000BH

;转中断处理程序

AJMP IT0P

ORG0100HMAIN:MOVSP,#6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论