文档库 最新最全的文档下载
当前位置:文档库 › 实验八 32 位LED 显示实验

实验八 32 位LED 显示实验

实验八 32 位LED 显示实验
实验八 32 位LED 显示实验

实验八 32 位LED 显示实验

一、实验目的

1.使用32位汇编语言,掌握对32位的IO端口进行读写操作,并且体会8位与32位总线如何在同一系统中兼容。体会32位指令的速度优势。

2.学习使用74LS273来扩展输出端口。

二、实验要求

根据配置空间的原理,通过编程将PCI卡开放给用户的IO端口读出。

分别编写32位与8位的汇编程序对4片74LS237进行操作,点亮32个LED发光管,体会32 位程序的速度。在实验时实现控制32个LED左移、右移、交叉点亮。

三、实验原理

使用8芯的扁平电缆按连线表将信号相连,这样在实验系统的32 位总线上就有4片

74LS273(地址00H)对应了32位LED,可用一条32位指令 OUT DX,EAX 将32位数据写入74LS273中,LED 即显示出74LS273 中锁存的数据。当然也可以使用4条8位指令OUT DX,AL 将32个LED点亮(4 片74LS273 的地址分别对应00H、01H 、02H、03H)。

四、实验程序例程及框图

示例程序:LED32.ASM

框图:

32 位LED 显示实验

五、实验步骤

1.接线:用8位数据线对应连接32位CPU接口模块的JD1、JD2、JD3、JD4到32位LED显示模块的JD3B、JD2B、JD1B、JD4B。

2.把BIN文件夹复制到硬盘根目录下,如:D:\BIN ;把LED32.ASM文件复制到BIN 路径

下。

3.在Windows98下打开MS-DOS,使用CD命令到BIN 路径下,输入下面命令后回车。

4.编译:tasm /zi LED32.ASM (注:“.ASM”可省略)

5.连接:tlink /v/3 LED32.OBJ (注:“.OBJ”可省略)

6.运行:LED32.EXE (注:“.EXE”可省略)

运行结果如下图所示:

从PC键盘输入1,32位LED显示,左移;

从PC键盘输入2,32位LED显示,右移;

从PC键盘输入3,32位LED显示,闪烁;

从PC键盘输入4,程序退出。

7.把BIN文件夹下的“LED32.ASM”源程序及生成的“.map”、“.obj”、“.exe”文件删除掉。

实验九 8255模拟交通灯实验

一、实验目的

1.学习8255 芯片的使用方法;

2.学习模拟交通灯控制的方法;

3.学习双色灯的使用。

二、实验要求

编写程序,以8255 的C 口作为输出口,控制4 个双色LED 灯(可发红,绿,黄光),模拟十字路口交通灯管理。

三、实验原理

双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。使用8255的端口C 控制双色灯。8255的CS由CPLD输出,决定了8255的起始地址为40H。8255的A0,A1地址线分别接了32位总线A2,A3,决定了A、B、C和状态口地址分别为40H、44H、48H和4CH。

假设一个十字路口为东西南北走向。初始状态0 为东西红灯,南北红灯。然后转状态1 南北绿灯通车,东西红灯。过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。再转状态3,东西绿灯通车,南北红灯。过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。最后循环至状态1。

注意:LED灯亮灭的间隔时间是由延时程序来控制的,如果计算机的速度过快,LED灯亮灭的间隔时间就比较短,实验现象就不明显。可通过调整延时程序使实验现象更明显。四、实验程序例程及框图

示例程序:Traffic.asm1.

五、实验步骤

1.接线:用8位数据线将8255模块的JD3D连接到32位LED显示模块的JD4B。

2.把BIN文件夹复制到硬盘根目录下,如:D:\BIN ;把Traffic.asm文件复制到BIN 路径下。

3.在Windows98下打开MS-DOS,使用cd命令到BIN 路径下,输入下面命令后回车。

4.编译:tasm /zi Traffic.ASM (注:“.ASM”可省略)

5.连接:tlink /v/3 Traffic.OBJ (注:“.OBJ”可省略)

6.运行:Traffic.EXE (注:“.EXE”可省略)

运行结果如下图所示:

按PC键盘(任意键),启动交通灯,再按PC键盘任意键,则程序退出。

7.把BIN文件夹下的“Traffic.ASM”源程序及生成的“.map”、“.obj”、“.exe”文件删除掉。

N

8255模拟交通灯实验

D1 EQU 1000H

D2 EQU 5000H

D3 EQU 0ffffH

DA TA SEGMENT

C8255 DW 04CH ;8255控制字的地址

D8255C DW 048H ;8255的C口地址

PB DB ?

MESS2 DB 'ENTER ANY KEY CAN EXIT TO DOS!',0DH,0AH,'$' MESS1 DB 'ENTER ANY KEY TO BEGIN!',0DH,0AH,'$'

