实验二 8255A并行接口实验
微机原理并行接口实验程序及解析

硬件实验注意事项( 硬件实验注意事项(二)
1.在实验台断电条件下,才能用单股导线(或 扁平电缆)连接电路; 2.线路连接完成、检查确认没有错误后,再开 通实验台电源; 3.用单股导线连接电路时,要将单股导线线头 整直,并确认线头没有断裂; 4.实验完成后,关断实验台电源,再抓住导线 (或扁平电缆)的根部,一根一根垂直拔掉连 接导线,并把连接导线整好放入实验箱。
74 HC D-bus 573 D7…D0 锁 存 器 CS573
JM6
JM5
JM4
JM3
JM2
JM1
MC1413驱动器
B口 口
A口 口
8255
CS8255
D-bus
D7…D0
实验6-2连线
CS8255 ------------------------ CS1 CS573 ---------------------SMGLT JM1...JM6---------------PB0...PB5 D0...D7-------------------a.b.c....dp
;取显示数字 ;读字型码 ;输出字型码
;左循环移位
;送B口控制的数码管位
;若显示位置大于等于6 ;返回启始位置1
;判有键动,跳出循环
;循环扫描
实验6-2源程序( 续)
delay proc near push cx mov bx,02h delay1: mov cx,0h loop $ dec bx jnz delay1 pop cx ret delay endp end ;延时子程序
74HC573锁存器地址: 0E220H
8255工作方式及控制字 8255工作方式及控制字
工作方式:基本输入/输出、选通输入/输出、双向传送 控制字:方式控制字、C口置“1”/清“0”控制字
微机原理与汇编语言_实验7_8255并行接口实验

微机原理与汇编语言实验报告姓名x x x学号xxxxxx专业班级计科x班课程名称微机原理与汇编语言实验日期实验名称8255并行接口实验成绩一、实验目的掌握8255A的编程原理。
二、实验内容1、实验原理本实验用到两部分电路:开关量输入输出电路和8255可编程并口电路。
8255A是比较常用的一种并行接口芯片,其特点在许多教科书中均有介绍。
8255A有三个8位的输入输出端口,通常将A端口作为输入用,B端口作为输出用,C端口作为辅助控制用,本实验也是如此。
实验中,8255A工作于基本输入输出方式(方式0)。
2、实验步骤1)实验接线CS0CS8255;PA0~PA7平推开关的输出K1~K8;PB0~PB7发光二极管的输入LED1~LED8。
2)编程并全速或单步运行。
3)全速运行时拨动开关,观察发光二极管的变化。
当开关某位置于L时,对应的发光二极管点亮,置于H时熄灭。
3、实验结果程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。
例如:K2置于L位置,则对应的LED2应该点亮。
三、实验源码及框图assume cs:codecode segment publicorg 100hstart: mov dx,04a6h ;控制寄存器地址mov ax,90h ;设置为A口输入,B口输出out dx,axstart1: mov dx,04a0h ;A口地址in ax,dx ;输入mov dx,04a2h ;B口地址out dx,ax ;输出jmp start1code endsend start四、练习键盘接口实验。
请阅读实验指导手册,根据实验台键盘电路结构,设计实验,编制程序实现键盘的按键识别,并将其代码通过Led指示灯显示。
练习键盘框图:实验源码:assume cs:codecode segment publicorg 100hTimer = 10;延时常量;设置行线接输出端口,列线接输入端口start:mov dx,04a6h;控制端写控制字,设置为A口输入,B口输出mov al,90hout dx,alWait:mov al,00hmov dx,04a2hout dx,al ; 往所有行线上输出低电平movin al,dx ; 读取列值cmp al,0ffh ;是否有列线为低电平jz wait ;否,则循环等待done: call delay ;是,则延迟去抖动mov cx,8 ;行数送CXkey2:mov al,0mov dx,04a2h ;B口作为输出out dx,al ;设置行线全为低mov dx,04a0h ;A口作为输入in al,dx ;读取列值cmp al,0ffhjz key2 ;无闭合键,循环等待push ax ;有闭合键,保存列值push ax;设置行线接输入端口,列线接输出端,A口输出,B口输入mov dx,04a6hmov al,82hout dx,almov dx,04a0h ;A口输出pop axout dx,al;输出列值mov dx,04a2h ;B口输入in al,dx ;读取行值pop bx ;组合行列值mov ah,bl ;此时,al=行值,ah=列值mov si,offset table ;table保存键盘行列值mov di,offset char ;char保存键代码值mov cx,24 ;cx=键的个数key3:cmp ax,[si];与键值比较jz key4 ;相同,说明查到inc si ;不相同,继续比较inc siinc diloop key3jmp start ;全部比较完无相同则再进行扫描一遍jmp wait ;全部比较完,仍无相同,说明是重键key4:mov al,[di];获取键代码送ALpush ax;判断按键是否释放,没有则等待call delay ;按键释放,延时消除抖动;后续处理;将代码值输给小灯mov dx,04a6h;控制寄存器地址mov ax,0080h ;设置C口输出out dx,axmov dx,04a4h ;将键代码从C口输出送给小灯pop axout dx,aldelay procpush bxpush cxmov bx,timer;外循环次数由timer确定delay1: xor cx,cxdelay2: loop delay2 ;内循环dec bxjnz delay1pop cxpop bxretdelay endp;键盘的行列值表table dw 0fefeh ;键1的行列值(键值)dw 0fefdh ;键2的行列值dw 0fefbh ;键3的行列值dw 0fe07h ;键4的行列值dw 0fedfh ;键6的行列值dw 0febfh ;键7的行列值dw 0fe7fh ;键8的行列值dw 0fdfeh ;键9的行列值dw 0fdfdh ;键10的行列值dw 0fdfbh ;键11的行列值dw 0fd07h ;键12的行列值dw 0fdefh ;键13的行列值dw 0fddfh ;键14的行列值dw 0fdbfh ;键15的行列值dw 0fd7fh ;键16的行列值dw 0fbfeh ;键17的行列值dw 0fbfdh ;键18的行列值dw 0fbfbh ;键19的行列值dw 0fb07h ;键20的行列值dw 0fbefh ;键21的行列值dw 0fbdfh ;键22的行列值dw 0fbbfh ;键23的行列值dw 0fb7fh ;键24的行列值……;S25、S26其他键的行列值;键盘的键代码表char db 30h ;键1的代码值db 31h ;键2的代码值db 32h ;键2的代码值db 33h ;键3的代码值db 35h ;键5的代码值db 36h ;键6的代码值db 37h ;键7的代码值db 38h ;键8的代码值db 39h ;键9的代码值db 41h ;键A的代码值db 42h ;键B的代码值db 43h ;键C的代码值db 44h ;键D的代码值db 45h ;键E的代码值db 46h ;键F的代码值db 61h ;键a的代码值db 62h ;键b的代码值db 63h ;键c的代码值db 64h ;键d的代码值db 65h ;键e的代码值db 66h ;键f的代码值db 67h ;键g的代码值db 68h ;键h的代码值……;S25、S26其他键的代码值code endsend start实验现象:按相应的键,LED灯会显示相应的代码。
实验三、8255A并行接口实验

