ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:334.94KB ,
资源ID:6732965      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6732965.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(串行中断寄存器控制.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

串行中断寄存器控制.docx

1、串行中断寄存器控制串行通信中断及应用1中断允许控制寄存器IE 只开启串行通信 SETB EA SETB ES 或者 MOV IE,#90H2设置串行中断优先级(控制寄存器IP、IPH)中断源的中断优先级由IPH、IP对应位编码决定IPH.X位 IP.X位 优先级 0 0 0级(优先级最低) 0 1 1级 1 0 2级 1 1 3级(优先级最高)例如串行中断优先级最高 MOV IP,#0C0H MOV IPE,#0C0H 或者 SETB PS MOV IPE,#0C0H(IPH没有位地址功能)3 入口地址定时/计数器T1溢出中断 001BH串行口中断 0023H ORG 00H AJMP ? O

2、RG 1BH AJMP ? ORG 23H AJMP ? 4串行口控制寄存器SCON 5 进入中断服务程序后,(1)CPU能自动清除下列中断请求标志位: 定时器T0中断请求标志TF0; 定时器T1中断请求标志TF1; 边沿触发方式下外中断的中断请求标志IE0; 边沿触发方式下外中断的中断请求标志IE1。不自动清除串行发送结束中断标志TI、串行接收有效中断标志RI、定时/计数器T2溢出中断标志TF2、定时/计数器T2外触发标志EXF2(2)每一次发送和接受后都要软件清零 :串行发送结束中断标志TI、串行接收有效中断标志RI、如 CLR TICLR RI可用T1,T2溢出率的(16或)32分频作为

3、串行口发送、接收波特率 9电源控制寄存器 PCON(电源控制寄存器PCON不能对位操作)SMODGF1GF0PDIDLSMOD=0 SMOD=1位被称为波特率倍增位 为了避免重装初值造成的定时误差,定时器T1最好工作在可自动重装初值的方式2,并禁止定时器T1中断。 TL1=?、TH1= TL1=?做TL1的备份(自动重装初值,TH1和TL1初装相同的值)串行通信系统中常用波特率衡量通信的快慢,含义是每秒中传送的二进制数码的位数,单位是位/秒(b/s或Kb/s),方式1、方式3计算公式串行方式1串行数据(低位在前,高位在后) 10位0B0B1B6B71起始位 低位数据数据数据数据数据数据高位停止

4、位串行方式3起始位(0)、9位串行数据、一位停止位(1)共11位 例 假设系统晶振频率为11.0592 MHz,通信方式约定为:波特率2400,8位数据,奇校验。利用串行口方式3,将存放在内部RAM 30H4FH单元中32字节数据发送给串行接收设备。如果接收方正确接收了32字节信息,则回送AAH;否则回送55H。 根据系统晶振频率及通信波特率,用定时器T1工作在方式2的溢出率作为波特率发生器(16分频器)的输入信号,参考程序如下: ; 初始化定时器T1 FHbit BIT 07H ; 07H位单元作为通信成功标志,0表示通信成功;1表示失败 MOV A, TMOD ANL A, #0FH OR

5、L A, #00100000B ; 定时器T1工作在方式2(即自动重装初值),定时状态,由TR1控制 MOV TMOD, A MOV TL1, #0F4H MOV TH1, #0F4H ; 波特率为2400 CLR ET1 ; T1用作波特率发生器,禁止T1中断 SETB TR1 ; 启动定时器T1 ; 初始化串行通信口MOV SCON, #11000000B ; 方式3,SM2位为0,以便接收奇偶校验位MOV PCON, #00H ; 波特率不倍增; 将304FH缓冲区内32字节发送给接收方CLR FHbit ; 成功标志清零 MOV R0, #30H ; 发送数据缓冲区首地址送R0 MOV

6、 R7, #20H ; 发送字节数送R7 CLR TI ; 清除TILOOP1: MOV A, R0 ; 取发送数据 MOV C, PSW.0 ; 取奇偶标志 MOV TB8, C ; 奇偶标志送TB8 MOV SBUF, A ; 数据送SBUF寄存器,启动发送过程LOOP2: JNB TI, LOOP2 ; 如果TI不是1就循环,等待发送中断标志有效 CLR TI ; 清除TI,以便发送下一字节 INC R0 ; 数据指针加1,指向缓冲区内下一数据 DJNZ R7, LOOP1 ; 指定字节数据未发送结束,循环 ; 发送结束,准备接收返回码 CLR RI ; 清除接收中断标志 SETB RE

7、N ; 允许接收 LOOP3: JNB RI, LOOP3 ; 等待接收中断有效 CLR REN ; 停止接收 MOV A, SBUF ; 把结果送A XRL A, #0AAH ; 返回码与AAH异或 JZ REEND ; 如果返回码是AAH,则退出 SETB FHbit ; 如果返回码不是AA,则将接收成,功标志为1(即失败)REEND: RET当串行通信的波特率较高时,多采用查询方式来确定一帧信息是否发送结束,如本例所示。对于接收过程来说,如果不能确定发送方是否会发送信息以及什么时候发送时,最好使用中断方式。为此,上例发送、接收程序段改为(发送过程采用查询方式;接收过程采用中断方式; 初始

8、化定时器T1FHbit BIT 07H ; 07H位单元作为通信成功标志,0表示通信成功;1表示失败。MOV A, TMODANL A, #0FHORL A, #00100000B ; 定时器T1工作在方式2(即自动重装初值),定时状态,由TR1控制MOV TMOD, AMOV TL1, #0F4HMOV TH1, #0F4H ; 波特率为2400CLR ET1 ; T1用作波特率发生器,禁止T1中断SETB TR1 ; 启动定时器T1;初始化串行通信口MOV SCON, #11000000B ; 方式3,SM2位为0,以便接收奇偶校验位MOV PCON, #00H ; 波特率不倍增; 将30

9、4FH缓冲区内32字节发送给接收方CLR FHbit ; 成功标志清零MOV R0, #30H ; 发送数据缓冲区首地址送R0MOV R7, #20H ; 发送字节数送R7CLR ES ; 禁止串行中断,即在发送过程中,采用查询方式CLR TI ; 清除TI LOOP1: MOV A, R0 ; 取发送数据 MOV C, PSW.0 ; 取奇偶标志 MOV TB8, C ; 奇偶标志送TB8 MOV SBUF, A ; 数据送SBUF寄存器,启动发送过程 LOOP2: JNB TI, LOOP2 ; 如果TI不是1就循环,等待发送中断标志有效 CLR TI ; 清除TI,以便发送下一字节 IN

10、C R0 ; 数据指针加1,指向缓冲区内下一数据 DJNZ R7, LOOP1 ; 指定字节数据未发送结束,循环 ; 发送结束,准备接收返回码 CLR RI ; 清除接收中断标志 SETB REN ; 允许接收 SETB ES ; 允许串行中断,即在接收过程中采用中断方式 RET ; 返回 ; 串行口中断服务程序UART: PUSH Acc ; 保护累加器Acc PUSH PSW MOV A, SBUF ; 把结果送A XRL A, #0AAH ; 返回码与AAH异或 JZ REEND ; 如果返回码是AAH,则退出 SETB FHbit ; 如果返回码不是AA,则将接收成功标志 为1(即失败

11、)REEND: CLR REN ; 停止接收 CLR RI ; 清除接收中断标志 POP PSW POP Acc RETI 多机通信 主机与特定从机的通信过程如下: (1) 主机发送从机地址(TB8位为1),然后进入接收状态,接收从机应答信号(实际上就是相应从机的地址信息)。 (2) 所有从机均接收主机送出的地址信息,并与本机地址比较,当接收到的地址信息与本机地址相符时,表示被选中,将本机地址信息发给主机,然后执行“CLR SM2”指令,使SM2位为0,以便接收主机随后送出的数据信息。对于未被选中的从机,SM2位依然为1,因此不接收主机送出的数据信息。 (3) 主机收到从机的应答信号后,发出数

