北京工业大学 微机接口 实验3报告

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

3.3 8253基础实验

一、实验目的

1、进一步熟悉GX-8000实验系统

2、进一步熟悉汇编语言程序的设计、调试过程。

3、掌握可编程定时器/计数器芯片8253的工作原理和编程方法。

二、实验内容

1、产生周期为1秒的方波信号,用逻辑笔观察输出结果

2、脉冲计数器:对单脉冲按钮进行计数,按下5次,L0点亮;可重复计数

3、跑马灯

1)8个LED循环点亮;

2)循环方式为:L0->L1->L2->L3->L4->L5->L6->L7->L1->L2...;每隔1秒LED状态变化一

次;

3)使用8255A和8253实现

三、实验程序

1、程序

;这是自动生成的代码模板

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, 28BH

MOV AL, 00110111B; 8253控制字设置计数器0

OUT DX, AL

MOV DX, 288H

MOV AX ,00H;设置计数器0初值

OUT DX, AL

MOV AL, 10H

OUT DX, AL

MOV DX, 28BH

MOV AL, 01110111B ; 8253控制字设置计数器1

OUT DX, AL

MOV DX, 289H

MOV AL, 00H ; 设置计数器1初值

OUT DX, AL

MOV AL, 10H

OUT DX, AL

CODES ENDS

END START

2、程序

;这是自动生成的代码模板

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, 00010100B ; 0通道设置为方式2

MOV DX, 28BH

OUT DX, AL

MOV AL, 5 ;0通道初值设为5

MOV DX, 288H

OUT DX, AL

CODES ENDS

END START

3、程序

;这是自动生成的代码模板

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, 28BH ;8253A初始化

MOV AL, 00110110B

OUT DX, AL

MOV DX, 288H

MOV AX ,1000

OUT DX, AL

MOV AL, AH

OUT DX, AL

MOV DX, 28BH

MOV AL, 01110110B

OUT DX, AL

MOV DX, 289H

MOV AX ,1000

OUT DX, AL

MOV AL, AH

OUT DX, AL

MOV CL, 0FFH

MOV AH ,00000001B

MOV AL, 10100000B

MOV DX, 283H

OUT DX, AL

MOV AL ,0DH ;pC6置一

OUT DX, AL

AGAIN:

MOV AL, AH

MOV DX,280H

OUT DX, AL ;A口输出LED状态数据

MOV DX, 282H

READC:

IN AL, DX ;读C口

ROL AL, 4 ;左移4位,使PC3位于最高位,以便判断是否为1

CMP AL, 10000000B

JB READC ;小于1,说明时钟周期还没到来,继续读C口

ROL AH, 1 ;否则读取下一LED状态(通过左移来实现)

JMP AGAIN

;请在这里添加您的代码

CODES ENDS

END START

四、实验结果

1、

2、

3、

相关文档
最新文档