工业用微型计算机实验

上传人:飞*** 文档编号:47841854 上传时间:2018-07-05 格式:PDF 页数:9 大小:220.33KB
返回 下载 相关 举报
工业用微型计算机实验_第1页
第1页 / 共9页
工业用微型计算机实验_第2页
第2页 / 共9页
工业用微型计算机实验_第3页
第3页 / 共9页
工业用微型计算机实验_第4页
第4页 / 共9页
工业用微型计算机实验_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《工业用微型计算机实验》由会员分享,可在线阅读,更多相关《工业用微型计算机实验(9页珍藏版)》请在金锄头文库上搜索。

1、- 1 - 实验一 8255A 并行口实验一、实验目的(1)掌握通过8255A 并行口传输数据的方法,以控制发光二极管的亮与灭二、实验仪器微机、微机原理接口实验仪三、实验原理通过 8255A 控制发光二极管,PB4-PB7 对应黄灯, PC0-PC3 对应红灯, PC4-PC7 对应绿灯 , 以模拟交通路灯的管理。要完成本实验,必须先了解交通路灯的亮灭规律,设有一个十字路口l、3 为南北方向, 2、4 为东西方向,初始状态为四个路口的红灯全亮,之后,1、3 路口的绿灯亮,2、4 路口的红灯亮,1、3 路口方向通车。延时一段时间后,l、3 路口的绿灯熄灭,而l、3 路口的黄灯开始闪烁,闪烁若干次

2、以后,l、3 路口红灯亮,而同时2、4 路口的绿灯亮,2、4 路口方向通车,延时一段时间后,2、4 路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到l、3 路口方向,之后,重复上述过程。程序中设定好8255A 的工作模式及三个端口均工作在方式0,并处于输出状态。各发光二极管共阳极,使其点亮应使8255A 相应端口的位清0。实验程序:CODE SEGMENT ;H8255-2.ASM ASSUME CS:CODE IOCONPT EQU 0FF2BH ; 8255 控制口地址IOAPT EQU 0FF28H ;8255 PA 口地址IOBPT EQU 0FF29H ;8255 PB 口地

3、址,高 4 位接黄灯IOCPT EQU 0FF2AH ;8255 PC 口地址,低4 位接红灯,高4 位接绿灯ORG 11e0H START: MOV AL,82H ; 82H控制字送AL,MOV DX,IOCONPT ;8255 控制口地址送DX寄存器OUT DX,AL ;送出控制字,PA 、PC输出, PB输入MOV DX,IOBPT ;PB口地址送DX IN AL,DX ;从 PB口取数据( PB口低 4 位别处在用)MOV BYTE PTR DS:0601H,AL ;保存到0601H单元MOV DX,IOCONPT ;取 8255 控制口地址MOV AL,80H ;设置成PA 、PC

4、、PB输出OUT DX,AL MOV DX,IOBPT ;取 PB口地址MOV AL,DS:0601H ;取 0601H单元的数OR AL,0F0H ;屏蔽低4 位OUT DX,AL ;送到 PB口(恢复PB口低 4 位状态)MOV DX,IOCPT ;取 PC口地址MOV AL,0F0H ;把 0FH送 PC口, 4 个红灯全亮OUT DX,AL CALL DELAY1 ;延时- 2 - IOLED0: MOV AL,10100101B ; 1、3 路口绿灯亮, 2、4 路口红灯亮MOV DX,IOCPT ;取 PC口地址OUT DX,AL ;送出CALL DELAY1 ;延时CALL DE

5、LAY1 OR AL,0F0H ;熄灭 1、3 路口绿灯OUT DX,AL MOV CX,8H ;设置黄灯闪烁次数IOLED1: MOV DX,IOBPT ;取 PB口地址MOV AL,DS:0601H ;取 PB口原来状态AND AL,10101111B ;点亮 1、3 路口黄灯,保持PB口低 4 位OUT DX,AL CALL DELAY2 ;延时OR AL,01010000B ;熄灭 1、3 路口黄灯,保持PB口低 4 位OUT DX,AL ;CALL DELAY2 ;延时LOOP IOLED1 ;CX-1 不等于 0,到 IOLED1循环MOV DX,IOCPT ;取 PC口地址MOV

6、 AL,0F0H ;4 个红灯全亮OUT DX,AL CALL DELAY2 ;延时MOV AL,01011010B ;2、4 路口绿灯亮,1、3 路口红灯亮OUT DX,AL CALL DELAY1 ;延时CALL DELAY1 OR AL,0F0H ;4 个红灯亮OUT DX,AL MOV CX,8H ;设置黄灯闪烁次数IOLED2: MOV DX,IOBPT ;取 PB口地址MOV AL,DS:0601H ;取 PB口原来状态AND AL,01011111B ;点亮 2、4 路口黄灯,保持PB口低 4 位OUT DX,AL CALL DELAY2 ;延时OR AL,10100000B ;

7、熄灭 2、4 路口黄灯,保持PB口低 4 位OUT DX,AL CALL DELAY2 ;延时LOOP IOLED2 ;CX-1 不等于 0,到 IOLED2循环MOV DX,IOCPT ;取 PC口地址MOV AL,0F0H ;4 个红灯全亮OUT DX,AL CALL DELAY2 ;延时JMP IOLED0 ;主循环DELAY1: PUSH AX ;延时子程序PUSH CX MOV CX,0030H ;设置延时常数- 3 - DELY2: CALL DELAY2 LOOP DELY2 ;CX-1 不等于 0,到 DELY2循环POP CX POP AX RET DELAY2: PUSH

