2023年7月14日发(作者:)
华北电力大学科技学院
实 验 报 告
实验名称
课程名称
接口与通信
专业班级: 学生姓名:
学 号: 成 绩:
指导教师: 实验日期:
|
|
|
|
华 北 电 力 大 学 科 技 学 院 实 验 报 告
开发器使用与程序设计
一、实验目的
1、了解伟福仿真软件的使用及汇编程序的调试方法;
2、掌握简单程序编写的方法;
3、通过对两个验证性实验的阅读、调试,掌握不同进制数及编码相互转换的程序设计方法。
4、完成程序设计题,加深对数码转换的理解,了解简单程序的设计方法。
二、实验仪器和设备
PC机、WAVE软件。
三、实验内容及说明
内容1:十六进制转换为ASCII码。
内容2:接受小写字母转换成大写字母并显示。
四、实验步骤
1、启动计算机,打开伟福仿真软件,进入仿真环境。首先进行仿真器的设置,点击主菜单的仿真器选项,选择仿真器设置,或者直接点击仿真器设置快捷按钮,打开仿真器设置窗口,在仿真器标签里选择使用伟福软件模拟器。
2、在编辑窗口输入第一个实验内容的源程序,保存,文件名为,
3、对源程序进行编译。点击项目菜单,选择全部编译。编译无误后,打开数据窗口,选择外部数据存储器窗口XDATA,拖动XDATA窗口的滚动条,使地址3500H出现在窗口上,改变3500H起始的8个字节单元(四个字)的内容。执行程序,点击全速执行快捷按钮,点击暂停按钮,观察以地址350AH开始的四个存储单元数据变化情况。
4、关闭此项目,新建文件,输入第二个实验的源程序,保存为,新建项目→添加文件(选择YXG-1-2),输入项目名YXG-1-2,编译,执行,成功之后在相应目录下找到对应的EXE执行文件,双击打开,在窗口输入小写字母,回车键后窗口显示对应的大写字母。
5、选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。
第 页 共 页 华 北 电 力 大 学 科 技 学 院 实 验 报 告
五、 实验结果与数据处理
实验内容1源程序:
DATA SEGMENT
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,0000H
MOV DS,AX
MOV CX,0004H
MOV DI,0000H
MOV DX,[DI]
A1: MOV AX,DX
AND AX,000FH
CMP AL,0AH
JB A2
ADD AL,07H
A2: ADD AL,30H
MOV [DI+0Ah],AL
INC DI
PUSH CX
MOV CL,04H
SHR DX,CL
POP CX
LOOP A1
MOV AH,4CH
INT 21H
CODE ENDS
END START
实验内容2源代码:
DATA SEGMENT
BUF DB 200 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF
MOV CL,00H
A1:
MOV AH,01H
INT 21H
CMP AL,0DH
JZ A2
SUB AL,20H
MOV [SI],AL
INC SI
INC CL
JMP A1
A2: MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
INT 21H
MOV SI,OFFSET BUF
CX←代码长度
DI←起始长度
DX←16进制数
AX←DX
取低四位
0~9?
是AH~FH,再加7H
转换为ASCII存结果
修改指针
DX内容右移四CX-1=0?
结束
第 页 共 页 华 北 电 力 大 学 科 技 学 院 实 验 报 告
MOV CH,00H
A3: MOV DL,[SI]
MOV AH,02H
INT 21H
INC SI
LOOP A3
PUSH BX;延时程序
PUSH CX
MOV BX,0FFFH
DELAY:
MOV CX,0FFFH
DELAY1:
DEC CX
JNZ DELAY1
DEC BX
JNZ DELAY
POP CX
POP BX
MOV AH,4CH
INT 21H
CODE ENDS
END START
开始
接受键入的字符→AL
小写转换为大写
显示转换后的字符
存入缓冲区
缓冲区指向下一单元
结束
五、实验总结与思考
本次试验达到预期结果,完成了对两个验证实验的验证。
在实验过程中,通过对程序的单步执行,观察各个寄存器和内存单元数据的变化,对于程序的调试很有帮助,为后续实验打好了基础。
在第二个实验内容的验证过程,开始由于没有延时,运行时看不清实验结果,后来通过加入一定延时解决了问题,还参考了其他的同学的解决办法,例如通过DOS的2号功能调用,开阔了思路,使我收获很大。
第 页 共 页 华 北 电 力 大 学 科 技 学 院 实 验 报 告
中断8259应用 定时/计数器8253应用
一、实验目的
(1)通过阅读并调试示例程序,学习8088/86与8259A的连接与控制方法,掌握8259A中断控制器的工作原理。
(2)完成程序设计题,学会编写中断服务程序
二、实验内容
1. 实验原理
8259A是一种可编程序中断控制器,与8088/86微机兼容,能处理8级优先权中断,亦可以通过级联构成64级向量优先权中断系统。具有可编程控制中断方式,并能分别屏蔽各个中断请求。通过4个初始化命令字(ICW1~ICW4)及3个操作命令字(OCW1~OCW3)使用8259A可编程中断控制器。
(1) 初始化命令字
1) ICW1写入双数地址。
2) ICW2写入单数地址
3) ICW3写入单数地址
4) ICW4写入单数地址
(2) 操作命令字
1) OCW1写入单数地址
2) OCW2写入双数地址
3) OCW3写入双数地址
2. 实验内容
用8088/86控制8259可编程中断控制器,实现对外部中断的响应和处理。要求程序中对每次中断进行计数,并将计数结果用8255A的PA端口输出到LED显示。
3. 实验电路
实验电路参考实验指导书。
4. 参考程序
参考实验指导书
5. 程序设计
修改上述程序,使每中断10次计数器加1,并将计数结果从8255的PB口输出到LED显示。完成电路设计及程序的编制,进行调试并验证结果。
程序如下:
mode equ 80h
pa8255 equ 8000h
pb8255 equ 8001h
ctl8255 equ 8003h
icw1 equ 00010011b
icw2 equ 00100000b
icw4 equ 01h
ocw1 equ 11111110b
cs8259a equ 09000h
cs8259b equ 09001h
data segment
cnt db 0
cn db 0
data ends
code segment
assume cs:code,ds:data
ienter proc near
push ax
push dx
mov dx,pb8255
inc cnt
cmp cnt,0ah
第 页 共 页 华 北 电 力 大 学 科 技 学 院 实 验 报 告
jnz P1
mov cnt,0
inc cn
mov al,cn
out dx,al
P1:mov dx,cs8259a
mov al,20h
out dx,al
pop dx
pop ax
iret
ienter endp
init proc near
mov dx,cs8259a
mov al,icw1
out dx,al
mov dx,cs8259b
mov al,icw2
out dx,al
mov al,icw4
out dx,al
mov al,ocw1
out dx,al
ret
init endp
start proc near
mov dx,ctl8255
mov al,mode
out dx,al
cli
mov ax,0
mov ds,ax
mov bx,4*icw2
mov ax,offset ienter
mov [bx],ax
mov ax,code
inc bx
inc bx
mov [bx],ax
call init
mov ax,data
mov ds,ax
mov cn,0
mov al,cn
mov dx,pb8255
out dx,al
sti
lp:
nop
jmp lp
start endp
code ends
end start
三、实验结果
成功实现10次中断计数器加1的功能,成功完成题目的内容。
四、实验心得
对于中断的使用有很大的提高,能够熟悉控制中断,同时与如何使用计数器和寄存器有了一定的提高,同时了解和熟悉了中断程序的编写。
第 页 共 页 华 北 电 力 大 学 科 技 学 院 实 验 报 告
定时/计数器8253应用
一、实验目的
通过阅读并调试示例程序,完成程序设计题,掌握8253的基本工作原理和编程方法,熟悉8253在系统中的典型接法。
二、实验内容
1. 实验原理
8253(或8254)可编程定时/计数器是Intel公司产生的通用外围接口芯片,它有3个独立的16位计数器,计数范围0~2MHz,而8253—2和8254的最高技术频率为5MHz。它所有的计数方式和操作方式都通过编程控制。
2.程序设计
按图接线,通过编程实现LED指示灯以1s的时间间隔闪烁。并通过在硬件上接线,实现在7段数码管上刷新显示。
程序如下:
CONTROL EQU 08003H
COUNT0 EQU 08000H
COUNT1 EQU 08001H
COUNT2 EQU 08002H
CODE SEGMENT
ASSUME CS:CODE
START PROC NEAR
MOV AL,30H
MOV DX,CONTROL
OUT DX,AL
MOV AL,5
MOV DX,COUNT0
OUT DX,AL
MOV AL,0
OUT DX,AL
AGAIN:
MOV AL,00000000B
MOV DX,CONTROL
OUT DX,AL
MOV DX,COUNT0
IN AL,DX
MOV BL,AL
IN AL,DX
MOV AH,AL
MOV AL,BL
JMP AGAIN
START ENDP
CODE ENDS
END START
三、 实验结果
成功实现LED灯每隔一秒计数闪烁一次,亦即是只能够实现频闪,但是并不能同时做到七段数码器计数,不停刷新数字计数。最多也只能只能做到让其七段数码管在信号输入的时候不停的往前刷新,但只限于0-9里面刷新计数。
四、实验心得
这个实验处理计数这个功能实现以外,还综合了七段数码管的刷新实现功能,对于后面的七段数码管的操作实验有着不可估计的好处,可以提前熟悉了七段数码管是如何实现功能的过程。
并行接口8255应用(跑马灯)
第 页 共 页 华 北 电 力 大 学 科 技 学 院 实 验 报 告
一、实验目的
(1) 通过阅读并调试示例程序,掌握8255A可编程并行接口的工作原理。
(2) 完成程序设计题。学会并行接口电路的设计。及编写输入输出控制程序。
二、实验内容
1. 实验原理
8255A是可编程的通用并行输入/输出接口芯片,因通用性强,使用灵活,可直接与CPU总线相连,应用非常广泛。
8255A芯片内部有3个8为的输入/输出端口,即A口,B口和C口。从内部控制的角度来讲,可分为两组:A组合B组。A组控制模块管理A口和C口德高四位(PC7~PC4),B组控制模块管理B口和C口的低四位(PC3~PC0)。
面向I/O设备的信号线:
(1) PA7~PA0:A口I/O信号线
(2) PB7~PB0:B口I/O信号线
(3) PAC~PC0:C口I/O信号线
面向系统的信号线:
(1) D7~D0:双向数据线,可与系统数据总线相连;
(2) /CS:片选信号,当/CS=0时,选中8255A;
(3) A1、A0:端口选择信号,当/CD有效时,再由A1、A0的组合确定选择A口】B口、C口或控制寄存器口;
(4) /RD:芯片读信号,当/RD=0是。CPU从8255A的指定端口读取数据或状态;
(5) /WR:芯片写信号,当/WR=0时,CPU想向8255A的制定端口写入数据或控制字;
(6) RESET:复位信号,当RESET=1时,所以内部寄存器都被清零,3个端口被自动设为入端口。
8255A的三种工作方式:
(1) 方式0:基本输入/输出方式;
(2) 方式1:选通型输入/输出方式
(3) 方式2:双向数据传送方式
8255A的控制字:
(1) 工作方式选择控制字,D7~D0控制位的含义见表。
(2) C口按位置位/复位控制字。
2、实验内容
跑马灯程序设计,要求K0=0时,从左向右跑马灯;K1=0时,从右向左跑马灯;K2=0时,从左从右向中间跑马灯,LED从PC口输出。完成得安路设计及程序的编译,进行调试并验证结果。
程序如下:
DATA SEGMENT
MODE EQU 082H
PORTA EQU 8000H
PORTB EQU 8001H
PORTC EQU 8002H
CADDR EQU 8003H
POS DB 0FFH
NOWDATA DB 0FFH
LEFT DB 0FFH
RIGHT DB 0FFH
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,MODE
MOV DX,CADDR
OUT DX,AL
第 页 共 页 华 北 电 力 大 学 科 技 学 院 实 验 报 告
INPUT:
MOV DX,PORTB
IN AL,DX
CMP AL,NOWDATA
JNZ INITIAL
CMP AL,0FEH
JZ K0
CMP AL,0FDH
JZ K1
CMP AL,0FBH
JZ K2
CMP AL,0F7H
JZ K3
JMP INPUT
INITIAL:
MOV NOWDATA,AL
CMP AL,0FEH
JZ INTIK0
CMP AL,0FDH
JZ INTIK1
CMP AL,0FBH
JZ INTIK2
CMP AL,0F7H
JZ INTIK3
INTIK0:
MOV POS,10000000B
JMP OUTPUT
INTIK1:
MOV POS,00000001B
JMP OUTPUT
INTIK2:
MOV LEFT,10000000B
MOV RIGHT,00000001B
MOV AL,LEFT
OR AL,RIGHT
MOV POS,AL
JMP OUTPUT
INTIK3:
MOV LEFT,00010000B
MOV RIGHT,00001000B
MOV AL,LEFT
OR AL,RIGHT
MOV POS,AL
JMP OUTPUT
K0:
ROR POS,1
JMP OUTPUT
K1:
ROL POS,1
JMP OUTPUT
K2:
ROR LEFT,1
ROL RIGHT,1
MOV AL,LEFT
OR AL,RIGHT
MOV POS,AL
K3:
ROR LEFT,1
第 页 共 页 华 北 电 力 大 学 科 技 学 院 实 验 报 告
ROL RIGHT,1
MOV AL,LEFT
OR AL,RIGHT
MOV POS,AL
OUTPUT:
MOV AL,POS
MOV DX,PORTA
OUT DX,AL
MOV CX,5000H
LOOP $
JMP INPUT
CODE ENDS
END START
三、实验心得
通过设计跑马灯电路,对于硬件的连接有了更深一层的认识,同时对于编程的熟练有了一定的提高,同时认识到控制信号的使用。
第 页 共 页 华 北 电 力 大 学 科 技 学 院 实 验 报 告
存储器扩展及读写实验
一、实验目的
(1) 通过阅读并测试示例程序,完成程序设计题,熟悉静态RAM的扩展方法。
(2) 了解8086/8088与存储器的连接,掌握扩展存储器的读写方法。
二、实验内容
1.实验原理(62256RAM介绍)
62256是32*8的静态存储器,管脚如图所示。其中:A0~A14为地址线,DB0~DB7为数据线,/cs为存储器的片选,/OE为存储器数据输出选通信号,/WE为数据写入存储器信号。62256工作方式如下图。
/CS /WE /OE 方式 DB-~DB7
H X X 未选中 高阻
L H H 读写禁止 高阻
L L H 写 IN
L H L 读 OUT
2.实验内容
设计扩展存储电器的硬件连接图并编制程序,讲字符A~Z循环存入62256扩展RAM中,让后再检查扩展存储器中的内容。
三、程序设计
编写升序,将4KB扩展存储器交替写入55H和0AAH。
程序如下:
RAMADDR EQU 0000H
RAMOFF EQU 9000H
COUNT EQU 800H
CODE SEGMENT
ASSUME CS:CODE
START: PROC NEAR
MOV AX,RAMADDR
MOV DS,AX
MOV BX,RAMOFF
MOV CX,COUNT
REP1: MOV DL,55H
MOV [BX],DL
INC BX
MOV DL,0AAH
MOV [BX],DL
INC BX
LOOP REP1
JMP $
MOV AH,04H
INT 21H
CODE ENDS
四、实验结果
通过在软件上调试,运行时能够看到内存地址的改变,证明此扩展的程序成功实现了。
五、实验心得
了解了内存如何扩展的过程,对于理论知识的了解有了进一步的加深,同时对于内存控制有了加深了解。而通过实际操作,扩展存储器的读写方法已经了解了。
第 页 共 页 华 北 电 力 大 学 科 技 学 院 实 验 报 告
模/数(A/D)转换结果送数码管显示(综合实验)
一、实验目的
(1) 通过阅读并调试示例程序,了解A/D转换的基本原理。
(2) 完成程序设计题,掌握ADC08009的使用方法。
(3) 了解用总线控制数码管显示
二、实验内容
1. 实验原理
ADC0809是8位8通道A/D转换器,芯片内包括一个8位的逐次逼近型的ADC部分,并提供一个8通道的模拟多路开关和联合寻址逻辑。用该电路可直接采样8个单端的模拟信号,分时进行A./D转换,在多点巡回检测,过程控制等应用领域使用非常广泛。ADC0809的主要技术指标为:
(1) 分辨率:8位;
(2) 单电源:+5V;
(3) 总的不可调误差:正负1LSB
(4) 转换时间:取决于时钟频率,在1000KHZ时,一次模拟量转换时间为100us;
(5) 模拟量输入范围:单极性0~5V;
(6) 时钟频率范围:10~1280KHZ;
(7) 参考电压VREF(+)、VREF(-):+5V;
(8) 8通道模拟转换信号ADD_C、ADD_B、ADD_A;
(9) A/D转换方法;
1) IN0单极性输入电压与转换后数字的关系为N=Ui/(Uref/256) ,其中Ui为输入电压,Uref为参考电压,这里参考电压为+5V电源。
2) 一次A/D转换的程序可以为
MOV DX,口地址
OUT DX,AL ;启动转换
延时
IN AL,DX ;读取转换结果放在AL中
2. 实验内容
通过电位器输出0~5V直流电压送入ADC0809通道0(IN0),利用输出命令启动A/D转换器,输入命令读取转换结果,验证输入电压与转换后数字的关系。
编程采集IN0输入的电压,通过8255PA连接发光二极管显示转换后的数据(16进制数)。
3. 实验电路
电路图如实验指导书上所述。
三、 程序设计
代码如下:
CS0809 EQU 09000H
OUTBIT EQU 08002H
OUTSEG EQU 08004H
DATA SEGMENT
LEDBUF DB 2 DUP (?)
NUM DB 1 DUP (?)
DELAYT DB 1 DUP (?)
LEDMAP: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
DELAY PROC NEAR
PUSH AX
PUSH CX
MOV AL,0H
MOV CX,AX
LOOP $
POP CX
第 页 共 页 华 北 电 力 大 学 科 技 学 院 实 验 报 告
POP AX
RET
DELAY ENDP
DISPLAYLED PROC NEAR
MOV BX,OFFSET LEDBUF
MOV CL,2
MOV AH,00100000B
DLOOP:
MOV DX,OUTBIT
MOV AL,0
OUT DX,AL
MOV AL,[BX]
MOV DX,OUTSEG
OUT DX,AL
MOV DX,OUTBIT
MOV AL,AH
OUT DX,AL
PUSH AX
MOV AH,1
CALL DELAY
POP AX
SHR AH,1
INC BX
DEC CL
JNZ DLOOP
MOV DX,OUTBIT
MOV AL,0
OUT DX,AL
RET
DISPLAYLED ENDP
START PROC NEAR
MOV AX,DATA
MOV DS,AX
AGAIN:
MOV AL,0
MOV DX,CS0809
OUT DX,AL
MOV CX,40H
LOOP $
IN AL,DX
MOV NUM,AL
MLOOP:
MOV CH,NUM
MOV AH,0
MOV BX,OFFSET LEDBUF
FILLBUF:
MOV SI,OFFSET LEDMAP
MOV AL,CH
AND AL,0F0H
MOV CL,4
SHR AL,CL
ADD AX,SI
MOV SI,AX
MOV AL,[SI]
MOV [BX],AL
INC BX
DEC CL
MOV AL,CH
第 页 共 页 华 北 电 力 大 学 科 技 学 院 实 验 报 告
AND AL,0FH
MOV SI,OFFSET LEDMAP
ADD AX,SI
MOV SI,AX
MOV AL,[SI]
MOV [BX],AL
MOV DELAYT,20
DISPAGAIN:
CALL DISPLAYLED
DEC DELAYT
JNZ DISPAGAIN
JMP START
START ENDP
CODE ENDS
END START
四、实验总结
通过这几周的五个实验,让我对接口与通信技术这们课程有一个深刻
的认识,更培养了自己的动手能力,让理论知识与实践得到很好的结合
第 页 共 页
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689331713a231128.html
评论列表(0条)