您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 计算机接口技术--实验一
数学与计算机学院《计算机接口技术》实验报告专业:网络工程班级:1202学号:1205110121姓名:吴天亮指导老师:郭峰林实验1定时与中断接口程序设计一实验目的1.了解定时器/计数器8253、并行I/O接口8255A在PC机中的电路连接方法;2.学习使用TURBOC++对8253、8255进行编程操作;3.熟悉拦截PC机中断向量的TC++编程方法。二实验内容1.8253、8255在PC/XT机中的电路连接介绍PC机启动后,系统设置的初始状态为:芯片有关工作方式初值运行情况8253通道0#:方式3(方波发生器)计数初值:0000HOUT输出55ms方波至8259的IRQ0通道2#:?(1KHz)计数初值:?(1190)?(1KHz方波)8255PB0、PB1:方式0(简单输出)控制蜂鸣器发声。0:不发声,1:发声8259IRQ0:允许中断中断类型号:8CPU响应8号中断表中,8253的通道2#的工作方式和计数初值未知,要求自己设置。2.程序要求利用TURBOC++开发环境设计程序,实现如下功能:(1)程序启动时,要求输入定时时间,以秒为单位。(2)按秒计时,每秒到达时,在屏幕上显示当前为第几秒,同时蜂鸣器发出短促叫声;(3)当定时时间到,则显示“TimeUp!”,结束程序。三实验环境硬件环境:PC机一台;软件环境:操作系统不限,TURBOC++3.0。四实验步骤1.建立源文件启动TURBOC++3.0,建立Timer.CPP。保存到D:\×××(学号)\Timer.CPP;2.设置TC工作目录选菜单Options/Directories,第1、2栏保持不变,第3、4栏填写您的文件存放目录,注意目录名不能超过8个英文字符,且所设目录要事先建立好。如此,TC生成的可执行文件等将会存放到此工作目录下。样例如下:五核心代码#includestdio.h#includedos.h#includeSTDLIB.H#ifdef__cplusplus#define__CPPARGS...#else#define__CPPARGS#endifintnTick=0,sec=0,flag=0;unsignedcharsys_PB,my_PB;voidinterruptfar(*sys_int_08)(__CPPARGS);voidinterruptfarmy_int_08(__CPPARGS){++nTick;if(nTick==1)outportb(0x61,my_PB);elseif(nTick==3)outportb(0x61,0x01);elseif(nTick18){flag=1;nTick=0;sec++;}sys_int_08();}//==========================================voidmain(){unsignedintTime_up;printf(PleaseinputUpTime(5--30):);scanf(%d,&Time_up);printf(\n);if(Time_up5||Time_up30){printf(InputError!);exit(1);}sys_PB=inportb(0x61);my_PB=sys_PB|0x03;outportb(0x43,0xb6);outportb(0x42,0xa6);outportb(0x42,0x04);sys_int_08=getvect(0x08);setvect(0x08,my_int_08);while(1){if(flag==1){flag=0;printf(%d,sec);if(sec==Time_up)break;}}printf(TimerUp!\n\n);outportb(0x61,sys_PB);setvect(0x08,sys_int_08);}六实验结果七实验总结通过本次实验使我进一步了解了可编程并行接口8253和8255的工作方式及编程原理,可以编写简单的c语言程序控制8255A实现一些基本功能,了解了定时器/计数器8253、并行I/O接口8255A在PC机中的电路连接方法熟悉了拦截PC机中断向量的TC++编程方法但是在实验过程中同样出现了一些问题,经过自己及同组人的共同努力最终解决了问题,也加深了对8255A的了解。学习了很多知识。
本文标题:计算机接口技术--实验一
链接地址:https://www.777doc.com/doc-2043371 .html