微机实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一I/O地址译码与交通灯控制实验

一、实验目的

1、掌握并行接口8253的基本原理

2、掌握8253的编程方法

二、实验内容

如图所示,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通变化规律燃灭。

三、编程分析

1、8255地址分析:控制寄存器地址: 0C40BH

A口地址: 04C408H

C口地址: 04C40AH

2、十字路口交通灯的变化规律要求

(1)南北路口的绿灯、东西路口的红灯同时亮三秒;

(2)南北路口的黄灯闪烁三次,同时东西路口的红灯继续亮;

(3)南北路口的红灯、东西路口的绿灯同时亮三秒;

(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁三次;

(5)转(1)重复。

3、C口置数分析

由于发光二极管是共阴极相连,所以若要其发亮应给高电平;黄灯闪烁是让其不断交替亮灭来实现;同时分析可知只要有绿灯亮,灯就会持续亮三秒,黄灯亮就会闪

烁三次。

4、程序设计流程图

四、汇编语言程序

STACK1 SEGMENT STACK

DB 100 DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE, SS:STACK1 DY PROC NEAR

PUSH CX

MOV AX, 0FFFFH ;延时程序

MOV CX, 02FFFH

L0:DEC AX

JNZ L0

LOOP L0

POP CX

POP AX

RET

DY ENDP

START: MOV DX, 0C40BH

MOV AL, B

OUT DX, AL

MOV DX, 0C40AH

MOV BL, 6H ;设置延迟3秒

L1:MOV AL, 00100100B ;南北绿灯亮,东西红灯亮

OUT DX, AL

CALL DY ;调用延迟子程序

DEC BL

JNZ L1

MOV BL, 4H ;设置第二次闪烁3次

L2:MOV DX, 0C40AH

MOV AL, 01000100B ; 南北黄灯亮,东西红灯亮

OUT DX, AL

CALL DY

MOV AL, 00000100B ;南北黄灯灭,东西红灯亮,实现要求闪的功能 OUT DX,AL

CALL DY

JNZ L2

MOV BL,6H ;第三次设置亮灭时间为3秒

L3:MOV AL,B ; 南北黄灯亮,东西红灯亮

OUT DX,AL

CALL DY

DEC BL

JNZ L3

MOV BL,4H

L4:MOV AL,B ;南北红灯亮,东西黄灯亮

OUT DX,AL

CALL DY

MOV AL,B ;南北红灯亮,东西黄灯灭,实现闪的功能OUT DX,AL

CALL DY

DEC BL

JNZ L4

MOV DL,0FFH ;判断是否有键按下,结束程序 MOV AH,06H

INT 21H

JZ START ;没有键按下,进入下一次循环 MOV AH,4CH

INT 21H

CODE ENDS

END START

五、实验现象:

红黄绿灯变化规律如下:

南北路口的绿灯、东西路口的红灯同时亮3秒左右;

南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮;

南北路口的红灯、东西路口的绿灯同时亮3秒左右;

南北路口的红灯继续亮,同时东西路口的黄灯闪烁若干次;

依次重复。

六、实验感想

这是第一次微机实验,总体感觉挺难的。虽然课前进行了预习准备,但在调试时还是遇到了灯不亮的情况。仔细检查程序后没有发现什么问题,所以就换了一个实验箱,并得到了理想的效果。我觉得这个实验的关键是设置延时子程序DY,在每一次灯亮后,都要调用这个延时程序,并跳转到下一次灯亮。

实验二可编程定时器/计数器(8253)

一、实验目的

1、掌握并行接口8253的基本工作原理;

2、掌握8253的编程方法。

二、实验内容

1、按图虚线连接电路,将计数器0设置为工作方式0,计数器初值为N(N≤0FH),用

手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0遍高电平)。

2、按图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻

辑笔观察OUT1输出电平的变化(频率1Hz)。

三、 编程分析

1、8253控制寄存器地址: 0C403H

计数器0地址: 0C400H

计数器1地址: 0C401H

CLK0连接时钟:1MHz 。

2、程序参考流程图

四、汇编语言程序

(1):

CODE SEGMENT

ASSUME CS:CODE

START: MOV DX,0C403H

;计数器0,方式0

MOV AL,010H

MOV DX,0C400H

MOV AL,06H ;送初值6

OUT DX,AL

MOV CL,1

READ: INC CL ;自加1

CMP CL,0

JZ START

MOV DX,0C400H ;读计数器0口

IN AL,DX

MOV DL,AL

MOV CL,AL

CMP AL,9

JG BIG

ADD DL,30H ; 0到9,数字ASCII偏移30H

MOV AH,02H

INT 21H ;显示ASCII数字

MOV DL,0DH

INT 21H

JMP RETURN

BIG: ADD DL,37H ; 大于9,转换大写字母ASCII码 MOV AH,02H

INT 21H ;显示ASCII字母

MOV DL,0DH

INT 21H

JMP RETURN

RETURN: MOV DL, 0FFH

MOV AH, 06H

INT 21H

JZ READ ;有键按下回DOS,没有则继续执行

相关文档
最新文档