计算机硬件技术实践报告题目定时中断采样与开关控制姓名专业自动化(核电运行方向)班级2011032学号上海电力学院自动化工程学院目录一、实验目的············································二、小组成员分工·········································三、实验内容········································四、设计任务···········································五、所用器件········································主要器件简介····································六、原理图和程序流程图·································七、程序代码········································八、成果展示····································九、收获及体会····································定时中断采样与开关控制一、实验目的通过本项课程设计,对计算机硬件课程中涉及的芯片结构、控制原理、硬件编程等方面有一定的感性认识和实践操作能力,更好的理解计算机硬件课程中讲述的基本原理和概念。进行计算机硬件课程设计前,应学习并掌握了8086/8088汇编语言编程方法,掌握了8255、8253、8259、存储器等芯片的基本结构和工作原理,掌握了芯片编程控制的方法。通过本项课程设计,对计算机硬件课程中涉及的芯片结构、控制原理、硬件编程等方面有一定的感性认识和实践操作能力,更好的理解计算机硬件课程中讲述的基本原理和概念。二、小组成员分工及成果廖丽霞20111537:和组员共同完成报告李慧20111517:和组员共同完成报告三、实验内容本实验要完成的目标是通过电位器W1产生的0-5V电压,8259每2秒中断一次,中断后对0809采样一次,比较0809的采样值,0809的输入值在0-2.5V,4个开关量输出控制的灯全灭,输入值在大于2.5V小于或等于3V时,有一个灯亮,输入值在大于3V小于等于3.5V时2个灯亮,输入值在大于3.5V小于等于4V时3个灯亮,输入值在大于4V时4个灯亮。四、设计任务1、选用8086和适当的存储器及接口芯片完成相应的功能。2、画出详细的硬件连接图。3、给出程序设计思路、画出软件流程图。5、给出所有程序清单并加上必要注释。6、完成设计说明书(列出所用器件型号)。五、所用器件CPU8086、并行接口8255A、中断申请8259A、8253计数器、0808A/D转换器、地址锁存器74273等主要器件简介:8086主要功能:8086CPU包括两大部分:EU和BIUBIU不断地从存储器取指令送入IPQ,EU不断地从IPQ取出指令执行;EU和BIU构成了一个简单的2工位流水线;指令预取队列IPQ是实现流水线操作的关键(类似于工厂流水线的传送带)。主要引脚:数据信号线(DB)与地址信号线(AB):AD7~AD0:三态,地址/数据复用线。ALE有效时为地址的低8位;地址信号有效时为输出,传送数据信号时为双向;A19~A16:三态,输出。高4位地址信号,与状态信号S6-S3分时复用;A15~A8:三态,输出。输出8位地址信号;WR:三态,输出。写命令信号;RD:三态,输出。读命令信号;IO/M:三态,输出。指出当前访问的是存储器还是I/O接口;高:I/O接口,低:内存;DEN:三态,输出。低电平时,表示DB上的数据有效;RESET:输入,为高时,CPU执行复位;ALE:三态,输出。高:AB地址有效;DT/R:三态,输出。数据传送方向,高:CPU输出,低:CPU输入图1.8086芯片引脚图8253概貌介绍:3个16位的定时/计数器(通道);4引脚双列直插式;最高计数频率2MHz;TTL电平兼容;单电源+5V供电。主要构成:计数器(3个)包括:16位初值寄存器(只写)、16位计数寄存器(减1计数器)、16位锁存寄存器(只读);控制寄存器(1个):存放控制命令字(8位)(只写);占用4个地址:3个计数器,1个控制寄存器。主要引线:CLKn:时钟脉冲输入,计数器的计时基准;GATEn:门控信号输入,控制计数器的启停;OUTn:计数器输出信号,不同工作方式下产生不同波形。(n=0~2)。图2.8253内部结构图图3.8253芯片引脚图8255主要功能:含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存/缓冲能力。可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。主要引脚:连接外设端的引脚:PA0~PA7、PB0~PB7、PC0~PC7(分别对应A、B、C三个8位输入/输出端口)三个端口可通过编程分别指定为输入或输出口。其中,C口即可用作独立的输入/输出口,也可用作A、B口的握手联络信号(控制信号输出或状态信号输入)。图4.8255芯片引脚图8259主要功能:①一片8259A可以接受并管理8级可屏蔽中断请求,通过9片8259A级联可扩展至64级可屏蔽中断优先控制。②对每一级中断都可以通过程序来屏蔽或允许。③在中断响应周期,8259A可为CPU提供相应的中断类型码。④具有多种工作方式,并可通过编程来加以选择。主要引脚:D7~D0:双向、三态数据线,与CPU系统总线连接;RD——:读信号,输入,低电平有效。当有效时CPU对8259A进行读操作;WR——:写信号,输入,低电平有效。当有效时CPU对8259A进行写操作;A0:端口地址选择信号,输入,由8259A片内译码,选择内部寄存器;CS:片选信号,输入,低电平有效。当有效时8259A被选中;SP/EN—————:双向信号线,用于从片选择或总线驱动器的控制信号;INT:中断请求信号,与CPU的中断请求信号相连;INTA————:中断响应信号,与CPU的中断应答信号相连;CAS2~CAS0:级联信号线,作为主片与从片的连接线,主片为输出,从片为输入,主片通过CAS2~CAS0的编码选择和管理从片;IR7~IR0:中断请求输入信号,由外设输入。图5.8259芯片引脚图ADC0808如下特点:8通道(8路)输入;8位字长;逐位逼近型;转换时间100μs;内置三态输出缓冲器(可直接接到数据总线上)。引脚功能:D7~D0:输出数据线(三态)IN0~IN7:8通道(路)模拟输入ADDA、ADDB、ADDC:通道地址(通道选择)ALE:通道地址锁存START:启动转换EOC:转换结束,可用于查询或作为中断申请OE:输出允许(打开输出三态门)CLK:时钟输入(10KHz~1.2MHz)VREF(+)、VREF(-):基准参考电压图6.ADC0808芯片引脚图74HC138主要功能:74HC138作用原理于高性能的存贮译码或要求传输延迟时间短的数据传输系统,在高性能存贮器系统中,用这种译码器可以提高译码系统的效率。技术参数:电压2.0~6.0V;驱动电流±5.2mA;传输延迟12ns@5V;逻辑电平CMOS;功耗考量低功耗或电池供电应用;封装与引脚SO16、SSOP16、DIP16、TSSOP16。图7.74HC138引脚图74273主要功能:公共时钟复位八D触发器。主要引脚:1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。图8.74273引脚图六、原理图和程序流程图原理图:图9.原理图七、程序代码DATASEGMENTNUMDB0DATAENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSCODESEGMENT'code'ASSUMECS:CODEDS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,01030HMOVAL,74HOUTDX,ALMOVDX,01010HMOVAX,2000OUTDX,ALMOVAL,AHOUTDX,ALMOVDX,01030HMOVAL,36HOUTDX,ALMOVDX,01000HMOVAX,1000;输入为1M频率,且OUT0接CLK1,1M*1000000=1SOUTDX,ALMOVAL,AHOUTDX,ALMOVDX,0220CHMOVAL,8AHOUTDX,ALCLI;修改中断向量前关中断MOVAX,0MOVES,AX;es段=0MOVSI,60H*4;设置中断向量96号中断MOVAX,OFFSETint0;中断入口地址;STOW;MOVES:[SI],AX;[si]=60h*4,存放入口地址-IP8086MOVAX,CS;segint0-CS8086;STOSW;MOVES:[SI+2],AX;MOVAL,00010011bMOVDX,400H;ICW1=00010011B//010000010000A0=0,D4=1,CS=0400HOUTDX,ALMOVAL,060h;060bMOVDX,402h;ICW2=01100000B//010000000010A0=1,CS=0402HOUTDX,ALMOVAL,1bh;ICW4=00011011B//1bhOUTDX,ALMOVDX,402hMOVAL,00h;OCW1,八个中断全部开放00hOUTDX,ALMOVAL,20H;EOIOUT20H,ALMOVDX,400h;//010000000000A0=0,CS=0MOVAL,60H;OCW2,非特殊EOI结束中断OUTDX,AL;OCW2可以不赋值;完成8259初始化STI;开中断LI:;8086模型有问题,它取得的中断号是最后发到总线上的数据,并不是由8259发出的中断号;所以造成了要在这里执行EOI的假相,这三句与下面的指令效果是一样的MOVDX,400H;CS=0400HMOVAL,60h;如果改为其它值,将出错,因为只有60H有中断向量OUTDX,ALJMPLI;中断服务程序int0:CLI;关中断MOVDX,02208HMOVAL,00HOUTDX,ALMOVAL,01HOUTDX,ALMOVAL,02HOUTDX,ALMOVCX,10000LOP1:NOPLOOPLOP1WAIT1:INAL,DXANDAL,10HJZWAIT1MOVDX,02204HINAL,DXCMPAL,0CCH;大于4VJAMAXCMPAL,0B3H;大于3.5V且小于等于4VJAMA2CMPAL,99H;大于3V且小于等于4VJAMA3CMPAL,80H;大于2.5V且小于等于3VJAMINMOVAL,00HJMPDISPLAYMIN:MOVAL,08HJMPDISPLAYMA3:MOVAL,0CHJMPDISPLAYMA2:MOVAL,0EHJMPDISPLAYMAX:MOVAL,0FHDISPLAY:MOVDX,02200HOUTDX,ALMOVDX,2008HMOVAL,00HOUTDX,ALSTI;开中断IRET;返回主程序CODEENDSENDSTART八、成果展示采样值0x≤2.5,四个灯全灭:采样值2.5x≤3,一个灯亮:采样值3x≤3.5,两个灯亮:采样值3.5x≤4,三个灯亮:采样值X4,四个灯亮:九、收获及体会这次课程设计中,最重点的部分应该属于软件部分。因为刚刚学习了《计算机硬件技术》这门课程,所以软件设计之前,自己大概想好了大体的思路,但是程序需要严格的逻辑,严格的语法,按着自己的思路去写程序是,总是发现错误,或者程序不稳定,有时是达不到预期的效果。经过和同组成员的一番努力,整个程序完成了,虽然已经达到了题目的要求,但是自己觉得还可以继续改善。通过这次课程设计使我懂得了理论与实际相结合的重要性,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正所要的。在课程设计的过程中难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过