实验结论
通过本次实验,我们验证了8255A并行接口芯片的基本功能和工作原理。
实验结果证明了8255A芯片可以实现并行数据传输,并且可以通过设置不 同的端口模式来实现不同的输入输出功能。
在实际应用中,8255A芯片可以作为并行数据传输的重要接口之一,广泛 应用于各种数字电路和微机控制系统中。
05
实验总结与展望
等。
学习如何设置8255a并行接口芯 片的控制字,掌握其工作模式和
特点。
理解8255a并行接口芯片在计算 机中的重要性和作用,以及与其
他接口芯片的区别和联系。
掌握8255a并行接口芯片的工作原理
了解8255a并行接口芯片的基本 结构和工作原理,包括输入/输 出端口、控制寄存器和数据总线
等。
学习如何设置8255a并行接口芯 片的控制字,掌握其工作模式和
缺乏实验指导
实验过程中,我们遇到了一些难 以解决的问题,如果能有更多的 实验指导资料或教师指导,将有 助于我们更好地有限,我们未能充 分探索8255a并行接口的更多功 能和应用场景,建议增加实验时 间,以便我们有更多的机会深入 了解该芯片。
实验不足与改进建议
实验难度不够
学习如何使用8255a并行接口芯片进行硬件控制
学习如何使用8255a并行接口 芯片进行输入/输出操作,包括 读取和写入数据。
掌握如何通过8255a并行接口 芯片控制外部硬件设备,如 LED灯、继电器等。
了解如何将8255a并行接口芯 片与其他芯片连接,实现硬件 的扩展和控制。
了解并行接口在计算机中的作用和重要性
实验三
将端口B和端口C设置为输入,端口A设置为输出。 当在端口B和端口C上施加不同的电平时,端口A 的输出与端口C的输入相同。
10_8255A可编程并行接口实验(2)

4.4 8255A可编程并行接口实验二4.4.1 实验目的1、进一步掌握8255A并行接口芯片的基本结构及工作原理。
2、掌握8255A的A口或B口工作于方式1时的特点及其使用方法;掌握方式1输入或输出时C口用作联络信号的引脚的定义及功能。
4.4.2 实验预习要求1、复习8255A工作方式1的特点及工作原理;C口用作联络信号的引脚定义及功能。
2、复习中断服务程序的编写方法。
3、预先编写好实验程序。
4.4.3 实验内容按图4.4-1连接线路。
& &图4.4-18255A的A口工作于方式1输出。
C口的PC3用作中断请求信号(INTR)。
PC6用作外设应答信号(ACK),表示CPU输出到8255A的数据已被外设取走。
PC7用作输出缓冲器满信号(OBF),OBF 信号实验中未用。
用每按一次单脉冲按钮K所产生的负脉冲(模拟外设的应答信号)使8255A产生一次中断请求,让CPU进行一次中断服务。
在中断服务程序中向8255A依次输出01H、02H、04H、08H、10H、20H、40H、80H使L0 L7依次发光,中断8次程序结束返回DOS。
4.4.4 实验提示1、主机中可编程中断控制器8259A的I/O地址为20H和21H。
2、8255A的I/O地址为:控制寄存器端口地址28BHA口的地址288HC 口的地址28AH3、实验台接口卡设置为使用ISA总线中的IRQ7将实验台上的中断请求信号IRQ送到主板的8259A,若接口卡非如此设置,请根据具体设置在编写程序时作适当修改。
4、中断服务程序中通过OUT指令将数据输出到8255A的A口,以便点亮发光二极管时,要延时一段时间,否则将无法看到二极管发光。
实验程序流程图如图4.4-2和4.4-3所示。
4.4.5 实验报告要求1、根据流程图编写实验程序,并说明在实验过程中遇到了哪些问题,是如何处理的。
2、总结8255A工作方式1的特点及使用方法。
3、写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。
微机实验 可编程并行接口8255

微机原理实验报告实验题目:可编程并行接口8255一、实验目的1、掌握8255的基本输入输出和PC端口位控的工作方式及应用编程。
2、掌握8255的典型应用电路接法。
二、实验知识回顾8255控制字1、控制方式2、C端口置位复位控制字三、实验内容1、 8255流水灯显示,首先用逻辑电平开关预置一个数字,从A口读入,写入01H到C端口上,左移一次在进行输出,A口读入数据作为左移次数,这样循环下去,从而实现流水灯的显示。
2、用PC端口位控制法控制LED灯,依次点亮LED灯。
四、实验器材微机原理实验箱1个电脑(带TPC-USB软件)1台插线若干五、实现过程1、8255流水灯显示(1)流程图(2)程序源代码io8255a equ 2a0h ;8255A口地址io8255b equ 2a1h ;8255B口地址io8255c equ 2a2h ;8255C口地址io8255mode equ 2a3h ;控制寄存器地址stack1 segment stackdw 256 dup(?)stack1 endsdata segmentla db ? ;定义数据变量lb db ?data endscode segmentassume cs:code,ds:datastart:mov ax,data ;程序由start处开始mov ds,axmov dx,io8255mode ;定义8255的工作方式mov al,90h ;方式0A口输入C口输出out dx,al ;mov dx,io8255a ;A口的地址存入dxin al,dx ;从dx也就是A口读入数据mov la,al ;读入的数据暂存在la变量mov dx,io8255c ;C口的地址存入dxmov al,01h ;将寄存器最低位置零out dx,al ;置位后的值输入给dx,也就是C口mov lb,al ;置位后的值暂存于变量lbloop1:call delaymov al,la ;将A口数据写入CX用以计数mov ch,00hmov cl,laloop2:call delaymov al,lbrol al,1 ;在寄存器内进行位移操作mov lb,al ;将操作后的结果重新写入变量al,为后面调用做准备mov dx,io8255c ;dx代表C口的地址out dx,al ;将al中存储的值写入dx,即C口mov ah,1 ;选择dos的模式为从键盘读取数据int 16h ;进入中断jnz quit ;ZF为0则跳到quitdec cx ;计数器减一jnz loop2 ;若cx!=0,跳到loop2quit:mov ax,4c00h ;结束程序并退出int 21hdelay proc near ;延时子程序push cxpush axmov cx,01fhd1: mov ax,0ffffhd2: dec axjnz d2loop d1pop axpop cxretdelay endpcode endsend start2、位控设置C口输出点亮LED(1)流程图(2)程序源代码io8255a equ 2a0h ;8255A口地址io8255b equ 2a1h ;8255B口地址io8255c equ 2a2h ;8255C口地址io8255mode equ 2a3h ;控制寄存器地址stack1 segment stackdw 256 dup(?)stack1 endsdata segmentla db ? ;定义数据变量lb db ?data endscode segmentassume cs:code,ds:datastart:mov ax,data ;程序由start处开始mov ds,axmov dx,io8255mode ;定义8255的工作方式mov al,00001111b ;位控设置C口最高位为1out dx,almov cx,7 ;剩余未点亮灯数为7 loop1:call delaydec aldec alout dx,aldec cxjnz loop1delay proc near ;延时子程序push cxpush axmov cx,01fhd1: mov ax,0ffffhd2: dec axjnz d2loop d1pop axpop cxretdelay endpcode endsend start(3)实验结果图六、小结通过本次试验,我进一步了解了8255的可编程性,以及如何正确的通过程序控制8255,也更加熟悉了8255 C 端口的位控输出。
8255并口实验

8255并口实验8255A并行口实验(一)目的1. 掌握8255A和微机接口方法。
2. 掌握8255A的工作方式和编程原理。
8255A并行口实验(一)内容1、实验原理如实验原理图5-8所示,PC口8位接8个开关K1~ K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。
拨动K1~ K8,PB口上接的8个发光二极管L1~ L8对应显示K1~ K8的状态。
图5-82、实验线路连接(1)8255A芯片PC0~ PC7插孔依次接K1~ K8。
(2)8255A芯片PB0~PB7插孔依次接L1 ~ L8。
(3)8255A的CS插孔接译码输出070H-07FH插孔。
3、实验步骤(1) 按图5-8连好线路。
(2) 运行实验程序。
在系统显示"DVCC-86H"状态下,按任意键,显示器显示"-"。
按GO键,显示"1000 XX"输入F000 :B160再按EXEC键,在DVCC-8086H显示上显示器"8255-1",同时拨动K1~K8,L1~L8会跟着亮灭。
CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0073HIOCPT EQU 0072HIOBPT EQU 0071HCONTPORT EQU 00DFHDA TAPORT EQU 00DEHDA TA1 EQU 0500HSTART: JMP IOLEDIOLED: CALL FORMA TCALL LEDDISPMOV AL,89HMOV DX,IOCONPTOUT DX,ALNOPNOPNOPIOLED1: MOV DX,IOCPTIN AL,DXMOV DX,IOBPTOUT DX,ALMOV CX,0FFFFHDELAY: LOOP DELAYJMP IOLED1LEDDISP:MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00LED1: CMP BYTE PTR DS:[0600H],07H JA LED2MOV BL,DS:[0600H]MOV BH,0HMOV AL,CS:[BX+DA TA1]MOV DX,DA TAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LED1LED2: RETFORMA T: MOV BX,0MOV WORD PTR DS:[BX+0500H],4006HADD BX,2MOV WORD PTR DS:[BX+0500H],4040HADD BX,2MOV WORD PTR DS:[BX+0500H],6D6DHADD BX,2MOV WORD PTR DS:[BX+0500H],7F5BHRETCODE ENDSEND START8255A并行口实验(二)目的掌握通过8255A并行口传输数据的方法,以控制发光二极管的亮与灭。
8255A可编程并行口实验_2