12、据信息(TB8位为0)。 (4) 从机正确接收主机数据信息后,发应答信号给主机,并将SM2置1,主机与从机通信过程结束。 从机与主机的通信过程如下: (1) 发送前从机先检测TXD引脚,如果在(20/波特率)时间内,TXD引脚依然为高电平,则表明没有其他从机给主机发送信息,主机的RXD引脚处于空闲状态。 (2) 从机确认主机的RXD引脚处于空闲状态后,发出地址信息 (TB8位为1) 到主机。 (3) 从机收到主机的应答信号(实际是从机地址信息)后,发送数据(TB8位为0)给主机,然后令从机的SM2为0,以便接收主机发送的接收正确信号。 (4) 主机正确接收后,再发接收正确信号给从机。 (5)

13、从机收到主机发来的“接收正确”信号后,表明通信过程结束可将SM2位置1,以便从机能接收主机发送的地址信息。 帧错误检测 增强型UART口通过检测“停止位”的有无来判别方式2、3下的串行接收是否正确,这就是所谓的“帧错误检测”功能。在增强型UART口中,SCON寄存器的b7位具有SM0/FE(Fram Error)双重功能(由PCON寄存器的b6,即SMOD0位控制:当SMOD0位为0时,SCON寄存器的b7位是SM0;而当SMOD0位为1时,SCON寄存器的b7位是FE)。当接收不到有效停止位时,SCON寄存器的b7位(即FE)置1。当FE为1时,表示接收的数据无效,不装入SBUF寄存器,RI

