微型计算机原理及应用

Download Report

Transcript 微型计算机原理及应用

YANGTZE NORMAL UNIVERSITY
微型计算机原理及应用实验
电子信息技术实验教学中心
YANGTZE NORMAL UNIVERSITY
实验1 DEBUG调试程序的应用
一、实验目的
掌握DEBUG调试程序的常用命令,熟悉用DEBUG调试程序对
EXE文件的调试过程,并具有一定的分析运行结果的能力。
二、实验内容
✿ 编写一个完整的一位数加法运算程序,并生成EXE文件;
✿ 利用DEBUG调试EXE文件的执行过程,并与源程序进行对比。
YANGTZE NORMAL UNIVERSITY
三、DEBUG常用命令
1.汇编命令A
格式:
A 段寄存器名:偏移地址
A 段地址:偏移地址
A 偏移地址
A
功能:用该命令可以将汇编语言程序直接写入内存。
YANGTZE NORMAL UNIVERSITY
2.显示内存命令D
格式:
D 段寄存器名:偏移地址
D 段地址:偏移地址
D 偏移地址
D
功能:显示指定内存范围的内容。
3.修改内存单元内容命令E
格式:
E 地址 内容表
E 地址
功能:修改内存单元内容
YANGTZE NORMAL UNIVERSITY
4.填充内存命令F
格式:E 地址范围 内容表
功能:将内容表中的内容重复装入内存的指定范围内。
5.内存移动命令M
格式:M 源地址范围 目标起始地址
功能:把源地址范围的内容移动到目标起始地址开始的存储单
元。
6.比较命令C
格式:C 源地址范围 目标起始地址
功能:比较两个内存区域的内容是否相同,相同时不显示任何
信息,不相同时显示不相同的内容
YANGTZE NORMAL UNIVERSITY
7.搜索指定内容命令S
格式:S 地址范围 内容表
功能:在指定地址范围内搜索内容表中的内容。
8.查看修改寄存器内容命令R
格式:
R
R 寄存器名
功能:查看或修改寄存器内容
关于标志位:
OF:OV/NV 有/无;DF:DN/UP 减/增;IF:EI/DI 允许/禁止;
SF:NG/PL 负/正;ZF:ZR/NZ 零/非零;AF:AC/NA 有/无;PF:
PE/PO 偶/奇;CF:CY/NC 有/无。
YANGTZE NORMAL UNIVERSITY
9.单步执行命令T
格式:
T 地址
T 地址 条数
功能:单步执行指令
10.反汇编命令U
格式:
U 地址
U 地址范围
功能:将指定内存的内容显示成汇编语言形式。
11.命名命令N
格式:N 路径和文件名
YANGTZE NORMAL UNIVERSITY
12.读盘命令L
格式:
L 地址 驱动器号 起始扇区号 扇区数
L 地址
L
功能:将N命令指定的文件或磁盘扇区内容读到内存。
13.写盘命令W
格式:
W 地址 驱动器号 起始扇区号 扇区数
W 地址
W
功能:将内存内容写到N命令指定的文件或磁盘扇区中。
YANGTZE NORMAL UNIVERSITY
14.输入命令I
格式:I 端口地址
功能:将端口的内容传送到累加器AL中。
15.输出命令O
格式:O 端口地址
功能:将累加器AL的内容传送到端口中。
16.运行命令G
格式:
G=地址
G
功能:从当前地址或指定地址开始执行指令。
YANGTZE NORMAL UNIVERSITY
17.十六进制运算命令H
格式:
H 数据1 数据2
功能:对数据1和数据2进行十六进制加法和减法运算。
18.P命令
格式:
P
功能:在下一条指令执行之前停止
19.退出命令Q
格式:
Q
功能:退出DEBUG调试环境。
YANGTZE NORMAL UNIVERSITY
实验2 算术运算程序设计
一、实验目的
✿ 掌握汇编语言中的数值接收方法;
✿ 掌握算术运算程序的编写与结果显示方法;
✿ 掌握宏定义与调用方法
二、实验内容
从键盘接收运算式,编程实现两位十进制数的算术运算(
加、减、乘、除),若输入的不是数字或运算符,进行错误处
理,按Esc键退出。
YANGTZE NORMAL UNIVERSITY
三、编程提示
✿ 定义一个显示单字符的宏;
✿ 定义一个能接收两位数的子程序,并将其转换成二进制,若
接收的不是数字,进行错误处理,其算法为:退一格,显示
一个空格,再退一格。若接收的为ESC键退出;
✿ 主程序的编程流程如图2.1所示。
YANGTZE NORMAL UNIVERSITY
开始
接收第二个数并保存
接收第一个数并保存
显示“=”号
接收运算符
按运算符要求运算
N
显示运算结果
是(+-*/)否
Y
保存运算符
回车换行
图2.1
YANGTZE NORMAL UNIVERSITY
实验3 字符串处理程序设计
一、实验目的
✿
✿
✿
✿
掌握串操作程序设计的基本方法;
掌握串查找与替换的方法;
掌握字符串接收和显示的方法;
掌握循环和分支程序设计方法。
二、实验内容
✿ 编程实现字符接收、字符转换、字符显示等操作;
✿ 具体要求:从键盘接收30个字符存入变量X中,将X中的字符
传送到变量Y中,将变量Y中的空格字符转换成字符“0”,
回车换行后显示Y中的内容。
YANGTZE NORMAL UNIVERSITY
三、编程提示
编程流程如图3.1所示。
开始
接收30个字符存入X中
回车换行
将X中的字符串传送到Y中
显示Y中的字符串
循环查找Y中的空格字符,
并将其转换为“0”
结束
图3.1
YANGTZE NORMAL UNIVERSITY
实验4 数值处理程序设计
一、实验目的
✿ 掌握数组元素的输入方法;
✿ 掌握一般的排序算法。
二、实验内容
✿ 编程实现数值输入、数组排序、显示等基本操作;
✿ 具体要求:从键盘输入20个有符号两位十进制数,编程对其
从小到大进行排序,并显示排序后的结果,以逗号分隔。
YANGTZE NORMAL UNIVERSITY
三、参考程序
dispc macro x
mov dl,x
mov ah,2
int 21h
endm
data segment
x db 20 dup(?)
data ends
code segment
assume cs:code,ds:data
go: mov ax,data
mov ds,ax
接收20个有符号数的程序段
mov bx,19
YANGTZE NORMAL UNIVERSITY
l0:
l1:
l2:
l3:
mov cx,19
lea si,x
lodsb
cmp al,[si]
jge l2
mov ah,[si]
mov [si],al
mov [si-1],ah
loop l1
dec bx
cmp bx,0
jne l0
mov cx,20
lodsb
cmp al,0
YANGTZE NORMAL UNIVERSITY
l4:
l5:
jge l4
push ax
dispc '-'
pop ax
neg al
aam
or ax,3030h
mov bh,al
cmp ah,30h
je l5
dispc ah
dispc bh
dispc ','
loop l3
dispc 8
YANGTZE NORMAL UNIVERSITY
dispc 20h
mov ah,7
int 21h
mov ah,4ch
int 21h
code ends
end go
YANGTZE NORMAL UNIVERSITY
实验5 文件、文件夹操作程序设计
一、实验目的
✿ 掌握在磁盘上建立文件夹的程序设计方法;
✿ 掌握在文件夹下建立文件的程序设计方法;
✿ 掌握对文件的读、写、关闭的程序设计方法
YANGTZE NORMAL UNIVERSITY
二、实验内容
✿ 编程实现文件、文件夹的建立、写入、字符串接收等基本操
作;
✿ 具体要求:
①清屏,将光标置于5行,0列,从键盘接收最多80个字符的字
符串,将接收字符串中的小写字母全部转换成大写,其余不
变;
②从10行,0列开始显示转换后的字符串;
③在D盘上建立一文件夹USER;
④将转换后的字符串写入文件'D:\USER\STRING.TXT中。
(注:文件操作时要求有相应的提示信息)
YANGTZE NORMAL UNIVERSITY
三、参考程序
disps macro x
mov ah,9
lea dx,x
int 21h
endm
data segment
buffer db 80,?,81 dup(0)
pfname db 'D:\USER',0
fname db 'D:\USER\STRING.TXT',0
d1
db 'Create paper file error',0dh,0ah,'$'
d2
db 'Create file error',0ah,0dh,'$'
d3
db 'Write file error',0ah,0dh,'$'
d4
db 'Close file error',0ah,0dh,'$‘
d5
db 'Operate succeed ',0ah,0dh,'$'
YANGTZE NORMAL UNIVERSITY
d6
db 0ah,0dh,'$'
data ends
code segment
assume cs:code,ds:data
go: mov ax,data
mov ds,ax
mov ah,2
mov bh,0
mov dx,0
int 10h
mov al,20h
mov ah,9
mov cx,2000
mov bl,12h
int 10h
YANGTZE NORMAL UNIVERSITY
l1:
mov ah,2
mov bh,0
mov dh,5
mov dl,0
int 10h
mov ah,0ah
lea dx,buffer
int 21h
mov cl,buffer+1
mov ch,0
lea si,buffer+2
lodsb
cmp al,’a’
jb
l2
cmp al,’z’
YANGTZE NORMAL UNIVERSITY
l2:
ja
l2
xor al,20h
mov [si-1],al
loop l1
mov byte ptr[si],'$'
mov ah,2
mov bh,0
mov dh,10
mov dl,0
int 10h
disps buffer+2
disps d6
mov ah,39h
lea dx,pfname
int 21h
YANGTZE NORMAL UNIVERSITY
l2:
l3:
jnc l1
disps d1
jmp l6
mov ah,5bh
mov cx,0
lea dx,fname
int 21h
push ax
jnc l3
disps d2
jmp l6
mov ah,40h
pop bx
mov cl,buffer+1
mov ch,0
YANGTZE NORMAL UNIVERSITY
l4:
l5:
l6:
lea dx,buffer+2
int 21h
jnc l4
disps d3
jmp l6
mov ah,3eh
int 21h
jnc l5
disps d4
jmp l6
disps d5
mov ah,7
int 21h
mov ah,4ch
int 21h
YANGTZE NORMAL UNIVERSITY
end
code ends
go
YANGTZE NORMAL UNIVERSITY
实验6 图形程序设计
一、实验目的
✿ 掌握屏幕显示方式的设置方法;
✿ 掌握写象素点的方法;
✿ 掌握宏的定义和调用方法。
二、实验内容
✿ 编程实现几何图形的绘制,不同颜色的填充;
✿ 具体要求:将屏幕设置成640*480,在屏幕上画5个几何图形:
空心正方形、空心长方形、实心正方形、实心长方形、空心直
角等腰三角形。大小、颜色、位置自定。
YANGTZE NORMAL UNIVERSITY
三、参考程序
sxfk macro x1,y1,x2,y2,color;画实心矩形(左上顶点坐标,
local l1,l2
右下顶点坐标,颜色)
mov ah,0ch
mov al,color
mov dx,y1
l1: mov cx,x1
l2: int 10h
inc cx
cmp cx,x2
jbe l2
inc dx
cmp dx,y2
jbe l1
endm
YANGTZE NORMAL UNIVERSITY
kxfk macro x1,y1,x2,y2,color;画空心矩形(左上顶点坐标,
local l1,l2,l3,l4
右下顶点坐标,颜色)
mov ah,0ch
mov dx,y1
mov cx,x1
mov al,color
l1: int 10h
inc cx
cmp cx,x2
jb l1
l2: int 10h
inc dx
cmp dx,y2
jb l2
l3: int 10h
YANGTZE NORMAL UNIVERSITY
l4:
sjx
dec cx
cmp cx,x1
ja l3
int 10h
dec dx
cmp dx,y1
ja l4
endm
macro x1,y1,long,color;画等腰直角三角形(左上
local l1,l2,l3
顶点坐标,腰长,颜色)
mov ah,0ch
mov al,color
mov dx,y1
mov cx,x1
mov si,long
YANGTZE NORMAL UNIVERSITY
l1:
l2:
l3:
add
int
inc
cmp
jbe
mov
add
int
inc
cmp
jbe
mov
mov
inc
inc
si,dx
10h
dx
dx,si
l1
di,long
di,cx
10h
cx
cx,di
l2
cx,x1
dx,y1
cx
dx
YANGTZE NORMAL UNIVERSITY
int 10h
cmp cx,di
jb l3
endm
code segment
assume cs:code
go: mov ax,0012h
int 10h
mov ah,0bh
mov bx,1
int 10h
sjx 50,50,125,4
kxfk 1,2,241,242,3
sxfk 10,250,320,470,6
sxfk 339,179,639,479,5
YANGTZE NORMAL UNIVERSITY
kxfk 270,5,630,170,9
mov ah,7
int 21h
mov ah,4ch
int 21h
code ends
end go
YANGTZE NORMAL UNIVERSITY
实验7 中断控制实验
一、实验目的
✿ 了解Windows下中断处理过程;
✿ 比较中断和查询两种数据交换方法的效率差别。
二、实验内容
用查询和中断方式分别实现控制指示灯,实验电路如图。
要求直接用手动产生的单脉冲作为中断请求信号,每按一次单
脉冲产生一次中断,让8个指示灯显示一秒钟的01010101,否则
让指示灯显示10101010。然后在任务栏比较中断和查询方式下
CPU利用率的差别。
YANGTZE NORMAL UNIVERSITY
✿ 中断方法:将8255的A口设为输出,IRQ直接接到正脉冲,线
路连接如图7.1所示;
✿ 查询方法:将8255的A口设为输出接指示灯,C口设为输入,
将PC0接正脉冲输入,线路连接如图7.2所示。
图 7.1
图 7.2
YANGTZE NORMAL UNIVERSITY
三、编程提示
中断方法的编程流程如图7.3所示
开始
Strtup()打开设备
中断无效
设置8255A口为输出
Cleanup()
注册中断服务程序Intr
返回DOS
中断入口
中断使能
A口输出A5H
A口输出5AH
延迟2秒
有键按下否?
中断结束
Y
主程序
中断服务程序
图7.3
YANGTZE NORMAL UNIVERSITY
查询方法的编程流程如图7.4所示
开始
Strtup()打开设备
Cleanup()
8255A口输出、C口输入
返回DOS
查询PC0
N
高电平?
Y
A口输出5AH
A口输出A5H
延迟2秒
有键按下?
图7.4
YANGTZE NORMAL UNIVERSITY
实验8 定时器/计数器实验
一、实验目的
掌握8253的基本工作原理和编程方法。
二、实验内容
✿ 定时器应用:按图8.1连接电路,将计数器0、计数器1分别
设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出
电平的变化(频率1HZ);
✿ 计数器应用:按图8.2连接电路,将计数器0设置为方式0,
计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程
使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化
(当输入N+1个脉冲后OUT0变高电平)。
YANGTZE NORMAL UNIVERSITY
图 8.1
图 8.2
YANGTZE NORMAL UNIVERSITY
三、编程提示
8253控制寄存器地址 283H
计数器0地址
280H
计数器1地址
281H
定时器应用时的编程
流程如图8.3所示,计数器
应用时的编程流程如图8.4
所示。
图 8.3
图 8.4
YANGTZE NORMAL UNIVERSITY
实验9 并行通信实验
一、实验目的
掌握并行接口芯片8255的工作原理及使用方法
二、实验内容
✿ 方式0的应用:实验电路如图9.1,8255C口接逻辑电平开关
K0~K7,A口接LED显示电路L0~L7,编程从8255C口输入数
据,再从A口输出;
✿ 方式1的应用:实验电路如图9.2,要求每按一次单脉冲按
钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一
次中断服务:依次输出01H、02H,04H,08H,10H,20H,
40H,80H使L0~L7依次发光,中断8次结束。
YANGTZE NORMAL UNIVERSITY
图 9.1
图 9.2
YANGTZE NORMAL UNIVERSITY
三、编程提示
8255控制端口地址 28BH
A口的地址
288H
C口的地址
28AH
方式0应用时编程流程如图
9.3所示,方式1应用时编程流
程如图9.4所示。
图 9.3
YANGTZE NORMAL UNIVERSITY
图 9.4
YANGTZE NORMAL UNIVERSITY
实验10 7段数码管显示控制实验
一、实验目的
掌握数码管显示数字的原理。
二、实验内容
✿ 静态显示:按图10.1连接好电路,将8255的A口PA0~PA6分
别与七段数码管的段码驱动输入端a~g相连,位码驱动输
入端S1接+5V(选中),S0、dp接地(关闭)。编程从键盘
输入一位十进制数字(0~9),在七段数码管上显示出来;
✿ 动态显示:按图10.2连接好电路,七段数码管段码连接不变,
位码驱动输入端S1,S0接8255 C口的PC1,PC0,编程在两个
数码管上显示“56”。
YANGTZE NORMAL UNIVERSITY
图 10.1
YANGTZE NORMAL UNIVERSITY
图 10.2
YANGTZE NORMAL UNIVERSITY
三、编程提示
实验台上的七段数码管为共阴型,段码采用同相驱动,输
入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入
端高电平选中。
静态显示时的编程流程如图10.3所示,动态显示时的编程
流程如图10.4所示。
YANGTZE NORMAL UNIVERSITY
图 10.3
图 10.4
YANGTZE NORMAL UNIVERSITY
实验11 抢答器设计实验
一、实验目的
✿ 了解微机化竞赛抢答器的基本原理;
✿ 进一步学习使用并行接口。
二、实验内容
图11.1为竞赛抢答器(模拟)的原理图,逻辑开关K0~K7
代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,
相当某组抢答按钮按下。在七段数码管上将其组号(0~7)显
示出来,并使微机扬声器响一下。
YANGTZE NORMAL UNIVERSITY
图 11.1
YANGTZE NORMAL UNIVERSITY
三、编程提示
设置8255为C口输入、A口输出,读取C口数据,若为0表
示无人抢答,若不为0则有人抢答。根据读取数据可判断抢答组
号。从键盘上按空格键开始下一轮抢答,按其它键程序退出。
YANGTZE NORMAL UNIVERSITY
图 11.2
YANGTZE NORMAL UNIVERSITY
实验12 交通灯控制实验
一、实验目的
通过并行接口8255实现十字路口交通灯的模拟控制,进一步
掌握对并行口的使用。
二、实验内容
如图12.1,L7、L6、L5作为南北路口的交通灯与PC7、PC6、
PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0
相连。编程使六个灯按交通灯变化规律亮灭。
图 12.1
YANGTZE NORMAL UNIVERSITY
三、编程提示
十字路口交通灯的变化规律要求:
(1) 南北路口的绿灯、东西路口的红灯同时亮30秒左右;
(2) 南北路口的黄灯闪烁若干次,同时东西路口的红灯
继续亮;
(3) 南北路口的红灯、东西路口的绿灯同时亮30秒左右;
(4) 南北路口的红灯继续亮、同时东西路口的黄灯亮闪
烁若干次;
(5) 转(1)重复。
编程流程如图12.2所示 。
YANGTZE NORMAL UNIVERSITY
图 12.2
YANGTZE NORMAL UNIVERSITY
实验13 串行通信实验
一、实验目的
✿ 了解串行通讯的基本原理;
✿ 掌握串行接口芯片8251的工作原理和编程方法。
二、实验内容
✿ 按图13.1连接好电路,(8251插通用插座)其中8253计数器用
于产生8251的发送和接收时钟.TXD和RXD连在一起;
✿ 编程:从键盘输入一个字符,将其ASCII码加1后发送出去,再
接收回来在屏幕上显示。实现自发自收。
YANGTZE NORMAL UNIVERSITY
图 13.1
YANGTZE NORMAL UNIVERSITY
三、编程提示
✿ 图示电路8251的控制口地址为2B9H,数据口地址为2B8H;
✿ 8253计数器的计数初值=时钟频率 /(波特率×波特率因
子),这里的时钟频率接1MHz,波特率若选1200,波特率因
子若选16,则计数器初值为52H;
✿ 收发采用查询方式;
✿ 编程流程如图13.2所示。
YANGTZE NORMAL UNIVERSITY
图 13.2
YANGTZE NORMAL UNIVERSITY
实验14 数/模转换实验
一、实验目的
了解数/模转换器的基本原理,掌握DAC0832芯片的使用方
法 。
二、实验内容
✿ 实验电路原理如图14.1所示,DAC0832采用单缓冲方式,具
有单双极性输入端(图中的Ua、Ub);
✿ 编程产生锯齿波(从Ub输出,用示波器观察);
✿ 编程产生正弦波(从Ub输出,用示波器观察)。
YANGTZE NORMAL UNIVERSITY
图 14.1
YANGTZE NORMAL UNIVERSITY
三、编程提示
✿ 8位D/A转换器DAC0832的口地址为290H,输入数据与输出电
压的关系为:
Ua=-(UREF/256)*N
Ua=-(UREF/256)*N-5
(UREF表示参考电压,N表示数数据),这里的参考电压为PC
机的+5V电源。
✿ 产生锯齿波只须将输出到DAC0832的数据由0循环递增;
✿ 产生正弦波可根据正弦函数建一个下弦数字量表,取值范围
为一个周期,表中数据个数在16个以上。
YANGTZE NORMAL UNIVERSITY
图 14.2
图 14.3
YANGTZE NORMAL UNIVERSITY
实验15 模/数转换实验
一、实验目的
了解模/数转换的基本原理,掌握ADC0809的使用方法 。
二、实验内容
实验电路原理图如图15.1所示。通过实验台左下角电位器
RW1输出0~5V直流电压送入ADC0809通道0(IN0),编程采集IN0
输入的电压,在屏幕上显示出转换后的数据(用16进制数) 。
YANGTZE NORMAL UNIVERSITY
图 15.1
YANGTZE NORMAL UNIVERSITY
三、编程提示
✿ ADC0809的IN0口地址为298H,IN1口地址为299H;
✿ IN0单极性输入电压与转换后数字的关系为:
N=Ui/(Uref/256)
其中Ui为输入电压,UREF为参考电压,这里的参考电压为P
C机的+5V电源。
✿ 编程流程如图15.2所示
YANGTZE NORMAL UNIVERSITY
图 15.2
YANGTZE NORMAL UNIVERSITY
实验16 8255A并行口键盘扫描实验
一、实验目的
✿ 掌握8255A编程原理。
✿ 了解键盘阵列结构,学会读取按键的方法。
二、实验内容
本实验的实验电路如图16.1所示。它做在一块扩展电路板上
,用一根20芯扁平电缆线将实验板扩展插头J1与实验台上的扩
展插头J7相连,为扩展电路连接电源及外部总线。扩展电路板
上的数码管、键盘阵列既能由8279控制,也可以由外部电路控
制,其实现靠的是若干组短路子组成的控制选择开关K1、K2、
K3、K4、KB0、KB1、KB2。
YANGTZE NORMAL UNIVERSITY
当K1、K3、K4连接在8279一端时,数码管由8279控制,连
接在LS273一端时由外部总线通过LS273直接控制。当K2、KB1、
KB2、KB3连接在8279一端时,键盘阵列由8279控制,连接在
8255一端时由外接芯片8255控制。因为本实验为8255控制实验,
所以除了连接J1和J7外,还需要将选择开关K2、KB1、KB2、KB3
连接在8255一端,并将KA0-KA7,KB0-KB2连接到8255芯片A口,
C口,还需要连接8255芯片的片选,以使键盘阵列由8255芯片控
制。
8255A的端口A地址为:288H,端口C地址为:28AH,控制口
地址为:28BH。编程使得在键盘阵列上每按一个键后,微机屏
幕上有相应字符显示出来。
YANGTZE NORMAL UNIVERSITY
图 16.1
YANGTZE NORMAL UNIVERSITY
三、编程提示
1.识别键盘上的闭合键,通过采用行扫描法或列翻转法:
(1)行扫描法是使键盘上某一列线为低电平,而其余行接高电平,
然后读取列值;如果列值中有某位为低电平,则表明行列交点处的键
被按下;否则扫描下一行,直到扫完全部的行线为止。
(2)行反转法识别闭合键时,要将行线接一个并行口,先让它工
作在输出方式,将列线也接到一个并行口,先让它工作在输入方式;
程序通过输出端口向全部行线上送低电平,然后读取列线的值;如果
此时有某一键被按下,则必定会使某一列线值为零,程序再对两个并
行端口进行方式设置,使行线工作在输入方式,列线工作在输出方式,
并且将刚才读到的列线值从列线所接的并行端口输出,再读取行线上
的值;那么,在闭合键所在的行线上的值必定为零。这样,当一个键
被按下时,必定可以读到一对唯一的行值和列值。在我们提供的程序
中就采用行反转法来识别键盘按键。
YANGTZE NORMAL UNIVERSITY
2.在程序设计时,将各个键对应的代码(列值,行值)放在
一个表中,程序通过查表来确定具体按下的为哪一个键。
3.编程流程
主程序流程如图16.2所示。
图 16.2
YANGTZE NORMAL UNIVERSITY
键盘扫描子程序流
程如图16.3所示。
图 16.3
YANGTZE NORMAL UNIVERSITY
实验17 总线控制LED显示实验
一、实验目的
✿ 了解七段数码管(LED)显示数字的原理。
✿ 掌握只用一个段锁存器和一个位锁存器来同时显示多位数字
的技术。
二、实验内容
实验的实验电路如图17.1所示。它做在一块扩展电路板上
,用一根20芯扁平电缆线将实验板扩展插头J1与实验台上的扩
展插头J7相连,为扩展电路连接电源及外部总线。扩展电路板
上的数码管、键盘阵列既能由8279控制,也可以由外部电路控
制,其实现靠的是若干组短路子组成的控制选择开关K1、K2、
K3、K4、KB0、KB1、KB2。
YANGTZE NORMAL UNIVERSITY
当K1,K3,K4连接在8279一端时,数码管由8279控制,连接
在LS273一端时由外部总线通过LS273直接控制。当
K2,KB1,KB2,KB3连接在8279一端时,键盘阵列由8279控制,连
接在8255一端时由外接芯片8255控制。
因为本实验为外部总线控制实验,所以除了连接J1和J7外,
还需要将选择开关K1、K3、K4连接在LS273一端,以使多位数码
管(LED)由外部总线控制。
选段锁存器(PORTBLT)地址为:2B0H。
选位锁存器(PORTREG)地址为:2B1H。
编程使得在多位数码管(LED)上显示从000000至999999不断
循环自增的数值。
YANGTZE NORMAL UNIVERSITY
图 17.1
YANGTZE NORMAL UNIVERSITY
三、编程提示
主程序流程如图17.2所示。
图 17.2
YANGTZE NORMAL UNIVERSITY
LED显示子程序流程如图17.3所示。
图 17.3
YANGTZE NORMAL UNIVERSITY
实验18 微型计算机内部端口操作实验
一、实验目的
✿ 了解微型计算机内部常用端口地址的分配 。
✿ 掌握微型计算机内部,利用8255、8253控制扬声器发声的方
法 。
二、实验内容
微型计算机内部,有关扬声器控制电路的硬件连接如图
18.1所示。编写一完整程序通过键盘控制扬声器的发音频率。
(微机中8253的端口地址为40H~43H,8255的端口地址为60H~
63H) 。
YANGTZE NORMAL UNIVERSITY
按键与频率的关系如下表所示。
按键
1
频率(Hz) 350
2
560
3
4
5
6
7
ESC
820 1100 1500 1850 2200 退出
8253
CLK2
1.2MHz
OUT2
GATE2
&
8255
PB0
PB1
图18.1
YANGTZE NORMAL UNIVERSITY
三、编程提示
1.将8253中2#计数器的工作方式设置为方式3(方波)。
2.8255的工作方式和工作状态不需要改变,保持微机启动后
的设置。
3.编程流程如图18.2所示。
YANGTZE NORMAL UNIVERSITY
开始
定义数据段,建立频率表
设置8253的工作方式
置8255的PB1=0,PB0=0
接收单字符
=ESC?
Y
<1或>7?
从表中取频率并计算计数初值
写8253的计数初值
置8255的PB1=1,PB0=1
延时
图18.2
Y
结束