




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机接口技术实践课指导教师:张全新实验室教师:洪杰1实验内容双机接口通讯保护模式下的中断实验利用键盘驱动实验熟悉WDM编程2实验1要求双机接口通讯熟悉串行通讯原理了解RS-232C串行接口标准及连接方法。掌握16550接口芯片的编程方法,实现双工通讯。两台微机之间通过RS-232C电缆连接实现串行通信。(已连好,不用动)。3异步方式全双工通信,每次传送单个字符,波特率因子64,7位数据位,1位停止位。通信双方均采用查询方式。可用的素材:SjtxS.asm微机串口地址(实验室老师会说明用的是哪个串口)数据口:02F8H(COM2)/03f8H(COM1)命令/状态口:02FDH(COM2)/03fDH(COM1)4此实验中如果有实验箱,则实验箱上的8237芯片必须随便连接一个片选信号,通讯双方(对面两组)参数设定保持一致即可。如果没有实验箱则没有这个要求。当输入“*”号时退出。汇编成exe文件格式。实验报告中要求包括双机通信的接口图。516550的编程说明和举例和8250类似,可以看成增强型的8250。16550增加了16个字节的FIFO队列。8250的最大通讯速率是19200bps,16550的最大通讯速率是115200bps。包括初始化部分与操作部分。6初始化16550初始化需要编程线路控制寄存器和分频系数锁存器这两个寄存器。线路控制寄存器(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位数据)。7ST、P、PE编码的作用如下:001奇校验101检验位置1111检验位清0。SB:发送间隔符,间隔符由两帧逻辑“0”构成。8DL:分频系数锁存位(波特率因子)=0时读/写03f8H端口为数据;写03f9H端口为中断允许寄存器。=1时读/写03f8H端口为分频系数低8位值。写03f9H端口为分频系数高8位值。9写入波特率当编程的线路控制寄存器LCR的D7位DL=1时,接下来向03f8H和03f9H端口写入的值为分频系数16位值,允许仅写低8位。例如,置波特率9600时,分频系数=12。10设8位数据,2位停止位,偶校验无间隔传送,则线路控制寄LCR=9FH。MOVAL,9FHMOVDX,03fbHOUTDX,AL;初始化LCR11MOVAL,12;分频率数低8位MOVDX,03f8H;低8位系数端口OUTDX,AL;初始化分频系数低位MOVAL,0MOVDX,03f9H;高8位系数端口OUTDX,AL;分频系数高位填012注意:初始化的两部分都完成后,在读写操作之前要将LCR的最高位DL清“0”,即再写一次LCR。13LCR的DL清零MOVAL,1FH;将DL清“0”的线路控制字MOVDX,03fbH;端口地址OUTDX,AL;线路控制器清零14编程FIFO控制寄存器在初始化线络控制寄存器以及分频率数后,还需编程FIFO控制寄存器。FIFO控制寄存的地址为03FAH,16550的FIFO控制寄存器的格式为:15EN:FIFO允许,0-禁止,1-允许。REVCRET:接收器复位,1-复位接收器。XMITRET:发送器复位1-复位发送器。DMA:方式控制:0-用作16550UART;1-FIFO方式16RT1RT0:接收器触发值00-1字节触发01-4字节触发10-8字节触发11-14字节触发17例:置FIFO允许,接收器复位,发送器复位的控制字为07HMOVAL,07H;FIFO控制字MOVDX,03FAHOUTDX,AL18线路状态寄存器同8250一样,16550也有一个状态寄存器,称为线路状态寄存器,格式如下:19DR:数据就绪,0-没接收到数据,1-FIFO中有数据。OE:超越错,1-有超越错。PE:奇偶错,1-有奇偶错。FE:帧格式错,1-有帧格式错。BI:间隔指示,1-接收到间隔符。20TH:发送器保持寄存器0-发送未完成1-发送完成。TE:发送器空,1-空。ER:错误标志,1-至少有一个错误。查询式发送/接收时,在进行发送/接收之前必须先查询线路状态,之后才可以进行相应的收/发操作。21发送/接收过程举例发送程序:
SEND:MOVDX,状态端口号;
IN
AL,DX;读状态
TESTAL,20H;检发送器就绪
JZSEND MOVDX,数据端口号;
MOVAL,data;发送的数据
OUTDX,AL22接收程序:RECV:MOVDX,状态端口号;
INAL,DX;读状态
TESTAL,02H;是否接收到数据
JZRECV TESTAL,0EH;检3个错误
JNZERR; 出错转处理
MOVDX,数据端口号;
INAL,DX;读数据23操作方法实验在纯DOS环境下进行(1)实验中可将键盘敲入的数据发送。读键盘数据用INT21H,Ah=01H。(2)实验中可将接收到的字符送CRT显示,显示也用INT21H,Ah=09H。24实验2要求可用的素材BhzdS.asm:经过修改可以运行的源代码。BhzdXg.exe:最终版本的运行效果示意。25要求:(1)在保护模式32位代码段中添加如下键盘中断处理程序:KeyboardHandler:inal,60hcmpal,1jnznotEscmovecx,1notEsc:incbyteptrgs:[((80*1+70)*2)];屏幕第1行,第70列。mov al,20hout 20h,al;发送EOIIretd键盘中断的中断向量号为21h。26(2)在保护模式下,按Esc键后,返回实模式。27操作方法在纯DOS下:编辑BhzdS.asmmasmBhzdS.asm;linkBhzdS.obj;BhzdS.asm(运行)最后BhzdS.exe的运行结果应和BhzdXg.exe一致。28也可以在模拟DOS环境下,比如DOSBOX(会提供下载)中编辑、汇编、运行。DOSBOX使用方法在“DosBox用法.txt”文件中说明。在windows环境中双击“dosbox.exe”启动DOSBOX.29实验2报告要求(1)执行结果(2)简述程序执行过程(其中的重要步骤)(3)列出对素材源程序的修改部分(4)心得体会30实验3要求可用素材:JieKouExp3文件夹中的内容。31各部分说明实验步骤帮助在“JieKouExp3.txt”文件中。OSRLoader可以加载、启动、停止驱动程序(.sys文件)。针对不同系统有两个版本OsrLoader_XpOsrLoader_2k32basic_hardware文件夹的作用:启动OSRLoader,选择.sys文件(basic_hardware\basic_hardware\objchk_wnet_x86\i386目录中),再按"RegisterService",按"StartService",就会看到键盘灯在不停的闪烁.按"StopService"以后,就不闪烁了.这个文件夹有驱动源程序“basic_hardware.c”。作用是演示键盘控制。33basic_keysniff文件夹的作用:启动DebugView.exe.启动OSRLoader,选择.sys文件(basic_keysniff\bhwin_keysniff\objchk_wnet_x86\i386目录中),再按“RegisterService”,按“StartService”,DebugView.exe里边显示一些信息。之后,所有键盘按键的扫描码保存在缓冲区里面。按“StopService”以后,DebugView.exe把缓冲区里的键盘的扫描码显示出来了。34作用是演示驱动程序利用缓冲区传递字符。驱动程序源代码在“bhwin_keysniff.c”中。35Ioctl_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最终结果综合上述3个例子程序的基础上,(1)驱动程序保存键盘的扫描码,Console应用程序发送ioctl从驱动程序中读入扫描码.将把扫描码转成ASCII码并显示出来。(2)Console应用程序向驱动程序发送ioctl,要求驱动程序设置键盘灯的状态。37文件夹中还有两个程序:sniff.sys,sniffui.exe。其中sniff.sys是编写完整的驱动程序经过编译后的结果,sniffui.exe启动后可以查看键盘输入字符。这个程序的运行效果也就是最终要达到的效果。38效果演示方法启动OSRLoader,选择sniff.sys文件,,再按"RegisterService",按"StartService“.运行sniffui.exe,选择1,键盘灯不停的闪烁.按Ctrl+C退出程序,停止闪烁.运行sniffui.exe,选择2.之后,在其他程序中输入字母、数字,输入内容由sniffui.exe显示出来。39驱动程序两种编写方法利用VC的集成编译环境和DDK库,这个需要设置VC的include路径和lib路径,以及编译参数。利用DDK的命令行编译.c文件(进入驱动源程序所在目录后执行build-cef)。40需要用到的工具/环境DDKDDK+VC41可能存在的问题驱动程序中键盘的中断向量号可能会因操作系统版本不同而需要改变,比如win98,win2000,windowsxp和windowsvista。如果设置不对,则不能从键盘读数据或者控制。比如basic_keysniff中的效果不修改可能无法演示。这时可以利用search_irq1.txt中的函数解决这个问题,但需要自己添加到bhwin_keysniff.c中并重新编译成.sys文件。在修改中断向量号的过程中,irqs.zip包中的工具可能有帮助。42自己下载VC和DDK工具包提前调试。因为实验室条件有限,从网上下载DDK,因此无法保证DDK的使用情况。如果已经调试成功,可以带自己的机器去演示验收。43实验报告最终的驱动源程序(重点是自己改动的地方加注释说明作用)。调试过程的详细步骤,包括编译过程,命令参数,使用的操作系统版本,键盘向量号的设置等。心得体会。44实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 承包面包配送合同范本
- 毕业生就业劳动合同签订意向书
- 委托设计logo合同范本
- 安保服装采购合同范本
- 花卉购买合同范本txt
- 工程融资居间合同范本
- 餐厅桌子购销合同范本
- 个人房屋抵押贷款合同范例
- 变压器合同范例
- 医药礼品采购合同范本
- 2024过敏性休克抢救指南(2024)课件干货分享
- 2024年黑龙江省通信工程安全员(B证)考试题库及答案(管局版)
- 2024-2025学年高考数学一轮复习解题技巧方法第三章第3节角平分线性质定理与张角定理教师版
- 消防设施检查记录
- 2024智能网联汽车自动驾驶功能仿真试验方法及要求
- 重大事件保电作业指导书
- 山东省济南市2022-2023学年六年级下学期语文期末考试试卷(含答案)
- 五年级上册小数乘除法计算题(纯竖式计算)1
- 供电所绩效考核实施方案
- 《宝葫芦的秘密》导读课(教案)部编版语文四年级下册
- 艾滋病伴卡氏肺孢子虫肺炎的个案护理
评论
0/150
提交评论