单片机的其他片内功能部件课件

上传人:hknru****knru 文档编号:243164475 上传时间:2024-09-17 格式:PPT 页数:67 大小:891.50KB
返回 下载 相关 举报
单片机的其他片内功能部件课件_第1页
第1页 / 共67页
单片机的其他片内功能部件课件_第2页
第2页 / 共67页
单片机的其他片内功能部件课件_第3页
第3页 / 共67页
点击查看更多>>
资源描述
第,2,章,C8051F,单片机的结构与原理,2.1 C8051F,系列单片机总体结构,2.2 C8051F020,存贮器组织,2.3 CIP-51,指令介绍,2.4,中断系统,2.5,端口输入,/,输出,67,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第四章,单片机的其他片内功能部件,4-1并行,I/O,口,4-2定时器/计数器,4-3串行通信接口,4-4,中,断系统,第四章,单片机的其他片内功能部件,I/O,接口的作用,实现和不同外设的速度匹配,改变数据传送方式,改变信号的性质和电平,第四章,单片机的其他片内功能部件,外部设备的编址方式,1.对外设端口单独编址,IN A,(N) ;N,端口中的数,OUT (N),A,2.,外设端口和存储器统一编址,将一部分地址空间让给外设端口,存储器不再使用。,优点:,(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,位准双向口,包含一个锁存器(,即特殊功能寄存器,P0P3,)、,一个输出驱动器和一个输入缓冲器。,这四个并行,I/O,口都可以作准双向通用,I/O,口,既可以作输入口,又可以作输出口,还可以作双向口。,输出有锁存功能;输入有三态缓冲但无锁存功能,。它们既可以以字节寻址,也可以按位独立输入,/,输出。,第四章,单片机的其他片内功能部件,三种,I/O,端口操作方式,1.数据输出方式(写端口),通过一条指令将数据写入,P0-P3,的数据锁存器,然后通过输出驱动器送到端口引脚。,MOV P0,A ;,累加器,A,中内容送,P0,口,2.读端口,对端口锁存器数据进行读入,这个数据并非端口引脚上的数据,ORL P1,#0F0H ;P1,锁存器中数据送,A,经“与”运算后,送,P1,锁存器,第四章,单片机的其他片内功能部件,3.,读引脚,从端口引脚上读数据,先使对应端口锁存器置位,使,T,管截止,然后打开数据缓冲器,使引脚数据输入数据总线。,MOV P1,#0FH ;,使,P1,口低四位锁存器置位,MOV A,P1 ;,读,P1,口低四位引脚线信号,第四章,单片机的其他片内功能部件,P1,口的位结构,第四章,单片机的其他片内功能部件,4-1-1,P1,口,通用,I/O,口,可以采用字节操作也可以采用位操作,,CPU,既可以把它们看作数据口也可以看作状态口。,CPU,复位后,口锁存器为“1”,对于作为输入的口脚(读引脚),相应位的口锁存器不能写入“0”。,第四章,单片机的其他片内功能部件,例41 读,P1.4P1.7,口状态送指示灯显示。,字节操作参考程序:,ORL P1,#0F0H,; P1.4P1.7,口锁存器置1,MOV A,P1,;,读,P1.4P1.7,引脚状态,SWAP A,;,MOV P1,A,;,RET,第四章,单片机的其他片内功能部件,4-1-2,P2,口,P2,口有,两种功能,:,对于内部有程序存贮器的单片机,,P2,口既可以作为输入,/,输出口使用,也可以作为系统扩展的地址总线口,输出高,8,位地址,A8,A15,。,对于内部没有程序存贮器的单片机,必须外接程序存贮器,一般情况下,P2,口只能作为系统扩展的高,8,位地址总线口,而不能作为外部设备的输入输出口。,第四章,单片机的其他片内功能部件,P2,口作通用,I/O,口,例,4-3,XRL P2,#01H,;,字节操作,,P2.0,取反,CPL P2.0,;,位操作,,P2.0,取反,P2,口作地址总线,(,1,),若片外数据存储器的容量256,B,这时,P2,口不输出地址,仍可作为,I/O,口使用,例4-4,将56,H,写入外部,RAM,的38,H,单元,,CPU,执行下面的程序段不影响,P2,口状态:,MOV R0, #38H,MOV A, #56H,MOVX R0, A,第四章,单片机的其他片内功能部件,(,2,),若片外数据存储器的容量,256,B,MOVX A,DPTR,MOVX DPTR,A,第四章,单片机的其他片内功能部件,4-1-3,P0,口,P0,口既可作通用,I/O,口(用,8051,时)使用,,又可作地址数据分时复用总线使用。,第四章,单片机的其他片内功能部件,4-1-4,P3,口,P3,口除了作为准双向通用,I/O,接口使用外,每一根线还具有第二种功能。,引脚,第 二 功 能,P3.0,RXD(,串行输入口),P3.1,TXD(,串行输出口),P3.2,INT0(,外部中断0请求输入端),P3.3,INT1(,外部中断1请求输入端),P3.4,T0(,定时器/计数器0计数脉冲输入端),P3.5,T1(,定时器/计数器1计数脉冲输入端),P3.6,WR(,片外,RAM,写选通信号输出端),P3.7,RD(,片外,RAM,读选通信号输出端),第四章,单片机的其他片内功能部件,4-2 定时器/计数器,1、,MCS-51,内部具有两个定时/计数器,可用于定时控制,分频器和事故处理来用。,2、内部是一个二进制加1计数器,当计数器计满回零时能自动产生溢出中断请求,表示定时时间已到或计数已中止。,第四章,单片机的其他片内功能部件,2个可独立控制的16位定时器/计数器:,T0、T1,原理:,1、定时模式,每一个机器周期计数器加1,直至计满溢出产生中断请求。对于一个,N,位的加1计数器,若计数时钟的频率,f,是已知的,则从初值,a,开始加1计数至溢出所占用的时间为:,当,N=8、a=0、t=1/f,时,最大的定时时间为:,T=256t,2、计数模式,外部输入信号是加到,T0(P3.4),或,T1(P3.5),端,,CPU,每个机器周期对,T0(,或,T1),检测一次,只有在前一次检测为1后一次检测为0时才使计数器加1。所以,对外部输入信号的最高计数速率是晶振的1/24。,第四章,单片机的其他片内功能部件,一.定时器控制、状态寄存器,1.,TMOD,定时器,方式寄存器,(89,H),T1,T0,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,才启动。,第四章,单片机的其他片内功能部件,TMOD,确定定时器工作方式指令:,MOV TMOD,#,方式字,例:,设,T0,用方式2非门控定时,,T1,用方式1门控计数。,MOVTMOD,#1101 0010B,或,MOVTMOD,#0D2H,第四章,单片机的其他片内功能部件,2.,TCON,定时器控制/状态寄存器(88,H),1)启动控制位,TR0、TR1,=0,,,停止定时器工作;,=1,,启动定时器工作。,例:启动,T0:SETBTR0,2)溢出中断标志位,TF0、TF1,定时器溢出使,TFx,=1。,中断方式:,TFx,=1,引起中断请求,,CPU,响应,Tx,中断后,自动对,TFx,清0,。,软件查询方式:,可用软件检测,TFx,,,必须软件清0。,WAIT:JBC TF0,NEXT ;,检测,T0,是否溢出,SJMPWAIT ;,未溢出,继续检测,NEXT: ;,溢出,,TF0,清0,处理溢出,第四章,单片机的其他片内功能部件,3可预置初值的16位加1定时计数器,属于,SFR,中的一种,,T0,由,TH0、TL0,组成,,T1,由,TH1、TL1,组成。通过预设初值来定时。,预置,T0,初值指令:,MOVTH0,#X,MOVTL0,#XL,第四章,单片机的其他片内功能部件,二、,定时器工作方式,1.方式0,13位定时/计数器。,计数外部脉冲个数:18192(213)。,定时时间(12,MHz,,即:,T=1,s):1,s 8.192ms,。,C/T=0,C/T=1,由方式选择位,M1、M0,设定,第四章,单片机的其他片内功能部件,THx,高8位和,TLx,低5位组成13位加1计数器,例:计算得初值为7692,13位定时器,T0,应装初值多少?,7692化为16进制数1,E0CH,则,TH00FOH,TL0=0CH,第四章,单片机的其他片内功能部件,2.,方式,1,16,位定时/计数器。,THx8,位和,TLx8,位组成16位加1计数器,计数外部脉冲个数:165536(216),定时时间(,T=1,s):1,s 65536T= 65.54ms,C/T=0,C/T=1,第四章,单片机的其他片内功能部件,3.,方式2,自动恢复初值8位定时/计数器。,TLx,为8位加1计数器,,THx,为8位初值暂存器。,无需重装初值,用于需要重复定时和计数的场合。,最大计数值:256 (28),最大定时时间(,T=1,s): 256,s,第四章,单片机的其他片内功能部件,注意,:,方式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。,C/T=0,C/T=1,第四章,单片机的其他片内功能部件,4-2-3 定时器/计数器的初始化,1初始化步骤,1)给定时器方式寄存器,TMOD,送一个方式控制字,以设定定,时器/计数器的相应工作方式。,2)确定需要定时的时间和需要计数的初值,给定时器/计数器,送定时器初值或计数器初值。,3)给中断允许寄存器,IE,选送中断控制字和中断优先级寄存器,IP,选送中断优先级字,以开放相应中断和设定中断优先级。,4)给定时器控制寄存器,TCON,送命令字,以启动或禁止定时器,/计数器的运行。,第四章,单片机的其他片内功能部件,2,计数器初值的计算,TC=M,C,式中,,TC,为计数初值,,C,为计满所需要的计数个数,为计数器模数,该值和计数器工作方式有关。在方式时为,213,;在方式时为,216,;在方式和方式时为,28,。,4-2-3 定时器/计数器的初始化,第四章,单片机的其他片内功能部件,定时器初值的计算,T=(MTC) T,计数,上式也可写成:,TC=MT/ T,计数,式中,为模值,和定时器的工作方式有关;,T,计数,是单片机时钟周期,CLK,的12倍;,TC,为定时器的定时初值。,4-2-3 定时器/计数器的初始化,第四章,单片机的其他片内功能部件,例,4-7,若单片机时钟频率为,12,MHz,,,请计算定时,2,ms,所需,的定时器初值。,解:由于定时器工作在方式2和方式3下时的最大定时时间只有0.256,ms,,因此要想获得2,ms,的定时时间定时器必须工作在方式0或方式1。,若采用方式0,则根据公式可得定时器初值为:,TC=,MT/ T,计数,=,213,2*103/1=6192=1830H,即:,TH0,应装0,C1H;TL0,应装#10,H(,高三位为0),若采用方式1,则根据公式可得定时器初值为:,TC=2ms/1=63536=F830H,即:,TH0,应装#0,F8H;TL0,应装#30,H。,第四章,单片机的其他片内功能部件,例:,设8031时钟频率为12,MHz,,要求定时器,T0,定时50,ms,,写出初始化程序。,TC=M-T/T,计数216-50,ms/1us=15536=3CB0H,START: MOV TMOD #01H ;,方式1,MOV TH0,#3CH ;,装初值,MOV TL0,#0B0H,SETB TR0 ;,启动,T0,计数,WAIT:JBC TF0,TT0 ;,检测,T0,是否溢出,SJMP WAIT ;,未溢出,继续检测,TTO: MOV TH0, #3CH ;,重装初值,MOV TL0,#0B0H,CPL P1.0 ;,功能?,HERE: SJMP HERE,第四章,单片机的其他片内功能部件,4-3 串行接口,一.串行通讯的基本方式,(一).异步通讯,以字符为传送单位用起始位和停止位标识每个字符的开始和结束,,字符间隔不固定,只需字符传送时同步。,异步通讯常用格式:一个字符帧,(二).同步通信,每一数据块开头时发送一个或两个同步字符,使发送与接收双方取,得同步。数据块的各个字符间取消了起始位和停止位,所以通信速,度得以提高。,第四章,单片机的其他片内功能部件,二.串行接口功能,1.发送器:并,串数据格式转换,添加标识位和校验位,一帧发送结束,,设置结束标志,申请中断。,2.接收器:串,并数据格式转换,检查错误,去掉标识位,保存有效数据,,设置接收结束标志,申请中断。,3.控制器:接收编程命令和控制参数,设置工作方式:同步/异步、,字符格式、波特率、校验方式、数据位与同步时钟比例等。,4.串行数据传送方向,单工通讯:数据单向传送。,半双工通讯:数据可分时双向传送。,全双工通讯:可同时进行发送和接收,第四章,单片机的其他片内功能部件,三、串行接口控制器,1.数据缓冲器,SBUF,发送,SBUF,和接收,SBUF,共用一个地址99,H。,1),发送,SBUF,存放待发送的8位数据,写入,SBUF,将同时启动发送。,发送指令:,MOV SBUF,A,2),接收,SBUF,存放已接收成功的8位数据,供,CPU,读取。,读取串行口接收数据指令:,MOV A,SBUF,第四章,单片机的其他片内功能部件,2.串行口控制/状态寄存器,SCON(98H),SM2:,多机控制位,用于多机通讯。,REN:,允许接收控制位,,REN=1,,允许接收;,REN=0,,禁止接收。,TB8:,发送的第9位数据位,可用作校验位和地址/数据标识位,RB8:,接收的第9位数据位或停止位,T I:,发送中断标志,发送一帧结束,,TI=1,,必须软件清零,R I:,接收中断标志,接收一帧结束,,RI=1,,必须软件清零,SM0,SM1:,选择串行口4种工作方式,。,第四章,单片机的其他片内功能部件,波特率,:,每秒钟传送二进制数码的位数(,bit,数),单位是,bps(bit,per second)。,若波特率为1200,bps,,字符的实际传送速率为1200/10=120帧/秒。,3.,节电控制寄存器,PCON,SMOD(PCON.7):,波特率加倍控制位。,SMOD=1,,波特率加倍,,SMOD=0,,则不加倍。,第四章,单片机的其他片内功能部件,四、,串行接口的工作方式,SM0,SM1,选择四种工作方式。,(,1,)方式0:,同步移位寄存器方式。,用于扩展并行,I/O,接口。,1,.一帧8位,无起始位和停止位。,2,.,RXD:,数据输入/输出端。,TXD:,同步脉冲输出端,每个脉冲对应一个数据位。,3,.波特率,B = fosc/12,如:,fosc,=12MHz,B=1MHz,,每位数据占1,s。,4,.,发送过程:,先对,TI,清零,写入,SBUF,,,启动发送,一帧发送结束,,TI=1。,接收过程:,REN=1,且,RI=0,,,启动接收,一帧接收完毕,,RI=1,第四章,单片机的其他片内功能部件,串行输入、并行输出移位寄存器内部结构,第四章,单片机的其他片内功能部件,(2) 方式1,8位数据异步通讯方式。,1.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。,2.,RXD:,接收数据端。,TXD:,发送数据端。,3.波特率:,用,T1,作为波特率发生器,,B=(2,SMOD,/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保留采样值。,第四章,单片机的其他片内功能部件,(2) 方式,8位数据异步通讯方式。,写入,SBUF,采样,(,a),发送时序图,TXD,数据输出,TI,D,0,D,1,D,2,D,3,D,4,D,5,D,6,D,7,停止位,起始位,RXD,输入数据,(,b),接收时序图,D,0,D,1,D,2,D,3,D,4,D,5,D,6,D,7,停止位,起始位,RI,检测,负跳变,第四章,单片机的其他片内功能部件,(3) 方式2和方式3,9位数据异步通讯方式。,1,.一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。第9位数据位在,TB8/RB8,中,常用作校验位和多机通讯标识位。,2,.,RXD:,接收数据端,,TXD:,发送数据端。,3,.波特率: 方式2:,B=(2,SMOD,/64)fosc 。,方式3:,B=(2,SMOD,/32)T1,溢出率 。,4,.发送:先装入,TB8,,写入,SBUF,并启动发送,发送结束,,TI=1。,接收:,REN=1,,允许接收。接收完一帧,若,RI=0,SM2=0,或,RB8=1,将接收数据,装入接收,SBUF,,第9位装入,RB8,,使,RI=1;,否则丢弃接收数据,不置位,RI。,第四章,单片机的其他片内功能部件,(3) 方式2和方式3,9位数据异步通讯方式。,发,送,时,序,写入,SBUF,TXD,输出,TI,RXD,输入,接,收,时,序,RI,D,0,D,1,D,2,D,3,D,4,D,5,D,6,TB,8,停止位,起始位,D,7,D,0,D,1,D,2,D,3,D,4,D,5,D,6,RB,8,停止位,起始位,D,7,检测,负跳变,第四章,单片机的其他片内功能部件,(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/,fosc,T1,溢出率=1/,t=,fosc,/12(2n -X),波特率,B=(2SMOD /32)fosc/12(28-X),串行口方式1、3,根据波特率选择,T1,工作方式,计算时间常数。,T1,选方式2:,TH1=X= 28-fosc/122SMOD/(32B),T1,选方式1用于低波特率,需考虑,T1,重装时间常数时间。,第四章,单片机的其他片内功能部件,4-3-5 单片机双机通讯和多机通信,1.双机通讯,第四章,单片机的其他片内功能部件,串行口的应用,串行口初始化编程格式:,SIO:MOV SCON,#,H ;,方式字,且,TI=RI=0,MOV PCON,#80H ;,波特率加倍,MOV TMOD,#20H ;T1,作波特率发生器,方式2,MOV TH1, #X ;,选定波特率,MOV TL1, #X,SETB TR1,SETB EA ;,开串行口中断,SETB ES,第四章,单片机的其他片内功能部件,发送程序:先发送一个字符,等待,TI=1,后再发送下一个字符。,1.查询方式:,TRAM: MOV A,R0 ;,取数据,MOV SBUF,A ;,发送一个字符,WAIT: JBCTI,NEXT ;,等待发送结束,SJMP WAIT,NEXT: INCR0 ;,准备下一次发送,SJMP TRAM,2.中断方式:,ORG 0023H ;,串行口中断入口,AJMP SINT,MAIN: ;,初始化编程,TRAM: MOV A,R0 ;,取数据,MOV SBUF,A ;,发送第一个字符,H: SJMP H ;,其它工作,SINT: CLR TI ;,中断服务程序,INC R0,MOV A,R0 ;,取数据,MOV SBUF,A ;,发送下一个字符,RETI,第四章,单片机的其他片内功能部件,接收程序:,REN=1、RI=0,等待接收,当,RI=1,,从,SBUF,读取数据。,1.查询方式:,WAIT:JBC,RI,,NEXT ;,查询等待,SJMPWAIT,NEXT:MOVA,SBUF ;,读取接收数据,MOVR0,A ;,保存数据,INCR0 ;,准备下一次接收,SJMPWAIT,2.中断方式:,ORG0023H,AJMPRINT,MAIN: ;,初始化编程,H:SJMPH ;,其它任务,RINT:,CLRRI ;,清中断标志,MOVA,SBUF ;,读取接收数据,MOVR0,A ;,保存数据,INCR0,RETI,第四章,单片机的其他片内功能部件,(一,),串行口,方式0 用于扩展单片机的并行,I/,O,接口,串行口实现:并行串行的数据转换,74LS165/74LS164,实现:串行并行的数据转换。,(二)异步通讯程序举例,1.发送程序:,将片内,RAM 50H,起始单元的16个数由串行口发送。,要求发送波特率为系统时钟的32分频,并进行奇偶校验。,MAINT: MOV SCON,#80H;,串行口初始化,方式2,MOV PCON,#80H;,波特率,,SMOD=1,SETBEA,SETBES ;,开串行口中断,MOV R0,#50H ;,设数据指针,MOV R7,#10H ;,数据长度,LOOP: MOV A,R0 ;,取一个字符,MOV C,P ;,加奇偶校验,MOV TB8,C,MOV SBUF,A ;,启动一次发送,HERE:SJMPHERE;CPU,执行其它任务,第四章,单片机的其他片内功能部件,ORG 0023H,;,串行口中断入口,AJMP TRANI,TRANI:,PUSH A ;,保护现场,PUSH PSW,CLR TI ;,清发送结束标志,DJNZ R7,NEXT ;,是否发送完?,CLR ES ;,发送完,关闭串行口中断,SJMP TEND,NEXT: INC R0 ;,未发送完,修改指针,MOV A,R0 ;,取下一个字符,MOV C,P ;,加奇偶校验,MOV TB8,C,MOV SBUF,A ;,发送一个字符,POP PSW ;,恢复现场,POP A,TEND:RETI ;,中断返回,第四章,单片机的其他片内功能部件,2. 接收程序:串行输入16个字符,存入片内,RAM,的50,H,起始单元,串行口波特率为2400(设晶振为11.0592,MHz)。,RECS: MOV SCON,#50H ;,串行口方式1允许接收,MOV TMOD,#20H ;T1,方式2定时,MOV TL1,#0F4H ;,写入,T1,时间常数,MOV TH1,#0F4HSETB TR1 ;,启动,T1MOV R0,#50H ;,设数据指针,MOV R7,#10H ;,接收数据长度,WAIT: JBC RI,NEXT ;,等待串行口接收,SJMP WAIT,NEXT:MOV A,SBUF ;,读取接收字符,MOV R0,A ;,保存一个字符,INC R0 ;,修改指针,DJNZ R7,WAIT ;,全部字符接收完?,RET,第四章,单片机的其他片内功能部件,3. 接收程序:串行输入16个字符,进行奇偶校验。,RECS: MOV SCON,#0D0H ;,串行口方式3允许接收,MOV TMOD,#20H ;T1,方式2定时,MOV TL1, #0F4H ;,写入,T1,时间常数,MOV TH1, #0F4H,SETB TR1 ;,启动,T1,MOV R0, #50H ;,设数据指针,MOV R7, #10H ;,接收数据长度,WAIT: JBC RI,NEXT ;,等待串行口接收,SJMP WAIT,NEXT:MOV A,SBUF ;,取一个接收字符,JNB P,COMP ;,奇偶校验,JNB RB8,ERR ;PRB8,,数据出错,SJMP RIGHT ;P=RB8,,数据正确,COMP: JB RB8,ERR,RIGHT: MOV R0,A ;,保存一个字符,INC R0 ;,修改指针,DJNZ R7,WAIT ;,全部字符接收完?,CLR F0 ;F0 =0,,接收数据全部正确,ERR: SETB F0 ;F0 =1,,接收数据出错,RET,第四章,单片机的其他片内功能部件,4-4 中断系统,4.4.1 中断系统概述,一、中断的概念,中央处理器,CPU,正在处理某事件的时候,外部发生了更为紧急的事件,请求,CPU,暂停当前的工作,转入处理所发生的事情,处理完后,再回到被中断的地方,继续原来的工作,这样的过程称为中断。,第四章,单片机的其他片内功能部件,中断技术的优点:,提高,CPU,的效率。,提高实时数据的处理时效。,被控对象的实时参数、越限数据和故障信息为计算机及时采集,,以便应急处理。,故障处理,如掉电中断。,中断系统的功能:,中断优先权排队,根据轻重缓急排队,优先处理最紧急事件的中断请求。,实现中断嵌套,CPU,处理中断时,发生另一个优先级更高的中断请求,,CPU,转而,响应优先级更高的中断请求,处理完之后再回到原来中断服务程序。,自动响应中断,实现中断返回。,第四章,单片机的其他片内功能部件,二、中断系统结构,2个外部中断源信号:,INT0、INT1,2个定时器,T0、T1,溢出中断请求:,TF0、TF1,1个串行口数据发送、接收结束中断请求:,TI、RI,第四章,单片机的其他片内功能部件,三、中断控制寄存器,第四章,单片机的其他片内功能部件,四、中断控制寄存器中的各中断标志,1.,中断标志位,:,TF1、TF0、IE1、IE0、RI 、TI,TCON,SCON,登记各中断源请求信号:=1,有中断请求;=0,无中断请求。,CPU,响应中断后,各中断标志自动清零。,注意:,TI,RI,标志必须软件清零。,2.外部中断触发方式选择位:,IT0、IT1,=1,负边沿触发中断请求;=0,低电平触发中断请求。,第四章,单片机的其他片内功能部件,3.中断允许控制位:,EA、ES、ET1、EX1、ET0、EX0,IE,=1,,开中断;,=0,,关中断。,例:,允许,CPU,响应,T0,的中断请求,M,OV IE,#82H,或者,SETB ET0,SETB EA,4中断优先级控制位:,PS、PT1、PX1、PT0、PX0,IP,2级优先级:=1,为高优先级;=0,为低优先级。,同一优先级别按内部查询顺序排列优先级:,高,INT0、T0、INT1、T1、SIO,低。,五、中断控制寄存器中各控制位,第四章,单片机的其他片内功能部件,注意:,一种中断一旦得到响应,与它同级的中断不能再中断它。,低优先级中断可以被高优先级中断所中断,反之不能。,第四章,单片机的其他片内功能部件,4.4.2 中断处理过程,1.中断响应,(一)中断响应条件,1.有中断源发出中断请求;,2.中断总允许位,EA1,,即,CPU,开中断;,3.相应的中断允许位为1,即没有屏蔽。,(二) 响应过程,1.阻断同级或低级中断;,2.,PC,指针内容压栈保护;,3.相应中断入口地址装入,PC,程序转移到该中断入口地址单元。,第四章,单片机的其他片内功能部件,(三),中断响应阻断,1 .,当,CPU,未执行完一条指令。,2,当有同级或高级中断服务。,3,执行,RET、RETI,等指令后,不能立即响应中断。,4.4.2 中断处理过程,1.中断响应,第四章,单片机的其他片内功能部件,2.中断处理,注意:,(,1,)各中断源的入口矢量地址之间,相隔,8,个单元,通常是在中断入口矢量地址单元处存放一条无条件转移指令,转至存储器其他的任何空间去执行中断服务程序。,(,2,)若要在执行当前中断程序时禁止更高优先级中断,应用软件关闭,CPU,中断,或屏蔽更高级中断源的中断,在中断返回前再开放中断。,(,3,)在保护现场和恢复现场时,为了不使现场信息受到破坏或造成混乱,一般在此情况下,应关,CPU,中断,使,CPU,暂不响应新的中断请,求。,3.中断返回,中断返回指令:,RETI,= RET,指令 + 通知,CPU,中断服务已结束,。,第四章,单片机的其他片内功能部件,4.4.3 中断系统应用,中断服务程序的般格式如下:,CLREA ;,关中断,PUSH PSW ;,保护现场,PUSH A,SETBEA ;,开中断,允许,CPU,响应高级中断, ;服务程序,CLREA,;,关中断,POP A,;,恢复现场,POP PSW,SETBEA,;,开中断,RETI,;,中断返回,第四章,单片机的其他片内功能部件,1定时器/计数器的应用和编程,例,4,-,10,产生2,ms,的方波,ORG0000H,RESET,:,AJMP,MAIN,;,转主程序,ORG 000BH,;,转中断处理程序,AJMP,IT0P,ORG 0100H,MAIN,:,MOV SP,,,#60H,ACALL,PT0M0,HERE,:,SJMP HERE ;,等待中断,PT0M0:,MOVTL0,,,#0CH,;,T0,置初值,MOVTH0,,,#0F0H,SETBTR0,SETBET0,;,允许,T0,中断,SETB EA,;,CPU,开放中断,RET,第四章,单片机的其他片内功能部件,IT0P:,MOVTL0,#0CH ;T0,重新置初值,MOVTH0,#0F0H,CPLP1.0 ;P1.0,取反,RETI,第四章,单片机的其他片内功能部件,2,串行口的应用和编程,例,4-12,MAIN,:,MOV TMOD,,,#20H ;T1,,方式2,产生波特率,MOV,THl,,,#0FDH ;T1,装初值,MOV TL1,,,#0FDH,SETB,TRl,MOV SCON,,,#52H,;,选串行口方式,l,,,允许接收,,MOV R4,,,#0,;,R4,作字符串表指针,MOV DPTR,,,#TSAB,MLPl,:,MOV A,,,R4,MOVC A,,,A+DPTR,JZ MLP6,;,字符串以,0,表示结束,MLP3,:,JBC TI,,,MLP2 ;,判断上一位是否发送完,SJMP MLP3,MLP2,:,MOV SBUF,,,A ;,发送下一位,INC R4 ;,位指针加一,SJMP MLP1,第四章,单片机的其他片内功能部件,MLP6: JBC RI,MLP5,;,上一位接收完则接收下一位数,SJMP MLP6,;,未接收完则等待,MLP5: MOV A,SBUF,MLP8: JBC TI,MLP7,;,上一位发送完则发送下一位数,SJMP MLP8,;,未发送完则等待,MLP7: MOV SBUF,A,SJMP MLP6,TSAB: DB MCS-51 Microcomputer,DB 0AH,0DH,0,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!