4.2 8255A可编程并行口实验1. 实验目的(1)掌握并行接口芯片8255A和微机接日的连接方法。
(2)掌握并行接口芯片8255A的工作方式及其编程方法。
2. 实验内容(l)实验原理。
实验原理如图4-I所示, PC口8位接8个开关K1一K8, PB口8位接8个发光二极管, 从PC口读入8位开关量送PB口显示。
拨动K1~K8,PB口上接的8个发光二极管LO~L7对应显示KI~KS的状态。
(2)实验线路连接。
1)8255A芯片PC0-PC7插孔依次接K1~K8。
2)8255A芯片PB0~PB7插孔依次接L0-L7。
3)8255A的CS插孔CS_8255接译码输出Y7插孔。
3. 实验软件框图参考流程图如图4-2所示。
4. 实验步骤(1)按图4-1连好线路。
(2)运行实验程序。
在数码管上显示“8255-1", 同时拨动K1~K8, L0~L7会跟着亮灭。
5. 实脸软件参考程序请参见本书电子课件, 文件名为H8255-1.ASM。
CODE SEGMENT ASSUME CS:CODE IOCONPT EQU 0073H IOCPT EQU 0072H IOBPT EQU 0071H START: MOV CX,8FFFH DELAY0:LOOP DELAY0MOV AL,89H MOV DX,IOCONPTOUT DX,ALNOPNOPNOPIOLED1: MOV DX,IOCPT IN AL,DXMOV DX,IOBPTOUT DX,ALMOV CX,8FFFH DELAY:LOOP DELAYJMP IOLED1 CODE ENDSEND START6. 思考题(1)修改程序实现一个开关控制2个或3个灯亮灭。
IOLED1: MOV BL,ALMOV CX,4ROL AL,CXADD AL,BLMOV CX,8FFFHDELAY:LOOP DELAYJMP IOLED1(2)添加延时程序, 去掉开关连线, 实现8个灯循环亮灭。
微机原理8255并行接口完整实验报告

