《微机实践全部实验.docx》由会员分享,可在线阅读,更多相关《微机实践全部实验.docx(32页珍藏版)》请在课桌文档上搜索。
1、实验一开关状态显示【实验目的】熟悉实验箱和软件开发平台的使用。了解基本1/0端口的操作方法和技巧,掌握编程和调试基本技能。【实验内容】利用74LS244作为输入口,读取开关状态,根据给定表格中开关状态对应的输出关系,通过74LS273驱动发光二极管显示出来。【实验区域电路连接图】参考上图连线:YO-Yl接K1K2(对应Jl、J2);Q0Q7接L1L8(对应J3至J10);CSl接800OH孔(对应J12);CS2接9000H孔(对应Jl1);IoWR-IoWR;IoRDIORD;然后用数据排线连接JX7-JX17(BUS2),【程序框图】【编程】CODESEGMENTASSUMECS:CODE
2、ORG1200HSTART:MOVDX,8(X)0HINAL,DXTESTALtOlHJNZYl/测试AL是否等于OIH,若不等于,则跳入循环Yl/TESTAL.02HJNZY2/测试AL是否等于02H,若不等于,则跳入循环Y2/MOVDX,9000HMOVAL,OFFH/点亮所有的灯/OUTDX,ALJmpstartYkTESTAL,02HJNZY3/测试AL是否等于02H,若不等于,则跳入循环Y3/MOVDX,9000HMOVAL,OAAH/点亮奇数号灯/OUTDX,ALjmpstartY2:MOVDX,9000HMOVAL,55H/点亮偶数号灯/OUTDX,ALJMPSTARTY3:MO
3、VDX,9000HMOVAL,OOH/所有灯全灭/OUTDX,ALJMPSTARTCODEENDSENDSTART【问答题】1I/O端口的寻址方式有哪2种?在x86系统中,采用哪一种?解:I/O端口的寻址方式有两种:一种是I/O地址与存储器地址统一编址,一种是I/O地址与存储器地址分别独立编址。在x86系统中,采用I/O地址与存储器地址分别独立编址。2、在输入出电路中,为什么常常要使用锁存器和缓冲器?解:一般来说,DO设备速度比CPU执行速度慢,故输入设备的数据线锁存在端口的锁存器中,CPU从端口中读入数据;输出时CPU将数据“打入”缓冲器后就可以退出,外设从缓冲器取数据。【心得体会】第一次的
4、实践课程做的是开关状态显示,通过本次试验的操作,我了解了dice8086实验系统自带键盘、显示电路和监控管理程序,在无PC机的情况下,同样可以脱机通过单步、断点、全速等方法调试实验程序。熟悉了实验箱和软件开发平台的使用。了解基本I/O端口的操作方法和技巧,掌握编程和调试基本技能。掌握了编程和调试基本技能,加深了对课堂上理论知识的学习,将理论与实践动手相结合,更好的掌握了知识,熟练了实验箱和软件结合使用的方法。实验二模拟交通灯实验【实验目的】1 .学习在PC机系统中扩展简单I/O接口的方法。2 .进一步学习编制数据输出程序的设计方法。3 .学习模拟交通灯控制的方法。【实验内容】用8255做输出口
5、,控制十二个发光管(4组红绿黄灯)的亮灭,模拟十字路口交通灯管理。【实验区域电路连接图】PeO-L3;PClfL7;PC2-*L11;PC3L15;红灯PC4T2;PC5T6;PC6-L10;PC7-L14;绿灯PB4-L1;PB5-L5;PB6L9;PB7L131,黄灯8255数据、控制线内部已线连好。【程序框图】【编程】CODESEGMENTASSUMECS:CODEORG100OHPORTAEQU0FF28HPORTBEQU0FF29HPORTCEQU0FF2AHPORTCNEQU0FF2BH;将8255的A、B、C和控制口地址定义,方便使用main:movdx,portcnmoval,
6、80houtdx,al;8255初始化,向控制口写入80H,表示A、B、C三个口都工作在方式Omovdx,por(bmoval,0fX)houtdx,al;B口高位为黄灯,输出OFoH/OFFH使黄灯初始全灭。否则默认输出全0,黄灯会全亮movdx,portcmoval,0fX)houtdx,al;C口高位绿灯,低位红灯。输出OFoH使绿灯全灭红灯全亮calldelay1;延时BEGIN:;主循环标号movdx,portcmoval,0a5houtdx,al;1、3路口绿灯亮,即PC4和PC6为0。对应路口红灯灭,即PCO和PC2为1,所以输出0A5Hcalldelay3;红绿灯转换之间的长延
7、时movdx,portcmoval,0f5houtdx,al;1、3路口绿灯灭,红灯不变,输出0F5Hmovex,81.I:movdx,portbmoval,OaOhoutdx,al;黄灯闪烁次数计数赋初值8;1、3路口黄灯对应PB4和PB6,该两位为0,故输出OAOH或OAFHcalldelay2;黄灯闪烁之间的短延时movdx,portbmoval,OfDhoutdx,alcalldelay2decexjnzLI;1、3路口黄灯灭,输出OFOH或OFFH;闪烁次数计数减1;闪烁次数计数不为0则跳回Ll继续闪烁movdx,portcmoval,OiDh;绿灯全灭,红灯全亮outdx,almo
8、vdx,portcmoval,5ahoutdx,alcalldelay3;2、4路口绿灯亮,红灯灭movdx,portcmoval,Ofahoutdx,al;2、4路口绿灯灭,红灯不变movex,81.2:movdx,portbmoval,50houtdx,alcalldelay2movdx,portbmoval,OfDhoutdx,alcalldelay2decexjnzL2;2、4路口黄灯闪烁8次movdx,portcmoval,OfOhoutdx,al;四个红灯全亮jmpBEGINdelayI:movax,5hmovbx,Ohx:decbxjnzxdecaxjnzxretdelay2:m
9、ovax,Ihmovbx,0hy:decbxjnzydecaxJnZyretdeiay3:movax,20hmovbx,0hz:decbxjnzzdecaxjnzzretcodeendsendmain【问答题】18255A的哪个端口能实现位操作控制(按位置位/复位)?执行控制字写入操作的端口是哪个?解:8255A的C端口能实现位操作控制(按位置位/复位),执行控制字写入操作的端口是命令字端口。2、写出下图中Intel8255A占用的4个端口地址。解:FFFoH、FFF2H.FFF4H、FFF6H。【心得体会】这次的课程设计让我把书本上的理论知识应用在实践中,实现了理论和实践相结合,从中更懂得理
10、论是实践的基础,实践有助于检验理论的正确性的道理。模拟交通灯工作的实验,通过8255A控制发光二极管,PB4-PB7对应黄灯,PC0-PC3对应红灯,PC4-PC7对应绿灯,以模拟交通路灯的管理。在实验中不但要满足题目所提出的要求,更要结合实际,考虑到现实问题,比如说绿灯时间要比红灯时间长。通过本次实验,不仅再次熟悉了8255A,更是对自己编程技术一个很好的锻炼,对我以后参加工作或者继续学习深造将产生巨大的帮助和影响。实验三8253定时器/计数器实验一、实验目的学会8253芯片与微机接口的原理和方法。掌握8253定时器/计数器的工作原理和编程方法。二、实验内容编写程序,将8253的计数器0设置
11、为方式2(频率发生器),计数器I设置为方式3(方波频率发生器),计数器0的输出作为计数器1的输入,计数器1的输出接在一个LED上,运行后可观察到该LED在不停地闪烁。1、编程时用程序框图中的二个计数初值,计算OUTl的输出频率,用表观察LED,进行核对。2、修改程序中的二个计数初值,使OUTl的输出频率为1Hz,用手表观察LED,进行核对。3、上面计数方式选用的是16进制,现若改用BCD码,试修改程序中的二个计数初值,使LED的闪亮频率仍为IHzo三、实验区域电路连接图OgUHOUTO GATEOCLKD 1920DeOUTlD7GATElCLKlCS RD WROUT2AOGATE2AlCL
12、K2 8MHZT参考上图连线:CS3-*0040H;JX8-JX0;IoWRfloWR;IORDflORD;AofA0;Al-Al;GATEO-+5V;GArEli+5V;OUT0-CLK1;OUTlLl;CLKo-0.5MHz;(单脉冲与时钟单元)四、编程指南8253是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,用+5V单电源供电。8253的六种工作方式:(1)方式0:计数结束中断方式1:可编程频率发生(3)方式2:频率发生器方式3:方波频率发生器方式4:软件触发的选通信号方式5:硬件触发的选通信号8253方式控制字D7D6DD4D3D2DlDoSCiSCoRL
13、iRLoM2MiMoBCD00:选择计数器000:锁定计数器000:选择方式0计数码01:选择计数器101:选择低8位001:选择方式1制选抨:10:选择计数器210:选择高8位xlO:选择方式20:二进11:未使用11:选择16位xll:选择方式3制计数(先读写低8位100:选择方式41:BCD后读写高8位)101:选择方式5码计数8253初始化编程1、8253初始化编程8253的控制寄存器和3个计数器分别具有独立的编程地址,由控制字的内容确定使用的是哪个计数器以及执行什么操作。因此8253在初始化编程时,并没有严格的顺序规定,但在编程时,必须遵守两条原则:在对某个计数器设置初值之前,必须先
14、写入控制字;在设置计数器初始值时,要符合控制字的规定,即只写低位字节,还是只写高位字节,还是高、低位字节都写(分两次写,先低字节后高字节)。2、8253的编程命令8253的编程命令有两类:一类是写入命令,包括设置控制字、设置计数器的初始值命令和锁存命令;另一类是读出命令,用来读取计数器的当前值。锁存命令是配合读出命令使用的。在读出计数器值前,必须先用锁存命令锁定当前计数寄存器的值。否则,在读数时,减1计数器的值处在动态变化过程中,当前计数输出寄存器随之变化,就会得到一个不确定的结果。当CPU将此锁定值读走后,锁存功能自动失效,当前计数输出寄存器的内容又跟随减1计数器变化。在锁存和读出计数值的过
15、程中,减1计数器仍在作正常减1计数。这种机制确保了即能在计数过程中读取计数值,又不影响计数过程的进行。五、程序框图关中断设置定时器。方式2送初值2EEH设置定时器1方式3送初值3E8H驱动LED实验步骤1、按连线图连接好,检查无误后打开实验箱电源。在PC端软件开发平台上输入设计好的程序,编译通过后下载到实验箱。3、运行程序后,观察LED闪烁周期(可以看10次或更多次闪烁时间,以提高观察准确度)。再按要求调整初始值,使得闪烁周期为IS时间。如果运行不正常就要检查连线,程序。排查错误,修改程序,直到运行程序正常。七、实验程序清单及注释codesegmentassumecs:codeorg1200h
16、START:movdx,43h;8253控制寄存器地址存入DXmoval,00110100boutdx,al;对8253初始化,计数器0选择16位方式2二进制计数movdx,40h:8253计数器0地址moval,OEEHoutdx,almoval,2Houtdx,al;给计数器0装入初值2EEH,先低字节后高字节movdx,43hmoval,01110110boutdx,al;8253初始化,计数器1选择16位方式3二进制计数movdx,41h:8253计数器1地址moval,0E8houtdx,almoval,3houtdx,al;给计数器1装入初值3E8H,先低字节后高字节jmp$:跳到
17、本地址,使程序在这里无限循环codeendsendSTART计算步骤及结果由公式:片一XNOXNlCLKO计数器1的输出频率(1.5S时):f1=一!一750X1000=1.5Hz,0.5MHz计数器1的输出频率(LOS时):f2=一!一X500X1000=1Hz0.5MHz观察时,计时30s,观察这段时间内LED闪烁多少次,即可估算输出频率。九、程序修改与调试(1)初始程序输出频率是1.5Hz,即LED灯每1.5秒闪烁一次,若要使LED灯每Is闪烁一次,即输出为1Hz。则程序应该作以下修改(十六进制时):MOVAL,OEEHMOVAL,0F4H修改计数器0初值,OUTDX,ALOUTDX,A
18、L750到500MOVAL,2H-MOVAL,IHOUTDX,ALOUTDX,AL(2)若计数方式为BCD码,则程序应该作以下修改:Movauooiio100bMOVAL,OOlIOlOlBOUTDX,ALOUTDX,ALMOVDX,40HMOVDX,40HMOVAL,OEEHfMOVAL,OOHOUTDX,ALOUTDX,ALMOVAL,2HMOVAL,5HMOVAL,OlllOlIOBMOVAL,01IlOlIlBOUTDX,ALOUTDX,ALMOVDX,41HMOVDX,41HMOVAL,0E8H一MOVAL,OOHOUTDX,ALOUTDX,ALMOVAL,3HMOVAL,IOHOU
19、TDX,ALOUTDX,AL十、问答题1、8253初始化编程时需要遵循的原则是什么?答:(1)在赋初值前先写控制字(2)赋初值时,初值的格式要与控制字中的信息相同(3)若控制字中要求高低位都写,先写入低字节再写入高字节(4)按计数器012的顺序进行初始化编程2、简述8253初始化编程的步骤答:(1)写控制字(2)写入初值3、思考二进制计数或BCD码计数时,装入的初值最大值为多少?答:0000H、心得体会8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联
20、系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL本次实验,我重新学习了微机原理中关于8253定时器/计数器的工作原理以及微机接口的原理与方法,加深了对理论知识的理解与认识。同时,对计数器频率的修改,让我再次熟悉了8253输出频率的计算方法,进一步掌握了8253的编程方法,也巩固了工作方式2和3的工作原理与基本作用。实验四D/A转换器实验一、实验目的了解D/A转换的基本原理,掌握DACO832芯片的性能、使用方法及对应的硬件电路。二、实验内容编写程序,
21、要求输出锯齿波、三角波及方波,分别用示波器观察波形;如有能力,把三段程序编在一起,循环输出三种波形。三、实验区域电路连接图连线如下所示:CS5-*8000H;IOWR-IOWR;JX2-JX17;AOUTf示波器。四、编程指南首先须由CS片选信号确定量DAC寄存器的端口地址,然后锁存一个数据通过0832输出,典型程序如下:MOVDX,DAPORT;0832口地址MOVAL,DATA;输出数据到0832OUTDX,AL产生波形信号的周期由延时常数确定。五、程序框图锯齿波方波三角波六、实验步骤按连线图连接好,检查无误后打开实验箱电源。在PC端软件开发平台上输入设计好的程序,编译通过后下载到实验箱。
22、运行程序后,用示波器测量0832左侧AOUT插孔,应有方波或锯齿波输出。如果运行不正常就要检查连线,程序。排查错误,修改程序,直到运行程序正常。七、实验程序清单及注释(1)方波:CODESEGMENTASSUMECS:CODEORG1200HSTART:MOVDX,8000HMOVAL,OOH1.I:OUTDX,ALCALLDELAY;延时XORAL,OFFH;取反JMPLlDELAY:MOVBX,OFFH1.5:DECBXJNZL5RETCODEENDSENDSTART(2)锯齿波:CODESEGMENTASSUMECS:CODEORG100OHSTART:MOVDX,8000HMOVAL,
23、OOH1.2:OUTDX,ALNoP;空操作,相当于延时一个时钟周期INCALJMPL2CODEENDSENDSTART(3)三角波:CODESEGMENTASSUMECSiCODEORG100OHSTART:MOVDX,8000HMOVAL,OOH1.3:OUTDX,ALINCALCMPAL,OFFHJZL4JMPL4JMPL31.4:OUTDX,ALDECALNOPJZL3CODEENDSENDSTART;比较AL和OFFH;相等则跳L4;AL为O则跳L3八、实验波形(1)方波:方波幅值:5.36V方波周期:2.64ms(2)锯齿波锯齿波幅值:5.36V锯齿波幅值:5.36V锯齿波周期:2
24、.36ms(3)三角波:三角波幅值:5.36V三角波周期:5.80ms九、问答题1、DAC产生波形的频率如何调节?频率上限的限制取决于哪些因素?答:只要调节延时程序就可以实现改变频率,如NOP指令。三角波和锯齿波的频率除了取决于程序执行的长度,及延时时间,还取决于CPU频率和转换频率。频率的上限取决于CPU频率和转换频率。2、如果要求产生正弦波一般用什么方法实现?具体如何实施的(给个方案)。答:先确定采样频率,把一个周期平分为N份,算出每一份对应的正弦值;每隔1/N周期,送算出的N个数值;N越大正弦波形越明显,但不能超过系统频率。十、心得体会D/A转换器基本上由4个部分组成,即权电阻网络、运算
25、放大器、基准电源和模拟开关。本次实验让我了解到了D/A转换的基本原理,初步掌握了DAC0832芯片的性能和使用方法以及对应的硬件功能,通过对锯齿波、三角波以及方波程序的编写,对编程的整体把握有了进一步的提高,实验中对示波器的使用我又了解到了测量波形电压值和周期的方法。三个不同程序的编写让我对它了解又进了一步。实验五A/D转换器实验一、实验目的了解模/数转换基本原理,掌握ADC0809的使用方法。掌握A/D转换与计算机的接口方法,了解ADC0809芯片的转换性能及编程,了解计算机如何进行数据采集。二、实验内容编写程序,用查询方式采样输入模拟电压(模拟量电压从实验装置的电位器接入),并将其转换为二
26、进制数字量,用发光二极管显示。三、实验区域电路连接图连线如下所示:INO一AoUTl(可调电压,VIN-+5V);IoWRfloWR;IoRDflORD;CLKf500K(单脉冲与时钟单元);ADDA、ADDB、ADDC-GND;CS4-8000H;JX6-JX17(数据总线)四、编程指南ADC0809的START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号,实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,其输入控制信号为CS和WR,故启动A/D转换只须如下两条指令:MOVDX,ADPORT;ADC0809端口地址OUTDX,AL;发CS和WR信号并送通道地址A/D转
27、换芯片为逐次逼近型,精度为8位,每转换一次约100微秒,所以程序若为查询式,则在启动后要加适当延时。用延时方式等待A/D转换结果,使用下述指令读取A/D转换结果。MOVDX,ADPORT;ADC0809端口地址INAL,DX循环不断采样A/D转换的结果,边采样边显示A/D转换后的数字量。五、程序框图开始六、实验步骤按连线图连接好,参考实验一连接8255和LED让ADe转换结果在LED上显示。电位器只需连接中心抽头,电源内部已经连接好了(电位器无需连接电源,以防短路)。检查无误后打开实验箱电源。在PC端软件开发平台上输入设计好的程序,编译通过后下载到实验箱。运行程序后,观察LED显示,记录代码,
28、计算获得的代码是否与输入电压符合。如果显示的代码末位跳动厉害,影响观察,可以插入延时(大概1秒左右)。如果运行不正常就要检查连线,程序。排查错误,修改程序,直到运行程序正常。修改程序把延时获取A/D数据的方式改成查询EOC获取A/D数据的方式,指定8255的PB3接EOCo七、实验程序清单及注释(1)查询方式CODESEGMENTASSUMECS:CODEORG100OHSTART:MOVDX,0FF2BH;8255控制口地址Moval,100oooooboutdx,al;8255初始化LOPkMOVDX,8000H;0809地址MOVAL,0OUTDX,AL;发CS和WR信号并送通道地址,开
29、始转换MOVBL,255DELAY:DECBLJNZDELAY涎时MOVDX,8000HINAL,DX;读取转换后数据NOTAL;取反,因为LED是共阳极,O才是亮,代表1;同理,1代表0,故需取反。MOVDX,0FF28H;8255的A口地址OUTDX,AL输出到A口点亮LEDJMPLOPICODEENDSENDSTART(2) EOC方式CODE SEGMENTASSUME CS: CODEORG IOOOHSTART: MOV DX, 0FF2BH Mov al,ioooooiob OUT DX, ALLOPl: MOV DX, 8000H MOV AL, 0 OUT DX,ALL0P2
30、: MOV DX, 0FF29H IN AL,DXTEST AL,0000 IOOOBJZ L0P2MOV DX, 8000H IN AL,DX NOTALMOV DX, 0FF28H OUT DX, AL JMP LOPlCODE ENDSEND START;8255初始化;启动转换;读取8255B 口数据;监测PB3是否为1;不为1继续监测;为1,说明转换完成,读取结果八、实验数据A:查询方式:(1)当万用表读数为OV时,二极管全灭,代码为OOooOOoO(2)当万用表读数为4.94V时,二极管全亮,代码为IlUllIl(3)当万用表读数为2.47V时,L8亮(PA7),其余全灭,代码为I
31、oooOOOOB:EoC查询方式:(1)当万用表读数为OV时,二极管全灭,代码为OOooOOoO(2)当万用表读数为4.94V时,二极管全亮,代码为IlUllIl(3)当万用表读数为2.47V时,Ll-L7全亮,L8灭(PA7),代码为OlllUlI从实验数据中可知,获得的代码与输入的电压相符,实验结果和理论误差相差很小。九、问答题1、0809获取A/D转换数据的方法有哪儿种?比较这些方法的优劣。答:(1)延时方式-不使用转换结束信号对一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。(2)查询方式-把EOC作为状态信号A/D转换芯片有表明转换完成的状态信号,例如ADCO809的
32、EOC端。因此,可以用查询方式,软件测试EoC作为状态信号,即可确知转换是否完成,然后进行数据传送。(3)中断方式-把EoC作为中断请求信号把表明转换完成的信号状态(EOC)作为中断请求信号,以中断方式进行数据传送。2、为获取比较平稳的数据显示,采取数据滤波措施,你能想到采用什么滤波措施比较合理?(列出算法,程序实现的流程图)结束十、心得体会本次实验让我加深了对模/数转换的基本原理的理解,进一步掌握了ADC0809的使用方法与A/D转换与计算机的接口方法,深入地了解了ADC0809芯片的转换性能及编程与计算机如何进行数据采集。模数转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为
33、数字信号的电子元件。通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号。由于数字信号本身不具有实际意义,仅仅表示一个相对大小。故任何一个模数转换器都需要一个参考模拟量作为转换的标准,比较常见的参考标准为最大的可转换信号大小。而输出的数字量则表示输入信号相对于参考信号的大小。本次实验计算所得的数据与万用表读出的数据相差甚微,证明仪器以及读书的误差较小,精度较高。还有实验中由于精度较高,需在程序中插入延时(大概1秒左右)。JL实验六8259中断控制(1)一、实验目的1.学习8086/8088和CPU中断系统的知识。2.学习8259中断控制器的使用。二、实验内容编写程序,使8255的A口控
34、制LED灯。CPU执行主程序时四个绿灯亮。用“”作为8259的1R3的输入信号,向CPU请求中断。CPU在中断服务程序中熄灭绿灯,并使4个红灯亮。中断服务程序结束,又返回主程序,再使绿灯亮。三、实验区域电路连接图952 OO4.7KINTR -O ljrrINTA-CJITAEXl一CCSIORDCRDIOVRCWRAO 2叩DID2D3D4D5D6D7R0R1R2R3R4R5R6R7E(SO(S1S2IiiiiiiiCJL儿儿, IRo IR1 IR2 -IR3 -IR4 *IR5 ,IR6 IR7DOD1叱D3D4D5D6D7连线如下所示:(1) 8259的INT连8088的INTR(X1
35、5);(2) 8259的INTA连8088的INTA(X12);(3) “”插孔和8259的3号中断IR3插孔相连;(单脉冲与时钟单元);(4) 8259的CS端接EXl(60H);(5)连JX47X17。(6) IOWRfOWR;(7) IORD-*IORD;(8) A0A0;(9) PAOPA3-L2,L6,L10,L14;PA4PA7-L3,L7,Lll,L15o四、编程指南8255初始化:A口方式0输出。8259初始化:边沿触发。设置中断矢量,将中断服务程序入口地址送入中断矢量表的相应单元,在本系统中,用户可用中断矢量表区域为OoOIOHOoOFFH。主程序控制8255PA0-PA3输
36、出点亮绿灯。编制中断服务程序,使PA4PA7输出点亮红灯,关闭绿灯。初始化8255初始化8259开中断五、程序框图关中断点亮红色LED熄灭绿色LED延时IS发EOI命令点亮绿色LED开中断,返回熄灭红色LED六、实验步骤按连线图连接好,检查无误后打开实验箱电源。在PC端软件开发平台上输入自己编制的程序,编译通过后下载到实验箱。运行程序后,绿色LED灯点亮表面程序运行在主程序。按下AN开关按钮,应当红色LED灯亮,绿色LED灯灭,表明在执行中断服务程序;过一会儿红灯熄灭了,绿灯又亮了起来,表明中断服务程序已返回了主程序。如果运行不正常就要检查连线,程序。排查错误,修改程序,直到运行程序正常。七、
37、实验程序清单及注释CODESEGMENTASSUMECSiCODEIntportiequ0060h1NTPORT2EQU006IH1NTQ3EQUINTREEUP3INTCNTDB?ORG1200HSTART:CLDMOVDX,0FF2BHMOVAL,80H;设置8255方式字:A出10000000OUTDX,ALcallWrintver;writeintrruptMOVALJ3H;ICWl=OoOlOOlIB,边沿触发、单8259、需ICW4MOVDX,INTPORTIOUTDX,ALMOVAL,08H;ICW2=00001000B,IR3(ICW2低两位自动跳变为ILHJ0000101IB
38、)进入则中断号=OBHMOVDX,INTPORT2OUTDX,ALMOVAL,09H;ICW4=0000100IB,非特殊全嵌套方式、缓冲/从、正常EOlOUTDX,ALMOVAL,0F7H;OCW1=111IOI1IBOUTDX,ALMOVINTCNT,OIH;延时STIWATING:MOVDX,0FF28H;主程序绿灯亮(低四位为0则绿灯亮,高四位为1故红灯灭)MOVAL,OFOHOUTDX,ALJmpwatingWRINTVER:MOVAX,OHMOVES,AXMOV DI,002CH;中断向量地址2CH=0BH*41.EAAX,INTQ3STOSW;送偏移地址MOVAX,0000hST
39、OSW;送段地址RETINTREEUP3:CLlPUSHAX中断服务子程序开始PUSHDXMjljVDX,0FF28H;中断服务子程序执行红灯亮MOVAL,OFH;低四位为1则绿灯灭,高四位为O故红灯亮OUTDX,ALMOVBL,OFFHDELAY:MOVAX,OFFFHDELAYI:DECAXJNZDELAYlDECBLJNZDELAYINTRE2:MOVAL,20H;OCW2=001OOOOOB非特殊EOl命令,结束命令,用于完全嵌套方式的中断结束MOVDX,INTPORTIOUTDX,ALPOPDXPOPAXSTI;开系统中断IRETCODEENDSENDSTART实验七8259中断控制
40、(2)一、实验目的1 .学习8086/8088CPU中断系统的知识。2 .学习8259中断控制器的使用。二、实验内容编写程序,使8255的A口控制LED灯。CPU执行主程序时四个绿灯亮。用“”作为8259的1R3的输入信号,向CPU请求中断。CPU在中断服务程序中每中断一次,使4个红色LED灯中每次只亮一个灯,并随每一次中断逐次移动一个灯的位置,中断服务程序结束,又返回主程序,再使绿灯亮。三、实验区域电路连接图82594.7KDOD1叱D3D4D5D6D7INTR -0INTA :ORD嘘 11叩DlD2D3D4D5D6D7mCJCSRDWRADR0R1R2R3R4R5R6R7(sl0Iiii
41、iiiiSp乩儿晓, IRO IR1 IR2 -IR3 -IR4 *IR5 ,IR6 IR7NCNCNCTL连线如下所示:(1) 8259的INT连8088的INTR(X15);(2) 8259的INTA连8088的INTA(X12);(3) “”插孔和8259的3号中断IR3插孔相连;(单脉冲与时钟单元);(4) 8259的CS端接EXl(60H);(5)连JX47X17。(6) IOWR-IOWR;(7) IORD-*IORD;(8) AO-AO;(9) PAoPA3-L2,L6,L10,L14;PA4-PA7-L3,L7,L1l,L15o四、编程指南8255初始化:A口方式0输出。825
42、9初始化:边沿触发。设置中断矢量,将中断服务程序入口地址送入中断矢量表的相应单元,在本系统中,用户可用中断矢量表区域为OOoIOHOOOFFH。主程序控制8255PA0PA3输出点亮绿灯。编制中断服务程序,在中断服务程序中间不要开中断,每中断一次,使4个红色LED灯中每次只亮一个灯,并随每一次中断逐次移动一个灯的位置。为使灯能亮一段时间以便观察,中断服务程序中应进行若干次循环,循环宜分两层,外层循环用于点亮该灯,次数可选5FH;内层则是延时,以OFFFH为宜。五、程序框图初始化(变量INTCNT、8255/8259、中断向量表)点亮绿灯循环等待中断六、实验步骤按连线图连接好,检查无误后打开实验
43、箱电源。在PC端软件开发平台上输入自己编制的程序,编译通过后下载到实验箱。运行程序后,绿色LED灯点亮表面程序运行在主程序。按下AN开关按钮,应当红色LED灯亮1个,绿色LED灯灭,表明在执行中断服务程序;过一会儿红灯熄灭了,绿灯又亮了起来,表明中断服务程序已返回了主程序。反复按动AN开关按钮,红色LED灯像走马灯似转动。如果运行不正常就要检查连线,程序。排查错误,修改程序,直到运行程序正常。七、实验程序清单及注释CODESEGMENTASSUMECSiCODEORG100OHINTCNTDB?;设置变量INTCNTSTART:MOVINTCNT,11101111B;0为亮,L3红灯亮MOVD
44、X,0FF2BHMovaljooooooobOUTDX,AL;8255初始化MOVAX5OOhMOVDS,AXMOVBX,2CH;IR3中断向量表地址2CHMOVAX,OFFSETCLOMOVIBX,AXMOVAX,SEGCLOMOV BX+2,AX INTAOO EQU 60H INTAOl EQU 61H MOV DX,INTAOO MOV AL,00010011B OUT DX,AL MOV DX,INTAOI Mov al,ooooiooob out dx,al MOV DX,INTA01MOV AL,00010001B OUT DX,ALMOV DX,INTA01 MOV AL,11110111BOUT DX, AL STI