文档介绍:10284043-童博-通信1004-微机原理实验报告
1
微机原理实验报告
学 院:
电子信息工程学院
专业班级:
通信1004
学生姓名:
童博
四.实验遇到的问题和解决方法
问题:绿灯灭后黄灯没有出现闪烁的效果,一直保持常亮
解决方法:修改程序,通过利用异或和循环指令使绿灯灭、红灯亮后,黄灯口的状态从0到1循环变换,并通过调用延迟子程序,从而实现人眼可辨的黄灯闪的效果。
二、可编程定时时钟/计数器(8253)
一、实验目的
掌握8253的基本工作原理和编程方法。
二、实验内容
1. 按图5-1虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)
10
。
图 5-1
2. 按图5-2连接电图,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。
图5-2
10
三.实验原理
8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。作计数器时, 要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。
8253中各通道可有6种可供选择的工作方式, 以完成定时、计数或脉冲发生器等多种功能。本实验用到的是方式0—计数结束中断。在写入计数值N之后的第一个CLK的下降沿将N装入计数执行单元,待下一个CLK的下降沿到来且门控信号GATE为高电平时,通道开始启动计数。在计数过程中,OUT一直保持低电平,直到计数达“0”时,OUT输出由低电平变为高电平,并且保持高电平。
8253动态分配地址: 控制寄存器: 0EC03H
计数器0地址: 0EC00H
计数器1地址: 0EC01H
11
四.程序流程图和程序清单
1)
DATA SEGMENT
N EQU 0BH ;计数器初值,不大于0FH
CHL DB 0AH,0DH,'$' ;换行
12
DATA ENDS
STACK1 SEGMENT STACK
DW 100 DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX
;--------------INIT----------------
MOV DX,0EC03H ;控制寄存器地址
MOV AL,10H ;计数器0,低字节,方式0,二进制计数
OUT DX,AL ;写入控制字
MOV DX,0C400H
MOV AL,N
OUT DX,AL ;写入计数初值
MOV CL,N
13
L0: MOV AL,0 ;计数器0锁存
MOV DX,IO8253
OUT DX,AL
MOV DX,0 EC 00H
IN AL,DX ;读取当前数值
CMP AL,CL
JNE L0 ;若AL不等于CL,则继续到L0循环
DEC CL ;更改CL值
MOV DL,AL
CMP DL,09H ;是0~9吗?
JLE ASCI
ADD DL,07H ;是A~F
ASCI: ADD DL,30H
MOV AH,02H ;单字符输出计数器当前值
INT 21H
MOV DX,OFFSET CHL ;输出字符串换行
MOV AH,09H
INT 21H
CMP CL,0
JNL L0 ;CL不小于0时,继续循环
14
;------------------------------
MOV AH,4CH
INT 21H
CODE ENDS
END START
2)
15
DATA SEGMENT
X DB ?
DATA ENDS
STACK1 SEGMENT STACK
DW 100H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS: