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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据通信与控制网络实验指导书Word格式文档下载.docx

1、通过ADAM模块进行多台(34台)PC机的连接,实现一主多从通信。3. CAN总线多主通信方式:通过PC机ISA插槽的CAN通信适配卡进行多台PC机连接,实现多主通信。实验一 RS-232点对点通信方式(一)PC及其兼容工控机的异步通讯接口PC及其兼容工控机都有两个异步通讯接口:COM1和COM2,其关键部件是通用异步收发器(UART)INS8250。INS8250的内部有10个寄存器,分别用于通讯参数的设置、线路及MODEM的控制与状态查询、数据收发及中断管理等。要在中断方式下收发数据,必须对INS8250的寄存器直接操作,各寄存器名称及其相应的端口地址列于表1。由表1可知:THR、RBR和

2、DLL占用同一个端口地址3F8H(2F8H),IER和DLM也占用同一个端口地址3F9H(2F9H),对它们进行访问时,如果设置LCR的最高位为1,访问的是除数寄存器;如果设置LCR的最高位为0,则访问的是THR、RBR和IER。而THR是只写寄存器,RBR是只读寄存器,在LCR的最高位设置为0时,对端口地址3F8H(2F8H)的写入操作访问的是THR,读出操作访问的是RBR。硬件连接方式:将2台PC机的COM1/COM2串行通信口通过9针D型接口3线连接。(二)INS8250有关寄存器的设置串行口的初始化主要是对INS8250的有关寄存器进行设置,以确定通讯的数据格式、波特率、中断的触发方式

3、等。 确定数据格 式数据格式是通过设置线路控制寄存器(LCR)来确定的,LCR的定义如下:其中:WSL1、WSL0用于选择每个发送或接收的串行字符的位数,分别设置这两位为00、01、10、11时,对应的字长依次是5位、6位、7位、8位;STB用于确定停止位的位数,STB0时使用1位停止位,STB1时,如果WSL1、WSL0设置为00,使用15位停止位,其它情况下使用2位停止位;PEN用于选择是否允许奇偶校验,PEN0时,不进行奇偶校验,PEN1时有奇偶校验;此时,EPS选择校验方式,EPS0时是奇校验,EPS1时是偶校验;SP用于选择是否在奇偶校验位和停止位之间插入奇偶标志位,SP0时不插入,

4、SP1时插入1位奇偶标志位,偶校验时插一个0,奇校验时插入一个1;SB是设置间断控制位,SB1时输出数据强迫为0,SB0时可进行正常的数据收发;DLAB是除数寄存器访问位,DLAB1时访问除数寄存器,DLAB0时访问THR、RBR和IER。 设置波特率 INS8250内部包含一个可编程的波特率发生器,它允许用165535的任意除数对18432MHz的输入频率进行分频,分频后的信号即波特率发生器的输出频率,而波特率是波特率发生器输出频率的116。由此可知,除数1843200(波特率16)。16位的除数应在初始化时写入除数锁存器。 中断机制的引发 INS8250可由4个事件中的任一个来引发一个中断

5、,这4个事件依此是:接收数据有效;发送保持寄存器空;接收数据出错;MODEM状态改变。通过IER的bit0bit3可依次设置它们是否被允许,某位为1时相应的事件允许引发一个中断,为0时禁止。INS8250通过INTRPT引脚的高电平向系统发出中断请求,为了使INS8250能够向系统发中断,MCR的第三位必须置1。PC使用8259中断控制器,它可以管理来自外设的8个各自独立的中断请求信号IRQ0IRQ7,其中IRQ4和IRQ3分别用于COM1和COM2的中断申请。8259内部有一个中断屏蔽寄存器(IMR),端口地址为21H,它的bit0bit7分别对应IRQ0IRQ7,通过设置其中的某一位为0以

