接口实验辅导_第1页
接口实验辅导_第2页
接口实验辅导_第3页
接口实验辅导_第4页
接口实验辅导_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

接口实验辅导第1页,共46页,2023年,2月20日,星期一双机接口通讯保护模式下的中断实验利用键盘驱动实验熟悉WDM编程第2页,共46页,2023年,2月20日,星期一双机接口通讯熟悉串行通讯原理了解RS-232C串行接口标准及连接方法。掌握16550接口芯片的编程方法,实现双工通讯。两台微机之间通过RS-232C电缆连接实现串行通信。(已连好,不用动)。第3页,共46页,2023年,2月20日,星期一异步方式全双工通信,每次传送单个字符,波特率因子64,7位数据位,1位停止位。通信双方均采用查询方式。可用的素材:SjtxS.asm微机串口地址(实验室老师会说明用的是哪个串口)数据口:02F8H(COM2)/03f8H(COM1)命令/状态口:02FDH(COM2)/03fDH(COM1)第4页,共46页,2023年,2月20日,星期一此实验中如果有实验箱,则实验箱上的8237芯片必须随便连接一个片选信号,通讯双方(对面两组)参数设定保持一致即可。如果没有实验箱则没有这个要求。当输入“*”号时退出。汇编成exe文件格式。实验报告中要求包括双机通信的接口图。第5页,共46页,2023年,2月20日,星期一和8250类似,可以看成增强型的8250。16550增加了16个字节的FIFO队列。8250的最大通讯速率是19200bps,16550的最大通讯速率是115200bps。包括初始化部分与操作部分。第6页,共46页,2023年,2月20日,星期一初始化需要编程线路控制寄存器和分频系数锁存器这两个寄存器。线路控制寄存器(LCR)如教材P157图6-27所示,假设地址为03fbH。格式:DLSBSTPPESL1L0L1L0:数据长度:00-5位;01-6位;10-7位;11-8位。S:停止位的位数:0-1位;1-1.5位(5位数据)或2位(6、7、8位数据)。第7页,共46页,2023年,2月20日,星期一ST、P、PE编码的作用如下:001奇校验101检验位置1111检验位清0。SB:发送间隔符,间隔符由两帧逻辑“0”构成。第8页,共46页,2023年,2月20日,星期一DL:分频系数锁存位(波特率因子)=0时读/写03f8H端口为数据;写03f9H端口为中断允许寄存器。=1时读/写03f8H端口为分频系数低8位值。写03f9H端口为分频系数高8位值。第9页,共46页,2023年,2月20日,星期一当编程的线路控制寄存器LCR的D7位DL=1时,接下来向03f8H和03f9H端口写入的值为分频系数16位值,允许仅写低8位。例如,置波特率9600时,分频系数=12。第10页,共46页,2023年,2月20日,星期一设8位数据,2位停止位,偶校验无间隔传送,则线路控制寄LCR=9FH。MOVAL,9FHMOVDX,03fbHOUTDX,AL;初始化LCR第11页,共46页,2023年,2月20日,星期一MOVAL,12;分频率数低8位MOVDX,03f8H;低8位系数端口OUTDX,AL;初始化分频系数低位MOVAL,0MOVDX,03f9H;高8位系数端口OUTDX,AL;分频系数高位填0第12页,共46页,2023年,2月20日,星期一注意:初始化的两部分都完成后,在读写操作之前要将LCR的最高位DL清“0”,即再写一次LCR。第13页,共46页,2023年,2月20日,星期一MOVAL,1FH;将DL清“0”的线路控制字MOVDX,03fbH;端口地址OUTDX,AL;线路控制器清零第14页,共46页,2023年,2月20日,星期一在初始化线络控制寄存器以及分频率数后,还需编程FIFO控制寄存器。FIFO控制寄存的地址为03FAH,16550的FIFO控制寄存器的格式为:第15页,共46页,2023年,2月20日,星期一EN:FIFO允许,0-禁止,1-允许。REVCRET:接收器复位,1-复位接收器。XMITRET:发送器复位1-复位发送器。DMA:方式控制:0-用作16550UART;1-FIFO方式第16页,共46页,2023年,2月20日,星期一RT1RT0:接收器触发值00-1字节触发01-4字节触发10-8字节触发11-14字节触发第17页,共46页,2023年,2月20日,星期一例:置FIFO允许,接收器复位,发送器复位的控制字为07HMOVAL,07H;FIFO控制字MOVDX,03FAHOUTDX,AL第18页,共46页,2023年,2月20日,星期一同8250一样,16550也有一个状态寄存器,称为线路状态寄存器,格式如下:第19页,共46页,2023年,2月20日,星期一DR:数据就绪,0-没接收到数据,1-FIFO中有数据。OE:超越错,1-有超越错。PE:奇偶错,1-有奇偶错。FE:帧格式错,1-有帧格式错。BI:间隔指示,1-接收到间隔符。第20页,共46页,2023年,2月20日,星期一TH:发送器保持寄存器0-发送未完成1-发送完成。TE:发送器空,1-空。ER:错误标志,1-至少有一个错误。查询式发送/接收时,在进行发送/接收之前必须先查询线路状态,之后才可以进行相应的收/发操作。第21页,共46页,2023年,2月20日,星期一发送程序:

SEND:MOVDX,状态端口号;

IN

AL,DX;读状态

TESTAL,20H;检发送器就绪

JZSEND MOVDX,数据端口号;

MOVAL,data;发送的数据

OUTDX,AL第22页,共46页,2023年,2月20日,星期一接收程序:RECV:MOVDX,状态端口号;

