欢迎来到天天文库
浏览记录
ID:40917335
大小:5.32 MB
页数:34页
时间:2019-08-10
《现代计算机接口技术实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、计算机接口技术实验指导书现代计算机接口技术及MFC程序实现武汉工业学院计算机与信息工程系34计算机接口技术实验指导书目录实验1定时与中断接口程序设计………………………………………………………………………1实验2操作PC机上的8250实现串行通信………………………………………………………5实验3基于DLL与HOOK技术的键盘消息拦截与读音……………………………………10实验4MFC串行通信程序设计…………………………………………………………………………16实验5DirectShow接口实现视频显示与帧
2、捕获………………………………………………20实验6基于Socket接口的网络通信MFC程序设计…………………………………………2734计算机接口技术实验指导书实验1定时与中断接口程序设计一实验目的1.了解定时器/计数器8253、并行I/O接口8255A在PC机中的电路连接方法;2.学习使用TURBOC++对8253、8255进行编程操作;3.熟悉拦截PC机中断向量的TC++编程方法。二实验内容1.8253、8255在PC/XT机中的电路连接介绍D7…D0IORIOWA0A1IO/MA9…A2D7…D
3、0OUT0RDGATE0WRCLK0A0OUT1A1GATE1CLK1OUT2CSGATE2CLK0,1,2地址译码40H~43H至8259IRQ0,中断类型=8+5V至8237的DRAM刷新请求+5V80888253&放大PB0CSPB1地址译码60H~63H82551.19MHzPC机启动后,系统设置的初始状态为:芯片有关工作方式初值运行情况8253通道0#:方式3(方波发生器)计数初值:0000HOUT输出55ms方波至8259的IRQ0通道2#:?(1KHz)计数初值:?(1190)?(1K
4、Hz方波)8255PB0、PB1:方式0(简单输出)控制蜂鸣器发声。0:不发声,1:发声8259IRQ0:允许中断中断类型号:8CPU响应8号中断表中,8253的通道2#的工作方式和计数初值未知,要求自己设置。2.程序要求利用TURBOC++开发环境设计程序,实现如下功能:34计算机接口技术实验指导书(1)程序启动时,要求输入定时时间,以秒为单位。(2)按秒计时,每秒到达时,在屏幕上显示当前为第几秒,同时蜂鸣器发出短促叫声;(3)当定时时间到,则显示“TimeUp!”,结束程序。三实验环境硬件环境:
5、PC机一台;软件环境:操作系统不限,TURBOC++3.0。四实验步骤1.建立源文件启动TURBOC++3.0,建立Timer.CPP。保存到D:×××(学号)Timer.CPP;2.设置TC工作目录选菜单Options/Directories,第1、2栏保持不变,第3、4栏填写您的文件存放目录,OK。如此,TC生成的可执行文件等将会存放到此工作目录下。样例如下:3.输入源程序以下源程序仅供参考。#include//支持标准输入输出,如printf()。#include6、.h>//支持接口访问、中断向量操作函数#include//支持exit()函数#ifdef__cplusplus//定义C++使用的中断函数标识符。若是×××.C程序,则不需要#define__CPPARGS...#else#define__CPPARGS#endifintnTick=0,sec=0,flag=0;unsignedcharsys_PB,my_PB;34计算机接口技术实验指导书voidinterruptfar(*sys_int_08)(__CPPARGS);//若7、是×××.C,则函数参数不写voidinterruptfarmy_int_08(__CPPARGS)//若是×××.C,则函数参数不写{//8号中断,每55ms中断一次,由8253的0号定时器定时,并向8259IRQ0申请中断++nTick;if(tinck==1)outportb(0x61,my_PB);//开始鸣叫elseif(tinck==3)outportb(0x61,sys_PB);//停止鸣叫elseif(nTick>18){//1second/55ms近似等于18flag=1;nTic8、k=0;sec++;}sys_int_08();//调用系统的中断向量}//==========================================voidmain(){unsignedintTime_up;printf("PleaseinputUpTime(5--30):");scanf("%d",&Time_up);printf("");if(Time_up<59、10、Time_up>30){printf("InputError!");exit(1);
6、.h>//支持接口访问、中断向量操作函数#include//支持exit()函数#ifdef__cplusplus//定义C++使用的中断函数标识符。若是×××.C程序,则不需要#define__CPPARGS...#else#define__CPPARGS#endifintnTick=0,sec=0,flag=0;unsignedcharsys_PB,my_PB;34计算机接口技术实验指导书voidinterruptfar(*sys_int_08)(__CPPARGS);//若
7、是×××.C,则函数参数不写voidinterruptfarmy_int_08(__CPPARGS)//若是×××.C,则函数参数不写{//8号中断,每55ms中断一次,由8253的0号定时器定时,并向8259IRQ0申请中断++nTick;if(tinck==1)outportb(0x61,my_PB);//开始鸣叫elseif(tinck==3)outportb(0x61,sys_PB);//停止鸣叫elseif(nTick>18){//1second/55ms近似等于18flag=1;nTic
8、k=0;sec++;}sys_int_08();//调用系统的中断向量}//==========================================voidmain(){unsignedintTime_up;printf("PleaseinputUpTime(5--30):");scanf("%d",&Time_up);printf("");if(Time_up<5
9、
10、Time_up>30){printf("InputError!");exit(1);
此文档下载收益归作者所有