14、也不置1。 帧错误检测仅对方式2、3有效,原因是方式0不能用于串行通信,而方式1本身就具有停止位检测功能,只是没有记录检测结果而已,因为在方式1中,只有接收到有效的停止位时,RI才有效启用帧错误检测功能的串行口初始化过程如下: 初始化定时器T1或T2,定义串行口接收波特率初始化SCON寄存器,定义串行口工作方式(只能是2或3)执行“ORL PCON, #40H”指令将PCON.6位置1,使SCON.7位具有FE功能执行“CLR RI”指令,清除接收中断执行“SETB REN”启动接收过程检测FE标志(如果FE标志有效,则说明收不到有效停止位,数据出错;反之,如果FE无效,而RI有效,则说明数据

15、接收正确)。 值得注意的是,FE有效后,即使下一数据帧能正确接收也不自动清除,因此FE有效,在完成错误信号处理后需要手工清除。 地址自动识别 在方式2、3中,SM2位可作多机通信控制位。当SM2位为1时,只有收到的第九位数据,即RB8为1时,RI才有效;而当SM2位为0时,便放弃对地址的识别,一律视为数据处理。采用硬件地址自动识别技术后,只要从机的SM2位为1,则收到的第一帧信息必然是本机的地址信息,可立即将从机的SM2位置0,接收主机随后送来的数据信息,无须判别所收到的地址信息是否就是本机地址,待数据接收结束后,便立刻将SM2位置1,等待下一次通信,于是提高了主从机之间的通信效率。 从图4-

16、26中看出,采用地址自动识别功能后,有效接收条件是:主机发出的地址与从地址屏蔽码SADEN按位相与后和从机地址寄存器SADDR比较,若相同,则相应从机接收中断有效。这样主机通过发出特定从机地址与单一从机通信、通过发出给定地址与一组从机通信、通过发出广播地址与所有从机通信。构造从机地址编码、从机地址屏蔽码的方法很多,例如在一主四从多机系统中,从机地址码和从机地址屏蔽码可按如下方法构造: 从机编号 0机 1机 2机 3机从机地址屏蔽码 1010 0001 1010 0010 1010 0100 1010 1000从机地址码 1111 0000 1111 0000 1111 0000 1111 00