INAL,DX;读状态

TESTAL,02H;是否接收到数据

JZRECV TESTAL,0EH;检3个错误

JNZERR; 出错转处理

MOVDX,数据端口号;

INAL,DX;读数据第23页,共46页,2023年,2月20日,星期一实验在纯DOS环境下进行(1)实验中可将键盘敲入的数据发送。读键盘数据用INT21H,Ah=01H。(2)实验中可将接收到的字符送CRT显示,显示也用INT21H,Ah=09H。第24页,共46页,2023年,2月20日,星期一可用的素材BhzdS.asm:经过修改可以运行的源代码。BhzdXg.exe:最终版本的运行效果示意。第25页,共46页,2023年,2月20日,星期一要求:(1)在保护模式32位代码段中添加如下键盘中断处理程序:KeyboardHandler:inal,60hcmpal,1jnznotEscmovecx,1notEsc:incbyteptrgs:[((80*1+70)*2)];屏幕第1行,第70列。mov al,20hout 20h,al;发送EOIIretd键盘中断的中断向量号为21h。第26页,共46页,2023年,2月20日,星期一(2)在保护模式下,按Esc键后,返回实模式。第27页,共46页,2023年,2月20日,星期一在纯DOS下:编辑BhzdS.asmmasmBhzdS.asm;linkBhzdS.obj;BhzdS.asm(运行)最后BhzdS.exe的运行结果应和BhzdXg.exe一致。第28页,共46页,2023年,2月20日,星期一也可以在模拟DOS环境下,比如DOSBOX(会提供下载)中编辑、汇编、运行。DOSBOX使用方法在“DosBox用法.txt”文件中说明。在windows环境中双击“dosbox.exe”启动DOSBOX.第29页,共46页,2023年,2月20日,星期一(1)执行结果(2)简述程序执行过程(其中的重要步骤)(3)列出对素材源程序的修改部分(4)心得体会第30页,共46页,2023年,2月20日,星期一可用素材:JieKouExp3文件夹中的内容。第31页,共46页,2023年,2月20日,星期一实验步骤帮助在“JieKouExp3.txt”文件中。OSRLoader可以加载、启动、停止驱动程序(.sys文件)。针对不同系统有两个版本OsrLoader_XpOsrLoader_2k第32页,共46页,2023年,2月20日,星期一basic_hardware文件夹的作用:启动OSRLoader,选择.sys文件(basic_hardware\basic_hardware\objchk_wnet_x86\i386目录中),再按"RegisterService",按"StartService",就会看到键盘灯在不停的闪烁.按"StopService"以后,就不闪烁了.这个文件夹有驱动源程序“basic_hardware.c”。作用是演示键盘控制。第33页,共46页,2023年,2月20日,星期一basic_keysniff文件夹的作用:启动DebugView.exe.启动OSRLoader,选择.sys文件(basic_keysniff\bhwin_keysniff\objchk_wnet_x86\i386目录中),再按“RegisterService”,按“StartService”,DebugView.exe里边显示一些信息。之后,所有键盘按键的扫描码保存在缓冲区里面。按“StopService”以后,DebugView.exe把缓冲区里的键盘的扫描码显示出来了。第34页,共46页,2023年,2月20日,星期一作用是演示驱动程序利用缓冲区传递字符。驱动程序源代码在“bhwin_keysniff.c”中。第35页,共46页,2023年,2月20日,星期一Ioctl_sample启动OSRLoader,选择.sys文件(ioctl_sample\IoCtrlSample\BIN\x86目录中),再按"RegisterService",按"StartService“.执行ioctl_sample\IoCtrlSample\BIN\x86\IoCtrl.exe,选1,利用ioctl接口发送数据到driver;选3,从driver接收数据。驱动程序源代码是“Driver.c”和“IoCtrl.c”

。作用是演示通过驱动及控制台程序接收发送数据。第36页,共46页,2023年,2月20日,星期一综合上述3个例子程序的基础上,(1)驱动程序保存键盘的扫描码,Console应用程序发送ioctl从驱动程序中读入扫描码.将把扫描码转成ASCII码并显示出来。(2)Console应用程序向驱动程序发送ioctl,要求驱动程序设置键盘灯的状态。第37页,共46页,2023年,2月20日,星期一文件夹中还有两个程序:sniff.sys,sniffui.exe。其中sniff.sys是编写完整的驱动程序经过编译后的结果,sniffui.exe启动后可以查看键盘输入字符。这个程序的运行效果也就是最终要达到的效果。第38页,共46页,2023年,2月20日,星期一启动OSRLoader,选择sniff.sys文件,,再按"RegisterService",按"StartService“.运行sniffui.exe,选择1,键盘灯不停的闪烁.按Ctrl+C退出程序,停止闪烁.运行sniffui.exe,选择2.之后,在其他程序中输入字母、数字,输入内容由sniffui.exe显示出来。第39页,共46页,2023年,2月20日,星期一利用VC的集成编译环境和DDK库,这个需要设置VC的include路径和lib路径,以及编译参数。利用DDK的命令行编译.c文件(进入驱动源程序所在目录后执行build-cef)。第40页,共46页,2023年,2月20日,星期一DDKDDK+VC第41页,共46页,2023年,2月20日,星期一驱动程序中键盘的中断向量号可能会因操作系统版本不同而需要改变,比如win98,win2000,windowsxp和windowsvista。如果设置不对,则不能从键盘读数据或者控制。比如basic_keysniff中的效果不修改可能无法演示。这时可以利用sea

温馨提示

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

评论

0/150

提交评论