6、允许与其对应的中断请求。(三)程序设计要点在程序设计时,应该考虑以下问题: 设置中断向量,以保证CPU执行中断服务程序时有一个正确的入口地址。可使用C语言的库函数setvect() 和getvect() 对中断向量进行设置和读取。 中断服务程序什么时候结束,CPU无法知道,8259中断控制器也无法知道,必须通过指令通知8259中断控制器。对于PC机,这条指令就是向端口地址20H写入一个命令字20H。 为保证通讯的可靠性以及不耽误CPU响应其它中断,中断服务程序应尽量短,一些费时的操作如数据存盘等应放在中断服务程序以外。 在把一个数据写入发送保持寄存器(THR)之前,必须检查线路状态寄存器LSR

7、,以保证发送保持寄存器为空。 初始化中断系统时,应该关闭中断,初始化完成后再开放。可使用C语言的库函数disable() 和enable() 来完成。(四)推荐程序调试方式: 在1台PC机上安装具有如下界面的软件工具“串口调试助手”(图1),在另一台PC机上分别调试发送和接收程序;图1 在2台PC机上联合调试完整的发送/接收程序。(五)推荐基础程序1Turbo C 语言程序1程序说明:本程序是通过硬件中断方式完成RS-232接收与发送串行通信的。使用COM1进行通信时,产生的硬件中断号为IQR4,对应的中断向量为0CH。数据的接收采用环形列队的方法,由函数inportb( )来完成。该程序运行

8、后,用户可由其他设备向本机的COM1串行口发送数据,你可以看到在屏幕的一个窗口中显示到接收的字符串;数据发送程序参数的设置由函数port_init( )来完成,数据发送由函数outportb( )来完成。参考书:徐金梧,杨德斌,徐科.TurboC实用大全。机械工业出版社.1996年.563-566尹彦芝.C语言常用算法与子程序.清华大学出版社.1993年.239-241袁征,杨仁树,严建新. C语言编程技巧程序集.电子工业出版社.1993年.233-2342接收数据子程序如下:/* 通过中断方式由 RS-232 接收数据 */#includedos.hprocess.hconio.hbios.

9、hctype.hstdio.hfcntl.h#define BUFFLEN 10800#define BUFFMAX 900void Init(void);void check(unsigned char states);void enableports(void);void disableports(void);void interrupt far asyncint(void);void interrupt (* asyncvect) (void);void putb(unsigned char ch);unsigned char inchar,flag=0;unsigned char Bu

10、fferBUFFLEN;int buffin=0;int buffout=0;int i=0,ii=0;unsigned char temp_bufferBUFFMAX;unsigned char ch,flag;/* 开放串行口中断 */void enableports(void)unsigned char B;asyncvect=getvect(0x0c);disable();inportb(0x3f8);inportb(0x3fe);inportb(0x3fb);inportb(0x3fa);outportb(0x3fc,0x08|0x0b);outportb(0x3f9,0x01);B

11、=inportb(0x21)&0xef;outportb(0x21,B);setvect(0x0c,asyncint);enable();/* 中断服务程序 */void interrupt far asyncint(void)unsigned char ch;ch=inportb(0x3f8);flag=1;putb(ch);outportb(0x20,0x20);/* 关闭串行口中断 */void disableports(void)outportb(0x3f9,0x00);outportb(0x3fc,0x00);outportb(0x21,inportb(0x21)&0x10);set

12、vect(0x0c,asyncvect);/* 对COM1串行口有关参数的初始化 */void Init()outportb(0x3fb,0x80);outportb(0x3f8,0x0c);outportb(0x3fb,0x1f);void check(unsigned char states)while(inportb(0x3fd)&states)=0);void putb(unsigned char ch)int temp=0;if(+iiBUFFMAX)ii=0;temp=buffin;if(+buffin=BUFFLEN)buffin=0;if(buffin!=buffout)Buf

13、ferbuffin=ch;elsebuffin=temp;temp_bufferii=ch;/* 从数据端口3F8H中读取相应的数据 */unsigned char getb(void)if(buffout!=buffin)if(+buffout=BUFFLEN)buffout=0;return(Bufferbuffout);else return(0xff);main()clrscr(); /* 绘制数据接收窗口 */window(3,2,41,10);textcolor(0);textbackground(3);gotoxy(3,2);cprintf( Receive from COM1:n);gotoxy(3,4); 9600 bps,8 bit,2 stop,evenngotoxy(3,6);textcolor(223);Press any key countiune ! ngetch();window(45,2,79,22);

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

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