17、00SADEN和SADDR相与 1010 *0 1010 *0* 1010 *0* 1111 0*选定123机地址1010 0001 不 中 中 中选定023机地址 1010 0010 中 不 中 中选定013机地址 1010 0100 中 中 不 中选定012机地址 1010 1000 中 中 中 不选定0机地址1010 1110 中 不 不 不选定1机地址1010 1101 不 中 不 不选定2机地址1010 1011 不 不 中 不选定2机地址1010 0111 不 不 不 中广播地址码 1111 0000 中 中 中 中 RS-232C串行接口标准中主信道重要信号含义 RS-232C串

18、行接口标准主信道重要信号含义: TXD:串行数据发送引脚,输出。 RXD:串行数据接收引脚,输入。 DSR:数据设备(DCE)准备就绪信号,输入,主要用于接收联络。当DSR信号有效时,表明本地的数据设备(DCE)处于就绪状态。 DTR:数据终端(DTE)就绪信号,输出。用于DTE向DCE发送联络,当DTR有效时,表示DTE可以接收来自DCE的数据。 RTS: 发送请求,输出。当DTE需要向DCE发送数据时,向接收方(DCE)输出RTS信号。 CTS:发送允许或清除发送,输入。作为“清除发送”信号使用时,由DCE输出,当CTS有效时,DTE将终止发送(如DCE忙或有重要数据要回送DTE);而作为

19、“允许发送”信号使用时,情况刚好相反:当接收方接收到RTS信号后进入接收状态,就绪后向请求发送方回送CTS信号,发送方检测到CTS有效后,启动发送过程。 图4-27 RS-232C接口插座25芯D型插座RS-232C接口信号名称及主要信号流向;9芯D型插座上的RS-232C接口信号名称及流向 3. 电平转换 为保证数据可靠传送,RS-232C标准规定发送数据线TXD和接收数据线RXD均采用EIA电平,即传送数字“1”时,传输线上的电平在-3-15 V之间;传送数字“0”时,传输线上的电平在+3+15 V之间。但单片机串行口采用正逻辑的TTL电平,这样就存在TTL电平与EIA电平之间的转换问题,

20、例如当单片机与PC机进行串行通信时,PC机COM1或COM2口发送引脚TXD信号是EIA电平,不能直接与单片机串行口接收端RXD引脚相连;同样单片机串行口发送端TXD引脚输出信号采用正逻辑的TTL电平,也不能直接与PC机串行口COM1或COM2的RXD端相连。 RS-232C与TTL之间电平转换芯片主要有传输线发送器MC1488(把TTL电平转成EIA电平)、传输线接收器MC1489(把EIA电平转成TTL电平)以及MAX232系列RS232电平转换专用芯片。 其中传输线发送器MC1488含有4个门电路发送器,TTL电平输入,EIA电平输出;而传输线接收器MC1489也含有4个接收器,EIA电

21、平输入,TTL电平输出,但由MC1488和MC1489构成的EIA与TTL电平转换器需要12 V双电源,而单片机应用系统中一般只有+5 V电源,如果仅为了实现电平转换增加12V电源,体积大、成本高。而MAX232系列芯片集成度高,单+5 V电源(内置了电压倍增电路及负电源电路)工作,只需外接5个容量为0.11 F的小电容即可完成两路RS-232与TTL电平之间转换,是单片机应用系统中最常用的RS-232电平转换芯片,其内部结构及典型应用如图4-28所示。 图4-29 只有RTS、CTS联络信号的串行通信 图4-30 没有联络信号的串行通信 在MCS-51单片机应用系统中,由于彼此之间需要传输的

