微型计算机原理与接口技术杨力实验讲义教学提纲.doc
Good is good, but better carries it.精益求精,善益求善。微型计算机原理与接口技术杨力实验讲义-微机原理与接口技术实验讲义主编卫迎辉2013年9月5日-目录前言1预备实验PCI设备查询和配置空间的读取实验3实验一I/O地址译码实验6实验二中断控制器实验8实验三可编程定时器计数器(8253)实验12实验四可编程并行接口(8255)实验14实验五可编程串行接口(8251)实验16实验六综合设计实验18附录一IO方式读PCI配置空间的参考程序22附录二中断方式读PCI配置空间的参考程序25前言一、实验系统的组成TPC-2003A通用32位微机接口实验系统的硬件件部分主要由一块PCI总线接口卡、实验台(箱)两部分组成,两者之间通过50线扁平电缆相连。PCI总线接口卡可以插入PC系列微机中任意一个PCI扩展插槽,该卡的主要功能是使用PLX9054和CPLD把PCI总线时序转换成50芯ISA总线时序,并将与实验有关的总线信号加以驱动后引到实验台上提供给实验台使用,同时引出信号还有与“中断”和“DMA”实验操作有关的信号及+5V、+12V、-12V电源。二、实验台的实验电路结构实验台上设有I/O地址译码电路、总线插孔、接口实验常用集成电路、外围电路及通用IC插座等部分组成。外围电路包括逻辑电平开关电路、LED显示电路、时钟电路、单脉冲电路、逻辑笔、复位电路、七段数码管显示电路、基本门电路、继电器及步进电机、小直流电机的驱动电路。下面是我们做实验涉及到的且在实验中不再说明的电路:1、总线插孔采用“自锁紧”插座在标有“总线”区引出数据总线D7D0;地址总线A9A0;读、写信号IOR、IOW;中断请求信号IRQ;DMA请求信号DRQ1;DMA响应信号、DACK1;及AEN信号,供学生搭试各种接口实验电路使用。2、时钟电路可以输出1MHZ、2MHZ两种信号,供A/D转换器、定时器/计数器、串行接口实验使用。3、逻辑电平开关电路如图-5所示,实验台右下方设有8个开关K7K0,开关拨到“1”位置时开关断开,输出高电平,向下打到“0”位置时开关接通输出低电平,电路中串接了保护电阻,使接口电路不直接同+5V、GND相连,可有效地防止学生因误操作、误编程损坏集成电路现象。4、LED显示电路实验台上设有8个发光二极管及相关驱动电路(输入端L7L0),当输入信号为“1”时发光,为“0”时灭。5、单脉冲电路采用RS触发器产生,实验者每按一次开关即可以从两个插座上分别输出一个正脉冲及负脉冲,供“中断”、“DMA”、“定时器/计数器”等实验使用。6、接口集成电路实验台上有微机原理硬件实验最常用接口电路芯片,包括:可编程定时器/计数器(8253)、可编程并行接口(8255)、数/模转换器(DAC0832)、模/数转换器(ADC0809),这里芯片与CPU相连的引线除片选信号CS外都已连好,与外界连接的关键引脚在芯片周围用“自锁紧”插座引出,供学生实验时使用。其中数/模转换器附有双极性输出,模/数转换器附有双极性输入插座。具体电路可见相应实验中的说明。7、通用集成电路插座实验台上设有4个通用数字集成电路插座,其中插座A、B为20P,插座D为40P,插座D可以插入一个2440脚的集成电路芯片或者2个820脚的集成电路芯片。每个插座引脚附近都有相应的“自锁紧”插座,部分实验(如串行通讯)电路是利用这些插座搭试的。自锁紧插座插入导线时,应稍加力并延顺时针方向旋转一下,才能保证接触良好,拔出时,应先逆时针方向旋转待插头完全松开后,再向上拔出。8、七段数码管显示电路实验台上设有两个共阴极七段数码管及驱动电路,段码为同相驱动器,输入端加高电平选中的数码管亮,位码加反相驱动器,位码输入端高电平选中,从段码与位码的驱动器输入端(段码输入端:a、b、c、d、e、f、g、dp,位码输入端:s1、s2)输入不同的代码即可显示不同数字或符号。七段数码管的字型代码表如下表:9、数字电路实验区实验台上有一块数字电路实验区,设有三种基本门电路(与、或、非)及D触发器,供学生在接口实验或数字电路实验时直接使用。*在此约定:在实验电路图连线在图中均用虚线表示,实线为已连好电路。三、实验用的软件系统在实验中所有的程序用汇编语言编写。为了能够汇编386以上的代码,我们使用的汇编软件是Borland公司的TASM4.1,其他的软件和和操作与学习汇编语言时一样,请同学们事先复习一下汇编语言的相关知识。具体操作在实验时由指导老师告知。四、实验预习要求在每次实验前要尽最大努力预习实验,有参考程序的一定要理解透,没有参考程序的一定要事先编写好,如出现来实验室不知做什么的情况,要扣除相应的实验成绩,由此产生的一切后果,由实验者自负!五、实验报告要求在实验报告中要求有实验目的、实验内容、实验环境、实验步骤、实验结果、实验结论,在实验步骤中应重点体现出在实验过程中自己所做的工作(用文字或图表表示出来),实验结论要回答每次实验的思考题,及自己收获的东西。实验报告要字迹工整,让别人看了赏心阅目。预备实验PCI设备查询和配置空间的读取实验一、实验目的1、学会使用IO端口查找TPC板卡或所有PCI板卡的硬件资源。2、学会使用中断调用查找TPC板卡或所有PCI板卡的硬件资源。二、实验内容1、根据配置空间原理使用IO方式编写一个读PCI配置空间的程序,该程序能够获得本机上TPC板卡或所有PCI板卡的硬件资源(IO,内存,中断占用情况)。2、根据配置空间原理使用中断方式编写一个读PCI配置空间的程序,该程序能够获得本机上TPC板卡或所有PCI板卡的硬件资源(IO,内存,中断占用情况)。三、实验环境PC计算机一台;TPC-2003A实验箱一套;四、实验背景知识因为在所有的实验中,TPC-2003A实验箱是通过一块插在PC机内PCI总线上的TPC卡实现与PC机的信息传递,而PCI总线结构支持P&P即插即用功能,每台微机分配给PCI扩展板的资源(即IO空间、MEM空间、中断和DMA)是动态浮动的,不像ISA总线是固定死的,因此分配给设备的I/O基地址、内存空间基地址、中断号会因为不同的微机而变化,本次实验就是让学生学习如何在DOS下确定当前微机中PCI卡的资源。所谓即插即用,其原理就是在每块支持PNP的板卡上都有一组称为配置空间的寄存器,在这些寄存器中保存有自己对系统资源的需求参数。当Windows启动时,其BIOS引导程序首先读出这些参数,然后综合每块板卡对资源的需求,统一对整个系统的资源进行分配,从而避免用户干预。为了BIOS引导程序能够正确的对板卡所需的资源进行动态分配,其配置空间寄存器中存储的是物理空间大小的相对信息,而不是绝对的物理地址。PCI配置空间是长度为256个字节的一段内存空间,其前64个字节包含PCI接口的信息,我们可以通过它来访问PCI接口。PCI配置空间是长度为256个字节的一段内存空间,其前64个字节包含PCI接口的信息如下表所示,我们可以通过它来访问PCI接口。配置空间地址字节3字节2字节1字节000H设备ID,DeviceID供应商ID,VendorID04H状态,Status命令,Command08H类代码ClassCode版本IDRevisonID0CH自测BIST首部类型HeaderType延迟定时器LatencyTimerCache行容量CacheLineSize10H基址寄存器0,BaseAddressRegister#014H基址寄存器1,BaseAddressRegister#118H基址寄存器2,BaseAddressRegister#21CH基址寄存器3,BaseAddressRegister#320H基址寄存器4,BaseAddressRegister#424H基址寄存器5,BaseAddressRegister#528HCardBus卡信息结构指针,CardBusCISPointer2CH子系统IDSubsystemID子系统供应商IDSubsystemVendorID30H扩展ROM基址,ExpansionROMBaseAddress34H保留,Reserved功能指针CapabilitiesPointer38H保留,Reserved3CH优先级请求MAX_Lat时间片请求MIN_Gnt中断引脚InterruptPin中断线InterruptLine这64个字节中,第一个32位的双字包含了DeviceID和VendorID。DeviceID是一个16位的数,如果这个单元没有安装,在启动时,计算机就会显示FFFFH;如果安装了,在0000H和FFFFH之间就会有一个确定的数代表它。BaseAddress,即基址寄存器,是32位寄存器,可以是IOBaseAddress和MemBaseAddress.这是由第0位决定的,第0位由硬件强制置0或1。加电后,引导程序通过向基址寄存器中写入全1,并且读返回值以获得设备所需的地址空间大小,然后操作系统统一给它分配一块I/O或内存空间,并把基地址写回到基址寄存器。这样驱动程序可以通过读这个基址寄存器就可以取得基地址,再加上设备寄存器偏址就可以访问这个寄存器了。InterruptLine,中断线寄存器,它是一个8位寄存器,用来报告中断的连接情况,它是一个可读可写的寄存器,并且凡是使用中断引脚的设备必须实现它,系统引导程序在进行初始化和配置时要将中断连线的信息写入该寄存器。这个寄存器的值表示设备的中断引脚与系统中断控制器的哪个输入端相连。设备驱动程序和操作系统可以利用这个信息来确定中断优先级和向量。该寄存器的值要受系统体系的支配。对于X86体系结构,该寄存器的值和标准8259配置中的IRQ编号(015)相对应。255表示没有连到任何中断控制器。15255之间的值为保留值。InterruptPin,中断引脚寄存器。该寄存器是一个只读寄存器,用来表示设备使用了那一根中断线。其值的1,2,3,4分别对应INTA#,INTB#,INTC#,INTD#。0表示没有使用任何中断。PCI配置机构采用两个32位IO端口,位于地址0xCF8和0xCFC。这两个端口是:(1)32位配置地址端口,占用IO地址的0xCF8到0xCFB(2)32位配置数据端口,占用IO地址的0xCFC到0xCFF访问配置寄存器的步骤为:1将目标总线编号,设备编号,功能编号和双字编号写配置地址端口,并设置使能位为1。2读或写配置数据寄存器,北桥将指定的目标总线与PCI总线范围做比较,如果目标总线在此范围内,则启动PCI配置读或写操作。配置地址口的格式为:在不同的操作系统下,对配置空间有不同的存取方法,在DOS下我们只需要使用简单的汇编指令IN或OUT就可了。幸运的是Win9x下其保护机制没有限制这两个端口的读写,固也可以使用这样的办法。WinNT下提供READ_PORT_ULONG以及WRITE_PORT_ULONG函数来对其读写。读写配置数据寄存器还可以调用PCIBIOS函数的中断INT1AH来实现。中断调用参数如下表所示:入口参数返回值功能描述AX=0B101HEDX='PCI'ASCII字符AH=执行状态代码AL=硬件机器BX=主从版本号CL=系统中最大总线号CF=完成状态,1=错误,0=成功检查PCIBIOS是否存在,版本号为多少AX=0B102HCX=设备ID号(0-65535)DeviceIDDX=厂商ID号(0-65534)VendorIDSI=索引号(0-N)AH=执行状态代码BH=总线号(0-255)BL=设备号(高5位),功能号(低3位)CF=完成状态,1=错误,0=成功查找指定厂商和设备号的PCI板卡的位置AX=0B103HECX=类代码,在低三位SI=索引号(0-N)AH=执行状态代码BH=总线号(0-255)BL=设备号(高5位),功能号(低3位)CF=完成状态,1=错误,0=成功查找指定类代码和索引的PCI设备的位置AX=0B108H/0B109H/0B10AHBH=总线号(0-255)BL=设备号(高5位),功能号(低3位)DI=寄存器号AH=执行状态代码CL/CX/ECX=读到的字节/字/双字CF=完成状态,1=错误,0=成功字节/字/双字方式读取配置空间数据AX=0B10BH/0B10CH/0B10DHBH=总线号(0-255)BL=设备号(高5位),功能号(低3位)DI=寄存器号CL/CX/ECX=待写入的字节/字/双字AH=执行状态代码CF=完成状态,1=错误,0=成功字节/字/双字方式写配置空间数据返回值AH=00H成功;81H不支持的函数;83H错误的厂商ID值;86H设备未发现;87H错误的寄存器号;88H设置失败;89H缓冲区太小本次实验的源程序见实验讲义附录。五、实验步骤1、了解并熟悉PCI即插即用配置空间原理。2、了解并熟悉IO方式或中断方式获取配置空间的方法。3、编写端口读写方式或中断方式获得TPC板卡或所有PCI板卡的硬件资源的程序。4、运行程序并记录结果。六、思考题(用于写实验报告的实验结论):1、在DOS下访问PCI即插即用配置空间的方法有哪些?2、在WINDOWXP下不用编程怎么可以得到PCI设备的配置信息?实验一I/O地址译码实验实验目的掌握I/O地址译码电路的工作原理。实验内容在完成硬件连接的基础上,编写程序控制I/O地址译码的输出,以控制实验箱上的D触发器输出高、低电平信号,从而控制LED灯的亮灭。实验环境PC计算机一台;TPC-2003A实验箱一套;实验背景知识实验电路如图1.1所示,图中虚线需实验者自己连线。其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。译码输出端Y0Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H287H;Y1:288H28FH;Y2:290H297H;Y3:298H29FH;Y4:2A0H2A7H;Y5:2A8H2AFH;Y6:2B0H2B7H;Y7:2B8H2BFH,当CPU执行I/O指令且地址在280H2BFH范围内,译码器选中,必有一根译码线输出负脉冲。例如:执行下面两条指令MOVDX,查找出的PCI卡的I/O基址+0HOUTDX,AL(或INAL,DX)Y0输出一个负脉冲,执行下面两条指令MOVDX,查找出的PCI卡的I/O基址+8HOUTDX,AL(或INAL,DX)Y1输出一个负脉冲。(注意:在图1.1中连接的是Y4,请同学分析指令该怎么改?)注意:命令中的端口地址要根据PCI卡的I/O基址再加上偏移量计算出来的,不同的微机器PCI卡的I/O基址可能不同,需要执行预备实验一的程序事先查找出来。计算公式为:计算出的地址=查找出的PCI卡的I/O基址+偏移量;(其中:偏移量=288H-280H=8H)图1.1I/O地址译码输出控制D触发器电路图实验电路中D触发器CLK端输入脉冲时,上升沿使Q端输出高电平L7发光,CD端加低电平L7灭。也就是利用Y4和Y5输出的脉冲信号控制L7闪烁发光(亮、灭、亮、灭、),时间间隔通过软件延时实现。参考程序(YMQ.ASM)如下:ioportequ预备实验查找出的PCI卡的I/O基址-0280houtport1equioport+2a0houtport2equioport+2a8hcodesegmentassumecs:codestart:movdx,outport1outdx,alcalldelay;调延时子程序movdx,outport2outdx,alcalldelay;调延时子程序movah,1int16hjestartmovah,4chint21hdelayprocnear;延时子程序movbx,2000lll:movcx,0ll:looplldecbxjnelllretdelayendpcodeendsendstart*一定要读懂这个程序,以后的实验如就以这个程序为模板编!实验步骤1、按原理图认真完成硬件的连线。(实验报告中画出原理图)2、编写控制程序。(实验报告中写出源程序)3、编译并运行程序,观察所连接的LED灯是否按程序的要求亮灭。*在实验报告中要写清自己在每一步所做的工作内容。思考题(用于写实验报告的实验结论):1、D触发器的D输入端为什么要接在+5V上?2、在程序中产生控制脉冲是不是只能用OUT指令实现,说明理由?3、其他收获?实验二中断控制器实验实验目的、掌握PC机中断处理系统的基本原理。、学会编写中断服务程序。实验内容直接用实验箱上的手动产生单脉冲作为中断请求信号,每按一次开关产生一次中断。编写中断服务程序,要求在每次中断时,在屏幕上显示一次“TPCpcicardInterrupt”,中断10次后程序退出。实验环境PC计算机一台;TPC-2003A实验箱一套;实验背景知识PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。IBMPC、PC/XT机内有一片8259中断控制器对外可以提供8个中断源:中断源中断类型号中断功能IRQ008H时钟IRQ109H键盘IRQ20AH保留IRQ3OBH串行口2IRQ40CH串行口1IRQ50DH硬盘IRQ60EH软盘IRQ70FH并行打印机8个中断源的中断请求信号线IRQ0IRQ7在主机的62线ISA总线插座中可以引出,系统已设定中断请求信号为“边沿触发”,普通结束方式。对于PC/AT及286以上微机内又扩展了一片8259中断控制,IRQ2用于两片8259之间级连,对外可以提供16个中断源:中断源中断类型号中断功能IRQ8070H实时时钟IRQ9071H用户中断IRQ10072H保留IRQ11O73H保留IRQ12074H保留IRQ13075H协处理器IRQ14076H硬盘IRQ15077H保留PCI总线中的中断线只有四根,INTA#、INTB#、INTC#、INTD#,它们需要通过P&P的设置来和某一根中断请求信号线相连接才能进行中断申请。由于TPC卡使用PCI总线,所以分配的中断号每台微机可能都不同,编程时需要了解当前的微机使用那个中断号并进行设置,需要执行预备实验一的程序事先查找出来。由于TPC卡使用9054芯片连接微机,所以在编程使用微机中断前需要使能9054的中断功能,代码如下:movdx,ioport_cent+68h;设置tpc卡中9054芯片io口,使能中断inax,dxorax,0900houtdx,ax其中IOPORT_CENT是9054芯片寄存器组的I/O起始地址,每台微机可能都不同,编程时需要了解当前的微机使用哪段并进行设置,需要执行预备实验一的程序事先查找出来。+68H的偏移是关于中断使能的寄存器地址,设置含义如下:设置INTCSR(68H)寄存器,中断模式设置:BITS功能81:能够产生PCI中断0:禁止产生PCI中断111:能够LOCAL端输入的中断送到PCI端0:禁止LOCAL端输入的中断送到PCI端其它位为零即可,更多内容参看9054芯片数据手册程序退出前还要关闭9054的中断,代码如下:movdx,ioport_cent+68h;设置tpc卡中9054芯片io口,关闭中断inax,dxandax,0f7ffhoutdx,axPC机中断控制器8259的地址为20H、21H,编程时要根据中断类型号设置中断矢量,8259中断屏蔽寄存器IMR对应位要清零(允许中断),中断服务结束返回前要使用中断结束命令:MOVAL,20HOUT20H,AL中断结束返回DOS时应将IMR对应位置1,以关闭中断。参考程序程序名:INT.ASM在程序中假设使用的中断号是IRQ9。;386以上微机适用;纯dos下才能使用;tasm4.1或以上编译datasegmentint_vectEQU071H;中断0-7的向量为:08h-0fh,中断8-15的向量为:70h-77hirq_mask_2_7equ011111011b;中断掩码,中断0-7时从低至高相应位为零,中断8-15时第2位为零irq_mask_9_15equ011111101b;中断0-7时全一,中断8-15时从低至高相应位为零ioport_centequ0d800h;tpc卡中9054芯片的io地址,要根据实际改csregdw?ipregdw?;旧中断向量保存空间irq_timesdw00h;中断计数msg1db0dh,0ah,'TPCpcicardInterrupt',0dh,0ah,'$'msg2db0dh,0ah,'Pressanykeytoexit!',0dh,0ah,'$'msg3db0dh,0ah,'PressDMCtointerrupt10timesandexit!',0dh,0ah,'$'dataendsstackssegmentdb100dup(?)stacksendscodesegmentassumecs:code,ds:data,ss:stacks,es:datastart:;EnableLocalInterruptInput.386climovax,datamovds,axmoves,axmovax,stacksmovss,axmovdx,ioport_cent+68h;设置tpc卡中9054芯片io口,使能中断inax,dxorax,0900houtdx,axmoval,int_vect;保存原中断向量movah,35hint21hmovax,esmovcsreg,axmovipreg,bxmovax,cs;设置新中断向量movds,axmovdx,offsetint_procmoval,int_vectmovah,25hint21hinal,21h;设置中断掩码andal,irq_mask_2_7out21h,alinal,0a1handal,irq_mask_9_15out0a1h,almovax,datamovds,axmovdx,offsetmsg2movah,09hint21hmovdx,offsetmsg3movah,09hint21hmovirq_times,0ahstiloop1:cmpirq_times,0;等待中断并判断中断10次后退出jzexitmovah,1int16hjnzexit;按任意键退出jmploop1exit:climovbl,irq_mask_2_7;恢复中断掩码notblinal,21horal,blout21h,almovbl,irq_mask_9_15notblinal,0a1horal,blout0a1h,almovdx,ipreg;恢复原中断向量movax,csregmovds,axmovah,25hmoval,int_vectint21hmovdx,ioport_cent+68h;设置tpc卡中9054芯片io口,关闭中断inax,dxandax,0f7ffhoutdx,axmovax,4c00hint21hint_procprocfar;中断处理程序clipushaxpushdxpushdsdecirq_timesmovax,data;Interrupttodomovds,axmovdx,offsetmsg1movah,09hint21hmoval,20h;SendEOIout0a0h,alout20h,alpopdspopdxpopaxstiiretint_procendpcodeendsendstart实验步骤1、认真完成硬件的连线。在本实验中只须用一根导线将手动单脉冲输出与实验箱上方的IRQ插孔连接即可。2、编写程序。(实验报告中写出源程序)3、编译并运行程序,观察并记录程序的运行结果,并说明是否正常。*在实验报告中要写清自己在每一步所做的工作内容。思考题(用于写实验报告的实验结论):1、为什么在实验中不进行对8259初始化的编程操作?2、在程序中,进行中断屏蔽的操作是通过哪几条指令实现的,为什么要这么做?3、其他收获?实验三可编程定时器计数器(8253)实验实验目的掌握8253的基本工作原理和编程方法。实验内容1、编程验证8253计数器方式0的工作特点。2、利用8253产生一个频率1HZ的方波信号,编写相应的控制程序,并用LED显示信号。实验环境PC计算机一台;TPC-2003A实验箱一套;实验背景知识1、实验内容1的实现提示如采用8253的计数器1实现,可按图3.1中的虚线连接电路,在程序中将计数器0设置为方式0,计数器初值为N(N可以小一点),用手动逐个输入单脉冲,把一个LED灯与OUT0相连,可以观察到当输入N+1个脉冲后LED会变亮表明OUT0变为高电平。图3.18253实验电路图12、实验内容2的实现提示要产生1HZ的方波信号,就需要8253的计数器对实验箱上的连续脉冲信号,进行方式3的分频计数操作,为了使计数初值不至于很大,我们可以采用实验箱上的1MHZ脉冲信号,另外由于一个计数通道的最大计数值为65536,因此需要两个计数通道级连工作,硬件连线如图3。2所示,在程序中需将计数器0、计数器1分别设置为方式3,计数初值设为1000(十进制),用LED观察OUT1输出电平的变化(频率1HZ)。学生只须进行虚线部分和OUT1与LED的连线。图3.28253实验电路图2实验内容2的参考程序(E8253_2.ASM)如下:ioportequ预备实验查找出的PCI卡的I/O基址-0280hio8253aequioport+280hio8253bequioport+281hio8253cequioport+283hcodesegmentassumecs:codestart:movdx,io8253c;向8253写控制字moval,36h;使0通道为工作方式3outdx,almovax,1000;写入循环计数初值1000movdx,io8253aoutdx,al;先写入低字节moval,ahoutdx,al;后写入高字节movdx,io8253cmoval,76h;设8253通道1工作方式3outdx,almovax,1000;写入循环计数初值1000movdx,io8253boutdx,al;先写低字节moval,ahoutdx,al;后写高字节movah,4ch;程序退出int21hcodeendsendstart五、实验步骤1、认真完成硬件的连线。2、编写程序。(实验报告中写出源程序)3、编译并运行程序,观察并记录程序的运行结果,并说明是否正常。注意:由于这次实验要进行两个较独立内容的实验,每一个都需写出上面3步的内容。六、思考题(用于写实验报告的实验结论):1、在你做实验的过程中8253的4个端口的地址分别是什么?2、其他收获?实验四可编程并行接口(8255)实验实验目的掌握8255方式0的工作原理及使用方法。实验内容编程控制8255从C口接收逻辑电平开关输入二进制数据,再从A口输出到LED上,实现开关对LED亮灭的控制。.要求程序运行后,按PC机键盘的任意键退出。实验环境PC计算机一台;TPC-2003A实验箱一套;实验背景知识1、实验电路如图4.1所示,8255的C口接逻辑电平开关K0K7,A口接LED显示电路L0L7,图中虚线需实验者自己连线。图4.18255实验电路图2、由于在本次实验中8255控制的是简单的外设,所以工作在方式0下就可以完成任务。3、参考程序(E8255.Asm)如下:ioportequ预备实验查找出的PCI卡的I/O基址-0280hio8255aequioport+288hio8255bequioport+28bhio8255cequioport+28ahcodesegmentassumecs:codestart:movdx,io8255b;设8255为C口输入,A口输出moval,8bhoutdx,alinout:movdx,io8255c;从C口输入一数据inal,dxmovdx,io8255a;从A口输出刚才自C口outdx,al;所输入的数据movdl,0ffh;判断是否有按键movah,06hint21hjzinout;若无,则继续自C口输入,A口输出movah,4ch;否则返回int21hcodeendsendstart实验步骤1、认真完成硬件的连线。2、编写程序。(实验报告中写出源程序)3、编译并运行程序,观察并记录程序的运行结果,并说明是否正常。思考题(用于写实验报告的实验结论):1、在你做实验的过程中8255的4个端口的地址分别是什么?2、要在这个实验中采用8255的方式1或方式2实现有什么困难?3、其他收获?实验五可编程串行接口(8251)实验实验目的1、了解串行通讯的基本原理。2、掌握串行接口芯片8251的工作原理和编程方法。实验内容编程控制8251,实现把从PC机键盘上输入字符的ASCII码加1后发送出去,再接收回来,并在屏幕上显示接收到的字符,实现8251的自发自收。.实验环境PC计算机一台;TPC-2003A实验箱一套;实验背景知识1、实验电路如图5.1所示,由于实验箱中没有8251,需要在通用插座中插入8251芯片,8253计数器用于产生8251的发送和接收时钟。由于是自收发,所以TXD和RXD要连在一起。图5.18251实验电路图2、图示电路8251的控制口地址为2B9H,数据口地址为2B8H。3、8253计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。4、收发可采用查询方式。5、参考程序:E8251.ASMdatasegmentioportequ预备实验查找出的PCI卡的I/O基址-0280hio8253aequioport+280hio8253bequioport+283hio8251aequioport+2b8hio8251bequioport+2b9hmes1db'youcanplayakeyonthekeybord!',0dh,0ah,24hmes2ddmes1dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovdx,io8253b;设置8253计数器0工作方式moval,16houtdx,almovdx,io8253amoval,52;给8253计数器0送初值outdx,almovdx,io8251b;初始化8251xoral,almovcx,03;向8251控制端口送3个0delay:callout1loopdelaymoval,40h;向8251控制端口送40H,使其复位callout1moval,4eh;设置为1个停止位,8个数据位,波特率因子为16callout1moval,27h;向8251送控制字允许其发送和接收callout1ldsdx,mes2;显示提示信息movah,09int21hwaiti:movdx,io8251binal,dxtestal,01;发送是否准备好jzwaitimovah,01;是,从键盘上读一字符int21hcmpal,27;若为ESC,结束jzexitmovdx,io8251aincaloutdx,al;发送movcx,0F00hs51:loops51;延时next:movdx,io8251binal,dxtestal,02;检查接收是否准备好jznext;没有,等待movdx,io8251ainal,dx;准备好,接收movdl,almovah,02;将接收到的字符显示在屏幕上int21hjmpwaitiexit:movah,4ch;退出int21hout1procnear;向外发送一字节的子程序outdx,alpushcxmovcx,0F00hgg:loopgg;延时popcxretout1endpcodeendsendstart实验步骤1认真完成硬件的连线。2编写程序。(实验报告中写出源程序)3编译并运行程序,观察并记录程序的运行结果,并说明是否正常。思考题(用于写实验报告的实验结论):1、在你做实验的过程中8251的CTS为什么总接地,不接行不行?2、其他收获?附录一IO方式读PCI配置空间的参考程序程序PORTR.ASM如下:;386以上微机适用;win9x/me/dos下可以用;tasm4.1或以上编译;*;*PCI端口读*;*端口读写方式*;*;datasegmentio_port_addreequ