8、CX ;短延时程序MOV CX,8000H ;设置延时常数DELA1: LOOP DELA1 ; CX-1 不等于 0,到 DELY1循环POP CX RET CODE ENDS END START程序流程图:四、实验步骤(1)按图 6-4 连好实验线路8255APC0L3PC1 L7PC2L11PC3L15(红灯)PC4 L2PC5L6PC6L10PC7L14 (绿灯)- 4 - PB4 L1PB5L5PB6L9PB7L13 (黄灯)(2)在联机状态下,加载H8255-2.ASM 程序,全速运行程序,观察发光二极管工作状态。(3)修改程序,使黄灯闪烁16 次;车辆通过时间加倍。五、问题思考(

9、1)为什么把B 端口的值读进内存?(2)分析短延时程序和长延时程序各对工作状态的影响。- 5 - 实验二 8259 单级中断控制器实验一、实验目的(1)掌握 8259 中断控制器的接口方法(2)学习 8259 中断控制器的应用编程二、实验仪器微机、微机原理接口实验仪三、实验原理8259 芯片介绍中断控制器8259A 是专为控制优先级中断而设计的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。因此无需附加任何电路,只需对8259A 进行编程,就可以管理8 级中断,并选择优先模式和中断请求方式。即中断结构可以由用户编程来设定。同时,在不需要增加其它电路的情况下,通过多片82

10、59A 的级联,能构成多达64 级的矢量中断系统。本实验中使用3 号中断源IR3, “ ” 插孔和 IR3 相连,中断方式为边沿触发方式,每拨二次AN 开关产生一次中断,满5 次中断,显示 “ 8259 good”。如果中断源电平信号不符合规定要求,则自动转到 7 号中断,显示“Err ”。程序流程图:- 6 - 主程序:IR3 中断服务程序:实验程序:CODE SEGMENT ;H8259.ASM ASSUME CS:CODE INTPORT1 EQU 0060H ; 8259A 的命令字ICW1 地址 (8259A 的 CS 接到端口EX1=60H 上)INTPORT2 EQU 0061H

11、 ;8259A 的命令字ICW2 、ICW3 、ICW4 地址INTQ3 EQU INTREEUP3 INTQ7 EQU INTREEUP7 PA EQU 0FF21H ; 字位口;PA口作为数码管位形口,地址是0FF21H PB EQU 0FF22H ; 字形口;PB口作为数码管字形口,地址是0FF22H PC EQU 0FF23H ; 键入口ORG 12D0H START: JMP START0 BUF DB ?,?,?,?,?,? ;预定显示缓冲区intcnt db ? ;预定中断次数单元data1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h

12、,90h,88h,83h,0c6h,0a1h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: CLD CALL BUF1 ;把 8255-1 送入显示缓冲区CALL WRINTVER ;把中断向量设置到中断向量表MOV AL,13H ;把 13H 送命令字ICW1 ,单片(不用ICW3 )、用 ICW4 MOV DX,INTPORT1 OUT DX,AL MOV AL,08H ;把 08H 送命令字ICW2 ,中断向量从08H 到 0FH 编码MOV DX,INTPORT2 OUT DX,AL MOV AL,09H ;把

13、09H 送命令字ICW4 ,缓冲方式、8088 系列OUT DX,AL MOV AL,0F7H ;把 0F7H 送命令字OCW1 ,IR3 允许中断OUT DX,AL MOV intcnt,01H ;TIME=1 ;设置中断次数单元STI ;开中断- 7 - WATING: CALL DISP ;DISP 8259-1 ;调用显示子程序JMP WATING ;循环等待中断WRINTVER: MOV AX,0H ;设置中断向量子程序。赋予附加段段地址MOV ES,AX MOV DI,002CH ;段内偏移量赋初值LEA AX,INTQ3 ;产生 INTQ3 段内偏移量地址放入AX STOSW ;

14、将 AX 的值写入到ES:DI 指定的地址,同时DI+2 (写入中断服务程序的偏移地址到中断向量表,设置INTQ3 中断向量)MOV AX,0000h ;中断服务程序的段地址是0STOSW ;将 AX 的值写入到ES:DI 指定的地址,同时DI+2 (写入中断服务程序的段地址到中断向量表,设置INTQ3 中断向量)MOV DI,003CH LEA AX,INTQ7 ;产生 INTQ7 段内偏移量地址地址放入AX STOSW ;将 AX 的值写入到ES:DI 指定的地址,同时DI+2 (写入中断服务程序的偏移地址到中断向量表,设置INTQ7 中断向量)MOV AX,0000h ;中断服务程序的段

15、地址是0STOSW ;将 AX 的值写入到ES:DI 指定的地址,同时DI+2 (写入中断服务程序的段地址到中断向量表;设置INTQ3 中断向量)RET INTREEUP3: CLI ;中断 3 子程序MOV AL,INTCNT ;取中断次数CALL CONVERS ;设置显示中断次数MOV BX,OFFSET BUF ;取 BUF 显示缓冲区首地址段内偏移量(077BH )MOV AL,10H ;使数码管不显示的字符存入AL MOV CX,05H ;循环次数,数码管的个数INTRE0: MOV BX,AL ;把显示码送入显示缓冲区BX 指定的单元INC BX ;指向下一个单元LOOP INTRE0 ;CX-1 不等于 0 则跳转,直到缓冲区写完MOV AL,20H ;把 20H 送到 OCW2 ,发出一般的中断结束命令MOV DX,INTPORT1 OUT DX,AL ADD INTCNT,01H ;增量中断次数单元CMP INTCNT,06H ;是否够5 次JNA INTRE2 ;小于等于时转移到INTRE2 CALL BUF2 ;DISP:good ;大于时调用把GOOD 送入显示缓冲区子程序INTRE1: CALL DISP ;显示 GOOD JMP INTRE1 ;死循环CONVERS: AND AL,0FH ;屏蔽高4 位MOV BX,offset buf

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号