实验2 8255并行接口实验实验时间2019年10月23日实验类型■验证性□设计性□综合性1.实验目的1.学习并掌握8255的工作方式及其应用2.掌握8255典型电路的接法3.掌握程序固化及脱机运行程序的方法2. 实验内容及过程(主要内容、操作步骤)1.基本输入输出实验。
编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就发生相应改变。
2.流水灯显示实验。
编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮-一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。
3.方式1输入输出实验。
编写程序,使8255工作在方式1控制下的A口输入,B口输出。
1. 基本输入输出实验本实验使8255端口A工作在方式0并作为输出口,端口C工作在方式0并作为输入口用一组开关信号接入端口B,端口A输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。
具体实验步骤如下(1)实验接线图如图4.3.4所示,按图连接实验线路图。
(实际实验改为C为输入,A为输出,相应实际接线图改为下图所示)(2)编写实验程序,经编译、连接无误后装入系统。
(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。
3. 测试数据及实验结果4. 实验分析及总结(主要考察内容)1.控制字格式决定了哪个端口为输入,哪个为输出,将D0-D7 8个控制字视为一个16进制数,再将其送入AX的高八位,就实现了端口的输入输出控制,而AX 的低八位没有使用2.A、B、C口和控制寄存器的地址后面*2是指地址第一位没有用教师评阅评价指标:实验目的、操作步骤、设计、算法、程序结构、实验结果、实验分析、实验总结。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 8255A并行接口实验(一)
一实验目的
1、掌握通过8255A并行口传输数据控制LED发光二极管的亮灭;进一
步熟悉软件编程环境。
二实验设备
1、微机系统一套;
2、TPC-3型微机接口实验系统一台;
3、导线若干。
三实验内容
1、基础部分:用8255A的A端口控制8个LED发光二极管的亮和灭(端口
输出为1则亮,输出为0则灭)。
其中L0―L2为东西方向,L5―L7为南北
方向、L3-L4不用,PA口与相应的发光二极管驱动信号输入端相连,输入端
为1时发光二极管亮。
接线如图4-5所示。
图4-5
编制程序,通过8255A控制发光二极管,以模拟交通灯的管理。
2.提高部分:利用开关K0,K1的控制,以模拟几种交通灯的管理,具体要求
为:
K0K1灯控制
00正常运行
01南北路口绿灯亮、东西路口红灯亮
10东西路口绿灯亮、南北路口红灯亮
3.如果模拟车流量大小来来决定红绿灯交通时间,请问你有什么解决办法。
如果
能解决请加以解释并编程调试。
四、编程提示:
1.要完成本实验,首先必须了解交通灯的亮灭规律。
设有一个十字路口,南北、东西方向初始态为四个路口的红灯全亮。
之后,南北路口的绿灯亮,东西
路口的红灯亮,南北路口方向通车。
延迟一段时间后,南北路口的绿灯熄灭,
而南北路口的黄灯开始闪烁。
闪烁8次后,南北路口的红灯亮,同时东西路口
的绿灯亮,东西路口方向开始通车。
延迟一段时间后,东西路口的绿灯熄灭,
而黄灯开始闪烁。
闪烁苦干次后,再切换到南北路口方向。
之后,重复上述过
程。
2.程序中应设定好8255A的工作模式,使三个端口均工作于方式0,并处于输出态
3.8255A的A端口地址为:288H
B端口地址为:289H
C端口地址为:28AH
控制口地址为:28BH
五、实验要求:
1.做好实验预习和准备工作,并写出预习报告(要求写出实验的流程图及程序),熟练掌握8255A编程原理及编程方法。
2.实验操作的最低要求是要做出实验内容的基础部分,然后根据实际操作能力争取做出实验内容的提高部分及回答实验内容的第三部分问题。
3.写出实验报告,内容为:
1)实验目的;
2)实验设备;
3)实验中遇到的问题及解决问题的分析思路与办法,问题定位及问题的性质;
4)对本实验的建议及有何创新。
;这是自动生成的代码模板
STACKS SEGMENT STACK ;堆栈段
DW 128 DUP(?) ;注意这里只有128个字节
STACKS ENDS
DATAS SEGMENT ;数据段
;请在这里定义您的数据
DATAS ENDS
CODES SEGMENT ;代码段
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS ;初始化
MOV DS,AX
MOV AL,80H
MOV DX,028BH
OUT DX,AL
MOV AL,84H ;初态红灯全亮
MOV DX,288H
OUT DX,AL
MOV CX,30
D1: MOV AL,24H ;南北绿灯亮,东西红灯亮MOV DX,288H
OUT DX,AL
CALL DELAY
LOOP D1
MOV CX,8
D2: MOV AL,44H ;南北黄灯亮,东西红灯亮MOV DX,288H
OUT DX,AL
CALL DELAY
MOV AL,04H
MOV DX,288H
OUT DX,AL
CALL DELAY
LOOP D2
MOV CX,30
D3: MOV AL,81H ;南北红灯亮,东西绿灯亮MOV DX,288H
OUT DX,AL
CALL DELAY
LOOP D3
MOV CX,8
D4: MOV AL,82H :南北红灯亮,东西黄灯亮MOV DX,288H
OUT DX,AL
CALL DELAY
MOV AL,80H
MOV DX,288H
OUT DX,AL
CALL DELAY
LOOP D4
MOV AH,01H
INT 16H
JZ D1
MOV AX,4C00H ;退出程序
INT 21H
DELAY PROC NEAR
PUSH CX
PUSH DI
MOV CX,9000H
Y1: MOV DI ,5000H
X1: DEC DX
JNZ X1
LOOP Y1
POP DI
POP CX
RET
DELAY ENDP
CODES ENDS
END START
MY8255_A EQU 288H
MY8255_B EQU 289H
MY8255_C EQU 28AH
MY8255_MODE EQU 28BH
STACKS SEGMENT STACK ;堆栈段
DW 128 DUP(?) ;注意这里只有128个字节STACKS ENDS
DATAS SEGMENT ;数据段
;请在这里定义您的数据
DATAS ENDS
CODES SEGMENT ;代码段
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS ;初始化
MOV DS,AX
MOV DX,028BH
MOV AL,80H
OUT DX,AL
LOOP1: MOV DX,MY8255_A ;写A口发出的数据,东方向绿灯亮,南方向MOV AL,3CH
OUT DX,AL
MOV DX ,MY8255_B
MOV AL,3CH
OUT DX,AL
CALL DALL Y1
DALL Y PROC NEAR
PUSH CX
PUSH AX
MOV CX,0FFFH
D1: MOV AX,0FFFFH
D2: DEC AX
JNZ D2
LOOP D1
POP AX
POP CX
RET
DALL Y ENDP
DALL Y1 PROC NEAR
PUSH CX
PUSH AX
MOV CX,1EH
D3: CALL DALL Y
LOOP D3
POP AX
POP CX
RET
DALL Y1 ENDP
DALL Y2 PROC NEAR
PUSH CX
PUSH AX
MOV CX,02H
D4: CALL DALL Y
LOOP D3
POP AX
POP CX
RET
DALL Y2 ENDP
MOV AX,4C00H ;退出程序
INT 21H
CODES ENDS
END START。