版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、80C51有几个中断源,各中断标志是如何产生的,又如何清除的?CPU响应中断时,其中断入口地址各是多少?解:有5个中断源(1)/INT0 外部中断请求0,由引脚/INT0输入。当CPU采样到/INT0端出现有效中断请求时,中断请求标志位IE0硬件置1;响应中断后,转向中断服务时,硬件复位。(2)/INT1 外部中断请求1,由引脚/INT1输入。 当CPU采样到/INT1端出现有效中断请求时,中断请求标志位IE1硬件置1;响应中断后,转向中断服务时,硬件复位。(3)T0 定时器/计数器T0溢出中断请求。 T0计数溢出,中断请求标志为TF0(TCON.5)硬件置位;响应中断时,硬件复位。不使用
2、中断时用软件清0。(4)T1 定时器/计数器T1溢出中断请求。 T1计数溢出,中断请求标志为TF1硬件置位;响应中断时,硬件复位。不使用中断时用软件清0。(5)RX、TX 串行口中断请求。 发送完一帧,中断请求标志位TI硬件置位;响应中断后,必须软件清0; 接收完一帧,中断请求标志位RI硬件置位;响应中断后,必须软件清0。中断入口地址中断源 入口地址 外部中断0 0003H定时器/计数器T0 000BH外部中断1 0013H定时器/计数器T1001BH串行口中断0023H2、80C51单片机的中断系统中有几个优先级,如何设定?若扩充8个中断源,如何确定优先级? 80C51单片机的中断系统具有两
3、个中断优先级。中断优先级的设定:由专用寄存器IP统一管理,由软件设置每个中断源为高优先级中断或者低优先级中断。可实现两级中断嵌套。其格式如下:(1)PS 串行口中断优先级控制位 1:高优先级中断;0:低优先级中断。(2)PT1 定时器T1中断优先级控制位 1:高优先级中断;0:低优先级中断。(3)PX1 外部中断1中断优先级控制位 1:高优先级中断;0:低优先级中断。(4)PT0 定时器T0中断优先级控制位 1:高优先级中断;0:低优先级中断。(5)PX0 外部中断0中断优先级控制位 1:高优先级中断;0:低优先级中断。 可以采用中断和查询结合的方法确定优先级。可以用8个外部中断请求源IR1I
4、R8用“线或”的办法连到MCS-51的一个外中断源输入端,同时还连到P1口。当8个扩充中断源中有一个或几个出现高电平,OC门输出为0,使得/INT0、/INT1为低电平触发中断,所以这些扩充的外中断源都是电平触发方式(高电平有效)。这8个扩充中断源的输入信号同时接到8个I/O口上。在外中断服务程序中,由软件按照人为设定的顺序(优先级)查询外中断源哪位是高电平,然后进入该中断处理。 高电平有效:这些扩充的外中断都是电平触发方式优先级:由软件按人为设定的查询顺序决定 EXINT:PUSHPSW PUSHACCJBP1.0,SAV1 ;P1.0高,IR1有请求JBP1.2,SAV3 ;P1.2高,I
5、R3有请求JBP1.1,SAV1 ;P1.1高,IR2有请求JBP1.3,SAV4 ;P1.3高,IR4有请求DISUB:POPACCPOPPSWRETISAV1:XI1中断服务程序1AJMPDISUBSAV2:XI1中断服务程序2AJMPDISUBSAV3:XI1中断服务程序3AJMPDISUBSAV4:XI1中断服务程序4AJMPDISUB/INT1的中断服务程序如下: 优先级顺序依此为:IR1、IR3、IR2、IR4。3、中断子程序返回指令与调用子程序返回指令有何异同? 相同点:都是作为最后一条指令,起返回作用。不同点: RET指令必须作子程序的最后一条指令;RETI必须作中断服务程序的
6、最后一条指令。 RETI指令除恢复断点地址外,还恢复CPU响应中断时硬件自动保护的现场信息。执行RETI指令后,将清除中断响应时所置位的优先级状态触发器,使得已申请的同级或低级中断申请可以响应;而RET指令只能恢复返回地址。第六章串行通信口第6章 MCS-51的串行通信口第五节串行通信口概述第六节串行口结构与工作原理第七节 串行控制寄存器和特殊功能寄存器第八节串行通信工作方式第九节串行口应用举例第十节 多机串行通信技术6.5串行通信口概述串行通信:所传送数据的各位按顺序一位一位地发送或接收。经济,但速度慢。并行通信:所传送数据的各位同时发送或接收。速度快,但价格贵。 串行通信中的几个概念一、传
7、送编码 因为单根通信线仅能表示0和1两种状态,而需传送的信息中有字母、数字和字符等,这就要用二进制数对传送字符编码。 常用的主要有美国标准信息交换码ASCII和扩展的BCD码EBCDIC,后一种是8位编码,较常用在同步通信中。 二、同步和异步方式1、 异步通讯ASYNC(Asynchronous Data Communication):数据以一个字符为单位进行传送,一帧一帧地传送; 在帧格式中先用一个起始位“0”表示字符的开始; 5-8位数据,规定低位在前,高位在后; 奇偶校验位(可省略) 停止位“1”表示字符的结束D0D1D2D3D4D5D6D7PD0D01 01 0N-1 第N个字符(一串
8、行帧) N+12、同步通讯(速度快,但硬件结构要求高) 在数据或字符开始处用一同步字符来指示(常约定12个),由时钟来实现发送端和接收端同步。一旦检测到与规定的同步字符符合,下面就连续按照顺序传送数据。 SYN字符1 SYN字符2 连续传送的数据 波特率是异步通信中对数据传送速率的规定,其意义是每秒钟 传送多少位二进制数。 例如:数据传送的速率每秒为120个字符,每个字符由1个起始位、 8个数据位和1个停止位组成,则其传送波特率为: 10*120=1200b/s=1200波特 每一位的传送时间即为波特率的倒数: Td=1/1200=0.833ms 异步通信的传送速度一般在50到9600波特之间
9、。三、波特率四、通信方向1、单工传送:只能发送或接收,这种单向传送的方法称单工传送;2、半双工传送:数据可在两机之间双向传送,但接收和发送不能 同时进行,只能分时接收和发送;3、全双工传送:两机的发送和接收可以同时进行。 图 串行通信数据传送的三种方式(a) 单工方式;(b) 半双工方式;(c) 全双工方式五、信号的调制与解调 异步通信有距离的限制,传输距离较远时,信号衰减、频带不够宽,因此,用调制器把数字信号转换成模拟信号,并加以放大再传送,这个过程叫调制。 在接收时,再用解调器检测此模拟信号,并把它转换成数字信号再送入计算机接口,这个过程即解调。 6.6 串行口的结构与工作原理双缓冲结构T
10、IRI串行口内部,两个物理上独立地接收和发送缓冲器,可同时收、发数据。两个缓冲器共用一个特殊功能寄存器字节地址:SBUF(99H)输入数据先进入输入移位寄存器,再送入接收SBUF。在此采用了双缓冲结构,这是为避免在接收到第二帧数据之前,CPU未及时响应接收器的前一帧中断请求,没把前一帧数据读走,而造成两帧数据重叠的错误; MOV A,SBUF 对于发送器,因为发送时CPU是主动的,不会产生写重叠问题,一般不需要双缓冲器结构,以保持最大传送速率。 MOV SBUF,A当接收或发送完一串行帧时,置位内部串行口中断请求标志RI或TI,请求中断。控制寄存器共两个:特殊功能寄存器SCON和PCON。6.
11、7 串行口控制寄存器和特殊功能寄存器SCON中断标志位工作方式选择位多机通信控制、数据位PCON波特率选择位串行口控制寄存器特殊功能寄存器一、串行口控制寄存器SCON 字节地址98H,可位寻址,格式如图所示。(1)SM0、SM1串行口4种工作方式的选择位 SM0 SM1 工作方式 功 能 波特率 0 0 方式0 同步移位寄存器方式 fosc/12 0 1 方式1 8位异步通信方式 可变 1 0 方式2 9位异步通信方式 fosc/64或fosc/32 1 1 方式3 9位异步通信方式 可变(2)REN允许串行接收位 由软件置“1”或清“0”。 REN=1 允许串行口接收数据。 REN=0 禁止
12、串行口接收数据。(3)TB8发送的第9位数据 方式2和3时,TB8是要发送的第9位数据。 可作为奇偶校验位使用; 也可作为地址帧或数据帧的标志: =1为地址帧, =0为数据帧。(4)RB8接收到的第9位数据 方式2和3时,RB8存放接收到的第9位数据。 在方式1,如果SM2=0,RB8是接收到的停止位。 在方式0,不使用RB8。方式2、3SM2=1RB8=0RB8=1SM2=0无论RB8为何值不启动接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃将接收到的前8位数据送入SBUF,并置位RI,产生中断请求(5)SM2 多机通信控制位(用于方式2或方式3中)(5)SM2 多机通信控制位
13、(用于方式2或方式3中)方式1中,当处于接收时,若SM2=1,则只有接收到有效的停止 信号为止,RI 才置1。方式0中SM2 应置0。 (6)TI发送中断标志位 方式0时,串行发送第8位数据结束时由硬件置“1”, 其它工作方式,串行口发送停止位的开始时置“1”。 TI=1,表示一帧数据发送结束,可申请中断,也可供软件查询。CPU查询或响应中断后,向SBUF写入要发送的下一帧数据。TI必须由软件清0。(7)RI接收中断标志位 方式0时,接收完第8位数据时,RI由硬件置1。 其它工作方式,串行接收到停止位时,该位置“1”。 RI=1,表示一帧数据接收完毕,可申请中断,也可供软件查询。CPU查询或响
14、应中断后,从接收SBUF取走数据。RI必须由软件清“0”。二、特殊功能寄存器PCON 字节地址为87H,没有位寻址功能。 SMOD 波特率选择位。 SMOD位也称为波特率倍增位。波特率的制定方法1、波特率的定义 波特率是异步通信中对数据传送速率的规定,其意义是每秒钟传送多少位二进制数。2、各工作方式下的波特率时钟频率fosc/12方式0方式1方式2方式3(2SMOD/32)T1的溢出率(2SMOD/32)T1的溢出率(2SMOD/64) fosc(3)方式1或方式3时,波特率的计算 实际设定波特率时,常设置T1为方式2定时(自动装初值)。可避免因软件重装初值而带来的定时误差。 溢出周期为:(1
15、2/Fosc) (256-X) 溢出率为溢出周期的倒数。则波特率的计算公式为: 波特率=(2SMOD/32)T1的溢出率 定时器T1方式2的初始值为:常用的波特率和初值X间的关系列成表6-2(P130),以供查用。两点需要注意:时钟振荡频率为12MHz或6MHz时,表中初值X和相应的波特率之间有一定误差。例如,FDH的对应的理论值是10416波特(时钟6MHz)。与9600波特相差816波特,消除误差可以调整时钟振荡频率fosc实现。例如采用的时钟振荡频率为11.0592MHz。(2) 如果串行通讯选用很低的波特率,例如,波特率选为55,可将定时器T1设置为方式1定时。但在这种情况下,T1溢出
16、时,需用在中断服务程序中重新装入初值。中断响应时间和执行指令时间会使波特率产生一定的误差,可用改变初值的方法加以调整。例 若8051单片机的时钟振荡频率为11.0592MHz,选用T1为方式2定时作为波特率发生器,波特率为2400b/s,求初值。 设SMOD=0, =25611.0592 106 1/(384 2400) =244=F4H所以TH1=TL1=F4H 上述结果可直接从表中查到。 6.8 串行口的4种工作方式一、方式0 同步移位寄存器输入/输出方式 特点TXD和RXD 方式0发送方式0接收波特率固定为fosc/12; SM2位必须为0;一帧数据为8位,不设起始位和停止位。先发送或接
17、收最低位。 MOV SBUF,A启动发送;发送完8位数据置中断标志位TI 为“1”。串行数据由RXD(P3.0)端输入或输出;同步移位脉冲由TXD(P3.1)端送出。置位允许接收控制位REN=1,启动接收;接收完8位数据置中断标志位RI 为“1”; MOV A,SBUF常用于外接移位寄存器,以扩展并行I/O口帧格式1方式0发送 2方式0接收 REN=1接收缓冲器SBUF以fosc/12的固定波特率采样RXD引脚的数据信息 当数据写入SBUF后,在移位脉冲(TXD)的控制下,数据从RXD端逐位移入74LS164。 74LS164能完成数据的串并转换,并行输出。外接移位寄存器扩展并行I/O口 数据
18、发送 REN置为1,在移位脉冲(TXD)的控制下,数据从RXD端输入。当接收到8位数据时,置位接收中断标志位RI,发生中断请求。 通过外接74LS165,串行口能够实现数据的并行输入。外接移位寄存器扩展并行I/O口 数据接收二、方式1(8位异步通信方式 ) 特点TXD和RXD 方式1发送方式1接收波特率=(2SMOD/32)定时器T1的溢出;一帧数据为10位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。 MOV SBUF,A启动发送;发送完8位数据置中断标志位TI 为“1”。方式1发送时,数据由TXD输出;方式1接收时,数据从RXD输入。当检测到起始位的负跳变时,开始接
19、收数据; 同时满足才有效:RI=0SM2=0或接收到停止位=1 ; MOV A,SBUF帧格式 1方式1发送 2方式1接收 当采样到RXD端从1到0的跳变时就启动检测器;接收的值是3次连续采样(第7、8、9个脉冲时采样),三中取二。提高可靠性有条件当一帧数据接收完,须同时满足两个条件,接收才真正有效: RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中的数据已被取走,说明“接收SBUF”已空。 SM2=0或接收到停止位(=1),则收到的数据装入SBUF(停止位装入RB8),且置“1”中断标志RI。若这两个条件不同时满足,收到的数据将丢失。三、方式2(9位异步通信方式
20、) 特点TXD和RXD 方式1发送方式1接收波特率= (2SMOD/64)fosc 一帧数据为11位,1个起始位(0),8个数据位, 1位可程控的第9位数据1个停止位。 软件设置TB8; MOV SBUF,A启动发送;发送完8位数据置中断标志位TI 为“1”。方式2发送时,数据由TXD输出;方式2接收时,数据从RXD输入。当检测到起始位的负跳变时,开始接收数据; 同时满足才有效:RI=0SM2=0或SM2=1时第9位数据=1 ; MOV A,SBUF帧格式双机通讯时的奇偶校验位或多机通讯时的地址/数据的标志位D81方式2发送 有条件第9位数据送入RB8 在接收器完第9位数据后,需满足两个条件,
21、才能将接收到的数据送入SBUF。 (1)RI=0,意味着接收缓冲器为空。 (2)SM2=0或SM2=1时第9位数据=1。 上述两个条件满足时,接收到的数据送入接收缓冲器SBUF,第9位数据送入RB8,并置“1”RI。 若不满足两个条件,接收的信息将被丢弃。四、方式3(波特率可变的9位异步通信方式) 除波特率外,方式3和方式2相同。 方式3的时序见方式2。 方式3波特率=(2SMOD/32)定时器T1的溢出率6.9 串行口的编程和应用方式0举例,用串行口扩展I/O口 例 用并行输入8位移位寄存器74LS165作为扩展输入口。 下图是利用8051的3根口线扩展为16根输入口线的实用电路,其由2块
22、74LS165串接而成(前级的数据输出位QH与后级的信号输入端SIN相连)。 现编程从16位扩展口读入20个字节数据(读十次),并把它们转存到内部RAM的50H63H中。 P3.0 8051 P3.1 P1.0QH SIN 74LS165 S/L CKQH 74LS165 S/L CK+5VD0D7D0D76129111516810TXDRXD1、移位寄存器165并入串出,因此需要置数;2、由于每次由扩展口并行输入到移位寄存器的是两个字节数据,置入一次,串行口应接收二帧数据;3、程序中设F0作为读入字节的奇偶性标志。当已接收的数据字节数为奇数时F00,不再并行输入数据就直接启动接收过程;当F0
23、1,在启动接收过程前,应该先在外部移位寄存器中置入新的数据;4、接收缓冲器SBUF以fosc/12的固定波特率采样RXD引脚的数据信息,当收到8位数据时置“1” RI,表示一帧数据接收完。判断RI状态,读入缓冲器数据。思路 MOV R7,#14H ; 设置读入字节数 MOV R0,#50H; 设片内RAM指针 SETB F0; 设置读入字节奇偶数标志RCV0:CLR P1.0 ; 并行口输入数据,允许74165串行移位 SETB P1.0 RCV1: MOV SCON,#10H ; 设串行口方式0并启动接收 JNB RI,$; 等待接收一帧数据 CLR RI ; 清接收中断标志 MOV A,S
24、BUF ; 取缓冲器数据 MOV R0,A INC R0 CPL F0 JB F0,RCV2 ; 判是否接收完偶数帧,接收完则重新并行置入 DEC R7 SJMP RCV1 ; 否则再接收一帧RCV2: DJNZ R7,RCV0; 判是否已读入预定的字节数 由于74LS164无并行输出控制端,在串行输入过程中,其输出端的状态会不断变化,故在某些场合,在74LS164与输出装置之间,还应加上输出可控的缓冲级(如74LS244),以便串行输入过程结束后再输出。 图中的输出装置是2位共阳级七段显示发光二极管,采用静态显示方式。由于74LS164在低电平输出时,允许通过电流可达8mA,故不需再加驱动电
25、路。与动态扫描显示比较,静态显示方式的优点是CPU不必频繁的为显示服务,软件设计比较简单,很容易做到显示不闪烁。 编程把片内20H、21H中的数字取出,由串行口送给显示器,显示相应的数字。例 用8位并行输出串行移位寄存器74LS164作为扩展输出口。 +5V P3.08051 P3.1 P1.0 QA QHA,B 74LS164 CLR CK QA QHA,B 74LS164 CLR CK+5V 共阳极LED 。 g a 共阳极LED 。 g a3131,298714MOV R7,#02H; 设置显示位数MOV R0,#20H ; 设显示数据区指针MOV SCON,#00H ; 设串行口方式0
26、DISP1:MOV A,R0MOV DPTR,#TABHMOVC A,A+DPTR; 取显示码MOV SBUF,A; 启动串行口发送过程JNB TI,$ ; 等待接收一帧数据CLR TI; 清串行口发送中断标志INC R0; 修改指针取下一个数DJNZ R7,DISP1RETTAB:DB C0H,F9H,A4H,B0H,99H;0,1,2,3,4的显示代码DB 92H,82H,F8H,80H,98H;5,6,7,8,9的显示代码例:双机通信,甲机发送乙机接收,波特率2400,晶振6MHz, T1作为波特率发生器,串行口工作在方式1。 甲机送出数据为 50H开始的16个字节数据。 乙机接收数据存
27、放在3000H300FH 单元中(外部RAM) 解:双机通信串行口工作在方式1,定时器T1工作在方式2。 定时常数:若SMOD=0,则 =249.49,误差较大。 取SMOD=1,则 =242.98=243=F3H, 误差较小。方式1举例 发送程序: MOV TMOD,#20H;定时器(波特率)初始化MOV TL1,#0F3H MOV TH1,#0F3HSETB TR1 MOV SCON,#40H ;串行口初始化MOV PCON,#80HMOV R0,#50HMOV R7,#10HTRS:MOV A,R0MOV SBUF,A;启动串行口发送过程WAIT:JBC TI,CONTAJMP WAIT
28、CONT:INC R0DJNZ R7,TRSRET接收程序: MOV TMOD,#20H ;定时器(波特率)初始化MOV TL1,#0F3H MOV TH1,#0F3HSETB TR1 MOV SCON,#50H ;串行口初始化MOV PCON,#80HMOV DPTR,#3000HMOV R7,#10HWAIT:JBC RI,READAJMP WAIT;等待接收一帧数据READ:MOV A,SBUF;取缓冲器数据MOVX DPTR,AINC DPTRDJNZ R7,WAITRET波特率? 编程把甲机片内RAM50H5FH单元中的数据块从串行口输出。乙机从甲机接收16字节数据块,并存入片外30
29、00H300FH单元。接收过程要求判断奇偶校验标志RB8。若出错置F0标志为1,正确置F0标志为0。然后返回。要求:定义工作方式3发送,TB8作奇偶校验位。 采用定时器1方式2作波特率发生器,波特率为1200, Fosc=11.0592MHZ分析: 预置值TH1=0F8H。方式3举例发送: MOVTMOD,#20H;设置定时器1为方式2MOVTL1,#0F8H;设置预置值;MOVTH1,#0F8HSETBTR1;启动定时器1MOVSCON,#0C0H;设置串行口为方式3MOVPCON,#00H;SMOD=0MOVR0,#50H;设数据块指针MOVR7,#10H;设数据长度TRS:MOVA,R0
30、;取数据到AMOVC,PMOVTB8,C;奇偶位P送TB8MOVSBUF,A;数据送SBUF,启动发送WAIT:JBCTI,CONT;判一帧是否发送完AJMPMAIT;未完等待CONT:INCR0;更新数据单元DJNZR7,TRS;循环发送至结束RET;返回接收: MOVTMOD,#20H;设置定时器1为方式2MOVTL1,#0F8H;设置预置值MOVTH1,#0F8HSETBTR1;启动定时器1MOVSCON,#0C0H;设置串行口为方式3MOVPCON,#00H;SMOD=0MOVDPTR,#3000H;设置数据块指针MOVR7,#10H;设数据块长度SETBREN;允许接收WAIT:JB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 船舶行业合同(2篇)
- 幼儿园圣诞节庆祝活动方案
- 农田灌溉PE管道施工方案
- 艺体教师培训与发展总结
- 小麦滴灌安装合同(2篇)
- 医院建筑分布式光伏发电方案
- IT技术合作协议范本
- 国有企业党建工作督导检查实施方案
- 南宁2024年统编版小学五年级英语第一单元期中试卷
- 制造业员工三基培训考核标准
- (新版)糖尿病知识竞赛考试题库300题(含答案)
- CHT 1027-2012 数字正射影像图质量检验技术规程(正式版)
- 教学成果奖培育思考
- 河北省廊坊市药品零售药店企业药房名单目录
- 毕业设计(论文)叉车液压系统设计
- 研发项目立项管理流程总体思路.doc
- 室内装饰装修工程施工组织设计方案(完整版)
- 榆林市第十二中学第二个五年发展规划
- 日本城市生活垃圾处理现状及发展趋势
- 盘县红果镇上纸厂煤矿(技改)45万ta项目环境影响评价报告书
- 维修电工高级实操考核内容
评论
0/150
提交评论