22、数量少,就常使用没有联络信号的串行通信,只需明确如下的收发条件即可:波特率(CPS)。发送、接收双方的波特率必须相同,误差不得超过一定的范围,否则不能正确接收。数据位长度(8位还是9位)。 校验有无及校验方式。在串行通讯中,除了使用奇偶校验方式,还可以使用其他的检验方式和校验(往往仅保留和的低8位,甚至低4位)、某一特征数码的倍数等,或同时使用两种校验方式。正确接收后的应答信号。 确定信息帧起始标志。常使用发送信息(命令、数据)中不可能出现的状态编码作为信息帧的起始标志。 确定信息帧结束标志。 4.5 增强型MCS-51芯片识别和仿真 1. 判别芯片内核类型 方法一:由于增强型MCS-51内核

23、一般提供关闭ALE功能,因此对于采用片内程序存储器系统,在一简单循环程序前插入“MOV 8EH,#01H”(AUXR特殊功能寄存器字节地址为8EH),然后用逻辑笔观察ALE引脚是否还有脉冲输出,即可判别该芯片是否支持ALE关闭功能,从而判别该芯片是否是增强型MCS-51内核。方法二:由于增强型MCS-51内核定时器T2具有时钟输出功能,因此将定时器T2定义为自动重装初值的定时状态,并允许在P1.0引脚输出时钟信号,然后用逻辑笔或万用表交流挡观察P1.0引脚状态,也能迅速判别该芯片采用何种内核。 2. 在标准MCS-51仿真器使用增强型MCS-51新增硬件功能 目前市面上多数MCS-51及兼容芯

24、片采用增强型MCS-51内核,但国内大多数用户使用的MCS-51仿真开发设备仿真器或仿真头之一可能不支持增强型MCS-51内核芯片,只能仿真标准MCS-51,甚至随仿真开发器提供的汇编器(汇编程序)不识别增强型MCS-51新增特殊功能寄存器。在这种情况下又如何使用增强型MCS-51及兼容芯片新增功能呢? 由于增强型MCS-51硬件资源与标准MCS-51保持兼容,因此先当标准MCS-51使用,即程序中暂时不出现增强型MCS-51新增特殊功能寄存器(位),如在涉及这些特殊功能寄存器(位)的程序段及指令前加“;”(分号)暂时注销,待程序调试无误后采用如下方法之一使用新增的硬件资源: (1) 用支持8

25、9C51RX系列CPU仿真器(头)仿真8XC5X、8XC5XX2系列增强型MCS-51 内核CPU。例如“伟福”E2000系列仿真器不能仿真8XC5X、8XC5XX2系列增强型MCS-51 CPU。但配合“POP-89C51RX”仿真头可以仿真89C51RX系列CPU,而89C51RX硬件资源与8XC5X、8XC5XX2系列增强型MCS-51内核芯片保持兼容,因此可用E2000系列仿真器,配合POP-89C51RX仿真头仿真8XC5X、8XC5XX2系列增强型MCS-51 CPU。 (2) 如果没有89C51RX系列仿真器、仿真头,可使用软件仿真方式。例如在“伟福”汇编器中,在“仿真器”选择窗

26、内,选用“伟福软件模拟器”选项,并选择E2000系列仿真器和“POP-89C51RX”仿真头。这样就可以在“伟福软件模拟器”中直接引用8XC5X、8XC5XX2系列增强型MCS-51内核芯片新增特殊功能寄存器和寄存器位,经编译、调试(当然只能在软件模拟器环境下进行)后,将代码直接写入目标芯片,在用户板上测试。不满意,再检查源程序,找出其中的错误并修正即可。(3) 如果汇编器不支持89C51RX芯片,不能使用“软件模拟仿真”方式时,可将源程序中涉及到的新增特殊功能寄存器名用直接地址取代,即在程序头变量定义区内插入新增特殊功能寄存器伪定义指令,如:AUXR DATA 8EHAUXR1 DATA 0A2HIPH DATA 0B7H 汇编后将代码直接写入目标芯片,在用户板上测试。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1