微机原理十字路口红绿灯闪烁实验
- 格式:doc
- 大小:237.96 KB
- 文档页数:6
设计任务及要求交通信号灯的亮灭规律。
设有一个十字路口,1、3位南北方向,2、4位东西方向。
初态为4个红灯全亮,禁止通行;随后交通灯亮灭规律按下列步骤进行:(1)1、3路口绿灯亮,2、4路口红灯亮;(2)延时10秒后,1、3路口绿灯灭;(3)1、3路口黄灯闪烁(闪烁3次);(4)2、4路口绿灯亮,同时1、3路口红灯亮;(5)延时10秒后,2、4路口绿灯灭;(6)2、4路口黄灯闪烁(闪烁3次);(7)转向(1)循环执行。
要求:1.通过8255A并口来控制LED发光二极管的亮灭,A口控制红灯,B口控制黄灯,C口控制绿灯。
红灯(RLED),黄灯(YLED)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4路口的红灯,B,C口类推。
2.发光二极管通过电阻接+5V,输出为0则亮,输出为1则灭。
3.通过软件延时,设CPU晶振频率为8M。
4.闪烁功能采用灯亮1秒后马上熄灭来实现。
硬件连接图(可打印)、设计说明8255共有40个引脚,其功能分别如下:D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
RD:读信号线,当这个输入引脚为低电平时,即RD=0且CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
CS:芯片选择信号线,当这个输入引脚为低电平时,即CS=0时,表示芯片被选中,允许8255与CPU进行通讯;CS=1时,8255无法与CPU做数据传输。
PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
本科实验报告课程名称:微机原理及接口技术实验项目:十字路口红绿灯闪烁实验实验地点:微机原理实验室专业班级:电信1001 学号:2010001207 学生姓名:吴清涛指导教师:任光龙2013年6 月5 日一、实验目的通过对红,绿,黄灯的控制,熟练掌握掌握8255A接口芯片的变成方法。
二、实验内容对8255A接口芯片进行编辑,是红,绿,黄灯发光二极管按照十字路口交通灯的形式点亮或熄灭。
三、线路连接发光二极管共8个,其中两组红、黄、绿灯用6个,L1,L2,L3为一组,L4,L5,L6为一组,实验台连接如图。
低电平“1”时,点亮。
四、程序流程图五、参考程序程序列表DA TA SEGMENTIOPORT EQU 0D880H-280HIO8255C EQU IOPORT+282HIO8255T EQU IOPORT+283HPB DB ?MESS DB 'ENTER ANY KEY CAN EXIT TO DOS!',0DH,0AH,'$' DA TA ENDSSTACK SEGMENT STACKSTA DW 50 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,ES:DA TA,SS:STACKSTART: MOV AX,DA TAMOV DS,AXMOV ES,AXMOV AH,09HMOV DX,OFFSET MESSINT 21HMOV DX,IO8255TMOV AL,81HOUT DX,ALMOV DX,IO8255CIN AL,DXMOV PB,ALMOV DX,IO8255TMOV AL,80HOUT DX,ALMOV DX,IO8255CMOV AL,PBOR AL,0CHOUT DX,ALMOV AL,30HOUT DX,ALCALL DELAY10LLL: MOV DX,IO8255CMOV AL,12HOUT DX,ALCALL DELAY10CALL DELAY10CALL DELAY10CALL DELAY10MOV AL,10HOUT DX,ALMOV CX,0040HTTT: MOV AL,0CH OUT DX,ALPUSH CXMOV CX,80HLOP1: CALL DELAY1 LOOP LOP1MOV AL,00HOUT DX,ALMOV CX,80HLOP2: CALL DELAY1 LOOP LOP2POP CXLOOP TTTMOV AL,30HOUT DX,ALCALL DELAY10MOV AL,21HCALL DELAY10CALL DELAY10CALL DELAY10CALL DELAY10MOV AL,20HOUT DX,ALMOV CX,0040HGGG: MOV AL,0CH OUT DX,ALPUSH CXMOV CX,80HLOP3: CALL DELAY1 LOOP LOP3MOV AL,00HOUT DX,ALMOV CX,80HLOP4: CALL DELAY1 LOOP LOP4POP CXLOOP GGGMOV AL,30HOUT DX,ALCALL DELAY10MOV AH,06HMOV DL,0FFHINT 21HJNZ PPPJMP LLLPPP: MOV AX,4C00HINT 21HDELAY1 PROC NEARPUSH CXMOV CX,0FFFFHCCC: LOOP CCCPOP CXRETDELAY1 ENDPDELAY10 PROC NEARPUSH AXPUSH CXMOV CX,0F00HUUU: CALL DELAY1LOOP UUUPOP CXPOP AXRETDELAY10 ENDPCODE ENDSEND START六、实验结果七、思考题程序中红,绿,黄灯点亮和熄灭的延时时间是如何设定的?答:通过用延时子程序CALL DELAY 10的次数来设定。
微机原理红绿灯课程设计报告实验报告 2009-09-02 18:16:02 阅读1337 评论2 字号,大中小摘要,介绍了基于8255A的交通灯系统设计方案,重点论述了软件系统的编写方法。
实际结果表明该系统方案切实可行。
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢,靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
本系统采用8255A芯片实现了A、B口设置红、绿灯点亮时间的功能,红绿灯循环点亮,红绿灯变换之间,黄灯闪烁5秒关键字,交通灯、软件系统设计内容本次课程设计是交通灯实时控制器,主要是用发光二极管模拟十字路口的红绿灯,如下图所示。
交通灯控制器的设计与实现主要是通过编写汇编语言程序利用8255的A口和B口对灯的亮与灭进行控制。
由于实验室的仪器上只有16个发光二极管,所以还得弄清楚是每个发光二极管所代表的灯的颜色及方向。
16个发光二级管,且从高到低依次为,D15D14D13D12D11D10D9D8 D7D6D5D4D3D2D1D0。
在设计的过程中做了如下的规定,R表示红灯,G表示绿灯,Y表示黄灯,E表示方向东,W表示方向西,S表示方向南,N表示方向北,D15D14表示ER,D13D12表示SR,D11D10表示EG,D9D8表示SG,D7D6表示WR,D5D4表示NR,D3D2表示WG,D1D0表示NG,D15D14D11D10表示EY,D7D6D3D2表示WY,D13D12D9D8表示SY,D5D4D1D0 表示NY。
交通灯控制示意图具体时间的分配和控制如下,东西方向绿灯亮,南北方向红灯亮,时间20秒东西方向黄灯闪烁,南北方向红灯亮,时间5秒东西方向红灯亮,南北方向绿灯亮,时间20秒东西方向红灯亮,南北方向黄灯闪烁,时间5秒设计器材设备微机、TD-PIT++实验箱实验电路图设计流程图总体设计过程1. 根据选择题目的要求,结合所参考的资料,选择8255单元芯片以及LED显示单元电路。
微机交通灯实验报告微机交通灯实验报告摘要:本实验旨在通过设计和实现一个微机交通灯系统,探索微机控制在交通管理中的应用。
通过实验,我们成功地搭建了一个基于微机的交通灯控制系统,并对其进行了功能测试和性能评估。
实验结果表明,微机交通灯系统能够有效地提高交通流量的控制和管理效果,为城市交通运输提供了更高效、更安全的解决方案。
一、引言交通管理一直是城市发展中的重要问题之一。
为了提高交通效率和确保交通安全,交通灯作为一种重要的交通管理设施,被广泛应用于城市道路。
然而,传统的交通灯控制系统存在一些问题,如无法根据实际交通情况进行动态调整,容易导致交通堵塞和拥堵。
因此,设计一个基于微机的交通灯控制系统,能够更好地适应不同交通状况,提高交通流量的控制效果,具有重要的研究和应用价值。
二、实验设计本实验采用了基于微机的交通灯控制系统。
该系统由红灯、黄灯和绿灯三个信号灯组成,通过微机控制器实现对交通灯的控制。
系统根据预设的时间间隔,按照红-黄-绿的顺序进行信号灯切换。
同时,系统还可以根据交通流量和优先级设置进行动态调整,以提高交通效率。
三、实验过程1. 硬件搭建我们首先搭建了一个简单的电路,包括红灯、黄灯和绿灯的LED灯,以及与微机控制器相连的开关和传感器。
通过这些硬件设备,我们可以实现对交通灯的控制和监测。
2. 软件编程为了实现交通灯的控制,我们使用了C语言对微机控制器进行编程。
通过编写程序,我们可以根据预设的时间间隔和交通流量等参数,实现对交通灯的自动切换和调整。
同时,我们还可以通过传感器获取实时的交通流量数据,以便更好地进行交通管理。
3. 功能测试在完成硬件搭建和软件编程后,我们进行了功能测试。
通过模拟不同的交通情况,我们验证了交通灯系统的正常工作和切换效果。
实验结果表明,系统能够准确地按照预设的时间间隔进行信号灯切换,适应不同交通状况。
四、实验结果与讨论通过实验,我们得出了以下结论:1. 微机交通灯系统能够有效地提高交通流量的控制效果。
课程设计课程设计名称:交通灯控制实验专业班级:学生姓名:学号:指导教师:课程设计时间:2014.12.22---2015.1.2微机原理专业课程设计任务书学生姓名专业班级学号题目交通灯控制实验课题性质工程设计课题来源自拟课题指导教师同组姓名主要内容L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连.L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通灯变化规律亮灭。
任务要求1:掌握并理解芯片8255和8253计时器工作原理2:掌握并理解源程序和程序中的函数3:熟悉8255内部结构和与单片机的接口逻辑,掌握8255芯片的3种工作方式。
4:了解单片机外围芯片8255的工作原理、初始化编程以及输入、输出程序设计方法参考文献《微型计算机原理及运用》谭浩强清华大学出版社《16/32位微机原理、汇编语言及接口技术》陈涛机械工业出版社《微机接口技术应用》审查意见指导教师签字:教研室主任签字:年月日一:设计的目的和内容1 目的:通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。
2 内容:如图1.L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连.L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通灯变化规律亮灭。
图1二:设计思想:在选择循环的时间上.老师上课时说过.长延时可以采用双层嵌套.外层嵌套为0FFFFH.内层嵌套为4000H.我在编程时外层送进了0.相当于初值为65536.内层送进了4000H。
为了达到闪烁和延时的区别.我在编闪烁的程序时.给外层嵌套送入初值3000H.内层0100H(这是我通过实验的结果)。
人眼感觉闪烁的效果只是短延时的结果此方案是通过并行接口芯片8255A和8086计算机的硬件连接.以及通过8253延时的方法.来实现十字路口交通灯的模拟控制。
如上图所示.红灯(RLED).黄灯(YLEDD)和绿灯(GLED)分别接在8255的A.B.C口的低四位端口.PA0.PA1.PA2.PA3分别接南.东.北.西路口的红灯.B.C口类推。
开始设置8255C口输出南北路口的绿灯、东西路口的红灯亮长延时南北路口的黄灯闪烁,东西路口红灯亮南北路口的红灯、东西路口的绿灯亮长延时南北路口红灯亮、东西路口黄灯亮闪烁是否有键按下N交通灯信号控制实验一、实验目的1、掌握并行接口8253的基本原理2、掌握8253的编程方法二、实验内容如图,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通变化规律亮灭。
三、编程提示1、8255控制寄存器地址:28BH—0C40BHA口地址:288H—04C408HC口地址:28AH—04C40AH2、十字路口交通灯的变化规律要求(1)南北路口的绿灯、东西路口的红灯同时亮三秒;(2)南北路口的黄灯闪烁三次,同时东西路口的红灯继续亮;(3)南北路口的红灯、东西路口的绿灯同时亮三秒;(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁三次;(5)转(1)重复。
3、程序设计流程四、程序设计及实验调试程序设计的思想及注意事项:1.首先是在选择程序时是选用软件延时还是硬件延时。
我采用的是C口方式0输入,所以选用了软件延时。
2.在选择循环的时间上,老师上课时说过,长延时可以采用双层嵌套,外层嵌套为0FFFFH,内层嵌套为4000H,我在编程时外层送进了0,相当于初值为65536,内层送进了4000H。
为了达到闪烁和延时的区别,我在编闪烁的程序时,给外层嵌套送入初值3000H,内层0100H (这是我通过实验的结果)。
人眼感觉闪烁的效果只是短延时的结果。
实验程序:CODE SEGMENTASSUME CS:CODESTART: MOV DX,0C40BHMOV AL,10010000B ;C口方式0输入OUT DX,ALFIRST: MOV DX,0C40AHMOV AL,00100100BOUT DX,AL ;南北绿,东西红写入C口MOV CX,0 ;送入初值65536MOV AX,4000H ;软件长延时,由经验值确定DELAY1: DEC AXJNZ DELAY1LOOP DELAY1MOV BL,4 ;控制黄灯亮的次数SECOND:MOV DX,0C40AHMOV AL,01000100BOUT DX,AL ;南北黄,东西红MOV CX,3000HMOV AX,0100HLI1:DEC AXJNZ LI1LOOP LI1MOV DX,0C40AH ;软件短延时MOV AL,00000100B ;南北黄灭OUT DX,ALMOV CX,3000HMOV AX,0100HWEN1:DEC AXJNZ WEN1 ;软件短延时LOOP WEN1DEC BLJNZ SECOND ;黄灯闪烁4次THIRD: MOV DX,0C40AH ;写入C口MOV AL,10000001BOUT DX,AL ;南北红,东西绿MOV CX,0MOV AX,4000HDELAY2: DEC AX ;软件长延时JNZ DELAY2LOOP DELAY2MOV BL,4 ;控制黄灯亮的次数FORTH: MOV DX,0C40AH ;写入C口MOV AL,10000010BOUT DX,AL ;南北红,东西黄MOV CX,3000HMOV AX,0100HLI2:DEC AXJNZ LI2 ;软件短延时LOOP LI2MOV DX,0C40AHMOV AL,10000000BOUT DX,AL ;东西黄灭MOV CX,3000HMOV AX,0100HWEN2:DEC AXJNZ WEN2LOOP WEN2DEC BL步编程下来的,但是在调试结果时,仍发现了红灯错亮的问题,最后发现时写程序时的粗心所致。
微机原理课程设计报告书课题名称 红绿灯设计姓 名学 号 院、系、部 电气系 专 业 电子信息工程 指导教师孙秀婷、马丽2011年 1 月12日红绿灯设计一、设计目的※※※※※※※※※ ※※※※ ※※ ※※※※※※※※※2008级微机原理 课程设计查阅可编程并行芯片8255或其他相关资料,用简单的输入输出端口等硬件,配合延时和控制程序控制灯的亮灭。
通过对红、绿、黄LED(发光二极管)的控制熟练掌握8255A可编程并行接口的编程方法。
二、设计要求编写程序控制8255A可编程并行接口芯片,使红、绿、黄发光二极管按照十字路口交通信号灯的规律交替发光。
当按下任意键则停止运行,返回DOS。
1、红绿灯亮灭规律:a:初态为东西南北4个红灯全亮,禁止通行;b:经过一定时间南北路口绿灯亮东西路口红灯亮;c:经过一定时间,南北路口绿灯灭;d:南北路口黄灯闪烁;e:经过一定时间,4个路口红灯全亮。
f:经过一定时间,东西路口绿灯亮,南北路口红灯亮;g:东西路口绿灯灭;h:东西路口黄灯闪烁.i:转向步骤a循环执行。
三、电路及连线设计四、使用说明本次微机原理设计的题目为交通灯,它是通过对8255芯片和LED发光二极管的连接设计来模拟交通信号灯的控制,使红黄绿三色灯按照正常交通规则亮灭;十字路口交通信号灯的工作原理是在正常情况下以8086/8088的CPU与8255芯片相连接来实现的。
8255芯片包括四个口,即A口、B口、C口和控制口。
通过对其控制端口写入控制字,来设定8255的工作方式,在本设计中,使8255工作于方式0,将B口和C口都设计为输出,A口设计成输入。
其中B口控制东西方向的交通灯,C口控制南北方向的交通灯。
当程序正常运行时,依次为东西南北方向都是红灯,延时后,南北方向的绿灯和东西方向红灯亮,延时后南北方向的黄灯闪3次,随后南北方向的红灯和东西方向的绿灯亮,延时后,东西方向的黄灯闪3次,之后同理进行循环。
五、流程图设计六、程序设计如下:SSTACK SEGMENT STACK ;定义堆栈段DW 32 DUP(?)SSTACK ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE,SS:SSTACKSTART:MOV AL,90HMOV DX,9003HOUT DX,AL ;将8255控制字设置为10010000; B、C口输出 A口输入 工作方式0 RED: MOV AL,22HMOV DX,9001HOUT DX,AL ;东西方向红灯亮MOV DX,9002HOUT DX,AL ;南北方向红灯亮CALL DELAY ;调用延时程序DELAY NORMAL:STIMOV AL,88HMOV DX,9002HOUT DX,AL ;南北方向绿灯亮MOV AL,22HMOV DX,9001HOUT DX,AL ;东西方向红灯亮CALL DELAY ;调用演示程序DELAYMOV AL,00HMOV DX,9002HOUT DX,AL ;南北方向绿灯灭CALL DELAY1 ;调用演示程序DELAY1MOV CX,0005H ;将黄灯闪烁次数设为5 RECALL1:MOV AL,44HMOV DX,9002HOUT DX,AL ;南北方向黄灯亮CALL DELAY2XOR AL,ALOUT DX,AL ;南北方向黄灯灭CALL DELAY2 ;调用演示程序DELAY2LOOP RECALL1MOV AL,88HMOV DX,9001HOUT DX,AL ;东西方向绿灯亮MOV AL,22HMOV DX,9002HOUT DX,AL ;南北方向红灯亮CALL DELAYCALL DELAY ;两次调用演示程序DELAY,东西方向设为主干道 MOV AL,00HMOV DX,9001HOUT DX,AL ;东西方向绿灯灭CALL DELAY1 ;调用延时程序 DELAY1MOV CX,0005H ;将黄灯闪烁次数设为5RECALL2:MOV AL,44HMOV DX,9001HOUT DX,AL ;东西方向黄灯亮CALL DELAY2 ;调用延时程序DELAY2 XOR AL,ALOUT DX,AL ;东西方向黄灯灭CALL DELAY2 ;调用延时程序DELAY2LOOP RECALL2JMP NORMAL ;无条件跳转到NORMAL,实现循环 DELAY: PUSH CX ;延时程序 DELAYMOV BX,008FHT1:MOV CX,1000HT2:NOPNOPLOOP T2DEC BXCMP BX,0000HJNZ T1POP CXRETDELAY1: PUSH CX ;延时程序 DELAY1MOV CX,0FFFFHT3:NOPNOPLOOP T3POP CXRETDELAY2: PUSH CX ;延时程序 DELAY2MOV CX,0F900HT4:PUSH AXPOP AXLOOP T4POP CXRETCODE ENDSEND START七、设计总结:短短一周的微机原理课程设计已经过去了。
微机实验交通灯实验报告微机实验交通灯实验报告引言交通灯作为城市交通管理的重要组成部分,对于保障交通安全和顺畅起着至关重要的作用。
本次实验旨在通过微机控制,模拟交通灯的工作原理,并实现交通灯的自动控制。
一、实验目的本次实验的主要目的是通过搭建一套微机控制系统,实现交通灯的自动控制,并通过实验验证交通灯在不同道路情况下的工作原理和效果。
二、实验原理1. 交通灯的工作原理交通灯通常由红、黄、绿三个信号灯组成。
红灯表示停止,黄灯表示准备,绿灯表示可以通行。
交通灯通过不同颜色的灯光变化,指示车辆和行人何时可以通行,以保障交通的有序进行。
2. 微机控制系统微机控制系统是利用计算机和相应的软硬件实现对设备、机器等的控制和管理。
在交通灯实验中,我们可以通过编程控制计算机输出不同的信号,从而实现交通灯的自动控制。
三、实验器材和步骤1. 实验器材- 微机控制系统:包括计算机、编程软件和控制接口等。
- 交通灯模型:模拟真实的交通灯,包括红、黄、绿三个信号灯。
2. 实验步骤- 连接交通灯模型和微机控制系统。
- 编写程序,设置交通灯的工作时间和信号灯变化规律。
- 运行程序,观察交通灯的工作状态和变化过程。
四、实验结果和分析通过实验,我们成功地实现了交通灯的自动控制。
在程序中,我们设置了红灯亮10秒,黄灯亮3秒,绿灯亮15秒的时间间隔,模拟了真实交通灯的工作规律。
在实验过程中,我们观察到交通灯按照预设的时间间隔循环变化,红灯亮起时车辆停止,绿灯亮起时车辆可以通行。
这样的交通灯控制方式可以有效地维持交通的有序进行,减少交通事故的发生。
五、实验总结通过本次实验,我们深入了解了交通灯的工作原理和微机控制系统的应用。
微机控制系统作为一种高效、精确的控制手段,可以广泛应用于各个领域,提高设备的自动化程度和工作效率。
在今后的学习和工作中,我们将继续深入学习微机控制系统的原理和应用,掌握更多的编程技巧和控制方法,为实现更多实际问题的自动化解决方案做出贡献。
实验三十字路口红绿灯闪烁实验
一、实验目的
通过对红绿黄灯的控制,熟练掌握8255A接口芯片的编程方法
二、实验内容
对8255A接口芯片进行编程,使红黄绿发光二级管按照十字路口交通灯的形式点亮或者熄灭。
三、线路连接
发光二级管共8个,其中两组红黄绿灯用六个,L2、L3、L4为一组,L5、L6、L7、为一组;试验台连接如图所示。
高电平时,灯点亮。
四、编程提示
1、红、黄、绿灯变化规律
设有一个十字路口,两组灯分别代表东西和南北两个方向,其红黄绿灯变化规律为:
(1)两个路口红灯全亮
(2)南北路口绿灯亮,东西路口红灯亮
(3)南北路口绿灯灭,东西路口红灯亮
(4)两个路口黄灯闪烁
(5)两个路口红灯全亮
(6)东西路口绿灯亮,南北路口红灯亮
(7)东西路口绿灯灭,南北路口红灯亮
(8)两个路口黄灯闪烁
(9)转向(2)循环执行
2. 设置8255A方式控制字
设置8255A的端口C工作在方式0,为输出。
D0、D1控制绿灯,D2、D3控制黄灯,D4、D5控制红灯。
需要点亮哪一位指示灯时,8255A相应端口对应为就输出“1”。
五、流程图
六、实验程序
DATA SEGMENT
IOPORT EQU 0D880H-280H
IO8255C EQU IOPORT+282H
IO8255T EQU IOPORT+283H
PB DB ?
MESS DB 'ENTER ANY KEY CAN EXIT TO DOS!',0DH,0AH,'$' DATA ENDS
STACK SEGMENT STACK
STA DW 50 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AH,09H
MOV DX,OFFSET MESS
INT 21H
MOV DX,IO8255T
MOV AL,81H
OUT DX,AL
MOV DX,IO8255C
IN AL,DX
MOV PB,AL
MOV DX,IO8255T
MOV AL,80H
OUT DX,AL
MOV DX,IO8255C
MOV AL,PB
OR AL,0CH
OUT DX,AL
MOV AL,30H
OUT DX,AL
CALL DELAY10
LLL: MOV DX,IO8255C
MOV AL,12H
OUT DX,AL
CALL DELAY10
CALL DELAY10
CALL DELAY10
CALL DELAY10
OUT DX,AL
MOV CX,0040H TTT: MOV AL,0CH
OUT DX,AL
PUSH CX
MOV CX,80H
LOP1: CALL DELAY1
LOOP LOP1
MOV AL,00H
OUT DX,AL
MOV CX,80H
LOP2: CALL DELAY1
LOOP LOP2
POP CX
LOOP TTT
MOV AL,30H
OUT DX,AL
CALL DELAY10 MOV AL,21H
OUT DX,AL
CALL DELAY10 CALL DELAY10 CALL DELAY10 CALL DELAY10 MOV AL,20H
OUT DX,AL
MOV CX,0040H GGG: MOV AL,0CH OUT DX,AL
PUSH CX
MOV CX,80H LOP3: CALL DELAY1 LOOP LOP3
MOV AL,00H
OUT DX,AL
MOV CX,80H
LOP4: CALL DELAY1
LOOP LOP4
POP CX
LOOP GGG
MOV AL,30H
OUT DX,AL
CALL DELAY10
MOV DL,0FFH
INT 21H
JNZ PPP
JMP LLL
PPP: MOV AX,4C00H
INT 21H
DELAY1 PROC NEAR
PUSH CX
MOV CX,0FFFFH
CCC: LOOP CCC
POP CX
RET
DELAY1 ENDP
DELAY10 PROC NEAR
PUSH AX
PUSH CX
MOV CX,0F00H
UUU: CALL DELAY1
LOOP UUU
POP CX
POP AX
RET
DELAY10 ENDP
CODE ENDS
END START
七、实验步骤
1、在windows环境下,打开“开始”菜单,选择“运行”项,然后输入”CMD”,按“确定”进去DOS环境。
2、输入“E:”回车,输入“CD MASM”回车。
3、输入“EDIT ZF1.ASM”回车,进入编辑状态,将以上源程序写入,完成后,如下图,按“Alt+F”打开文件菜单,选“Save”存盘,选“Exit”退出编辑状态。
4、对原程序进行汇编连接,输入“ML ZF1.ASM”回车
5、打开扩展卡I/O端口地址,用ALLOWIO命令打开I/O端口地址:
输入“RUN”回车。
6、按实验电路图1接好线,给实验箱通电。
输入“NT”回车,即可看到按一定规律变化的红黄绿灯。
八、思考题
程序中红.绿.黄灯点亮和熄灭的延时时间是如何设定的?
答:通过CALL指令调用子程序DELAY10,DELAY10的功能是通过执行循环执行压入堆栈和弹出堆栈来实现延时,改变循环次数即CX的设定值即可改变延时时间。