DIS1 DB 'PCI ADDRESS 0 $';

DIS5 DB 'BIOS NOT SUPPER!$'

DIS6 DB 'READ PCI BOARD FAIL!$'

;-------PCI Configuration Space Registers------------------------------- PCI_CS_VENDOR_ID EQU 0

PCI_CS_DEVICE_ID EQU 2

PCI_CS_COMMAND EQU 4

PCI_CS_STATUS EQU 6

PCI_CS_REVISION EQU 8

PCI_CS_CLASS_CODE EQU 9

PCI_CS_CACHE_LINE_SIZE EQU 0CH

PCI_CS_MASTER_LATENCY EQU 0DH

PCI_CS_HEADER_TYPE EQU 0EH

PCI_CS_BIST EQU 0FH

PCI_CS_BASE_ADDRESS_0 EQU 10H

PCI_CS_BASE_ADDRESS_1 EQU 14H

PCI_CS_BASE_ADDRESS_2 EQU 18H

PCI_CS_BASE_ADDRESS_3 EQU 1CH

PCI_CS_BASE_ADDRESS_4 EQU 20H

PCI_CS_BASE_ADDRESS_5 EQU 24H

PCI_CS_EXPANSION EQU 30H

PCI_CS_INTERRUPT_LINE EQU 3CH

PCI_CS_INTERRUPT_PIN EQU 3DH

PCI_CS_MIN_GNT EQU 3EH

PCI_CS_MAX_LAT EQU 3FH

ADDRESS_IO_0 DW ?

ADDRESS_IO_1 DW ?

DA TA ENDS

STACK1 SEGMENT STACK

STA DW 50 DUP(?)

TOP EQU LENGTH STA

STACK1 ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK1 START:

MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV AH,0B1H

MOV AL,1H

INT 1AH

CMP AH,0

JZ AA1

MOV DX,OFFSET DIS5

MOV AH,9

INT 21H

JMP QUIT

AA1: MOV AH,0B1H

MOV AL,02H

MOV CX,5406H

MOV DX,10B5H

MOV SI,0

INT 1AH

JNC AA

MOV DX,OFFSET DIS6

MOV AH,9

INT 21H

JMP QUIT

AA: MOV AH,0B1H

MOV AL,09H

MOV DI,PCI_CS_BASE_ADDRESS_1

INT 1AH

CMP AH,0

JZ BB1

MOV DX,OFFSET DIS1

MOV AH,9

INT 21H

JMP QUIT

BB1:

MOV AH,0B1H

MOV AL,09H

MOV DI,PCI_CS_BASE_ADDRESS_3

INT 1AH

CMP AH,0

JZ CC

MOV DX,OFFSET DIS1

MOV AH,9

INT 21H

JMP QUIT

CC: AND CX,0FFFCH

MOV AX,CX

ADD C8255,AX

ADD D8255C,AX

MOV DX,C8255 ;设置为全输出

MOV AL,80H

OUT DX,AL

MOV DX,D8255C

MOV AL,00

OUT DX,AL ;清LED

MOV AH,09H

LEA DX,MESS1

INT 21H

MOV AH,08H

INT 21H

MOV AH,09H

LEA DX,MESS2

INT 21H

MOV DX,D8255C ;全红

MOV AL,0F0H

OUT DX,AL

MOV BX,D2

CALL DL Y

BG: MOV AL,01011010B ;南北绿,东西红OUT DX,AL

MOV BX,D3

CALL DL Y

MOV BX,D3

CALL DL Y

MOV CX,03H

XH1: AND AL,050H ;绿灭

OUT DX,AL

MOV BX,D1

CALL DL Y

OR AL,0AH ;绿亮

OUT DX,AL

MOV BX,D1

LOOP XH1

OR AL,0A0H ;南北黄

OUT DX,AL

MOV AL,10100101B ;南北绿,东西红

OUT DX,AL

MOV BX,D3

CALL DL Y

MOV BX,D3

CALL DL Y

MOV CX,03H

XH2: AND AL,0A0H ;绿灭

OUT DX,AL

MOV BX,D1

CALL DL Y

OR AL,05H ;绿亮

OUT DX,AL

MOV BX,D1

CALL DL Y

LOOP XH2

OR AL,50H ;东西黄

OUT DX,AL

MOV BX,D2

CALL DL Y

PUSH AX

PUSH DX

MOV AH,06H

MOV DL,0FFH

INT 21H

JNZ QUIT

POP DX

POP AX

JMP BG

QUIT: MOV AX,4C00H

INT 21H

DL Y PROC NEAR

PUSH CX

DDD: MOV CX,0FFFFH

LOOP $

DEC BX

CMP BX,0

POP CX

RET

DL Y ENDP

CODE ENDS END START

相关文档