《计算机接口技术实验指导书》
《计算机接口技术》实验指导书
2012-04-26
目录
实验环境简介 (3)
实验一简单I/O口扩展实验 (5)
实验二8255并行口实验 (7)
实验三8250串口实验 (9)
实验四8253定时器/计数器接口实验 (12)
实验五8259中断控制器实验 (15)
实验六存储器读写实验 (18)
实验七A/D实验 (20)
实验八D/A实验 (22)
实验报告要求 (23)
实验环境简介
一、实验硬件环境
实验采用北京精仪达盛科技有限公司的CPU挂箱,如下图所示。并通过串口与PC机相连,进行程序的下载和调试。
二、实验软件环境
8086集成开发环境是为INTEL8086系列程序开发的多窗口程序级开发调度软件,它的友好的WINDOWS的界面使用户的使用简单快捷,极大的提高了程序的开发效率。
安装程序:MCS 8086/ Setup.exe。生成如下图标。
进行串口连接的配置如下。
三、实验注意事项
实验之前认真阅读实验指导书的实验要求,进行前期知识的复习和实验内容的预习。实验时要遵守实验室的规章制度,听从实验室老师的指导,禁止操作与本次实验无关的设备。
进行硬件连接和断开时应切断电源,禁止带电操作,以免损坏元件。
使用连线进行端口的连接时,要拧入、拧出,一次只连接或拔出一根线的一端。
四、实验要求
要求按照实验指导书介绍,完成基本实验内容。并能够在基本实验的基础上,改变实验参数,如:改变硬件线路设计,修改相应的实验程序,创新性地实现新实验的方案设计和实验内
容。
实验一简单I/O口扩展实验
一、实验目的
1.熟悉74LS273,74LS244的应用接口方法。
2.掌握用锁存器、三态门扩展简单并行输入、输出口的方法。
3.通过本实验,掌握嵌入式系统的基础开发方法,掌握本实验平台的基本开发步骤,熟悉开发软、硬件平台的使用,学会程序的单步调试运行。
二、实验设备
CPU挂箱、8086CPU模块
三、实验内容
逻辑电平开关的状态输入74LS244,然后通过74LS273锁存输出,利用LED显示电路作为输出的状态显示。
四、实验原理介绍
本实验用到两部分电路:开关量输入输出电路,简单I/O口扩展电路。
五、实验步骤
1.实验接线:(?表示相互连接)
CS0?CS244;CS1?CS273;平推开关的输出K1~K8 ?IN0~IN7(对应连接);00~07?LED1~LED8。
2.编辑程序,单步运行,调试程序
4.调试通过后,全速运行程序,观看实验结果。
5.编写实验报告。
六、实验提示
74LS244或74LS273的片选信号可以改变,例如连接CS2,此时应同时修改程序中相应的地址。
七、实验结果
程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。例如:
K2置于L位置,则对应的LED2应该点亮。
八、程序框图
九、程序源代码
assume cs:code
code segment public
org 100h
start: mov dx,04a0h ;74LS244地址04D0H
in al,dx ;读输入开关量
mov dx,04b0h ;74LS273地址04E0H
out dx,al ;输出至LED
jmp start
code ends
end start
十、改进实验
提示:地址分配表如下:
CS0 片选信号,地址04A0~04AF 偶地址有效
CS1 片选信号,地址04B0~04BF 偶地址有效
CS2 片选信号,地址04C0~04CF 偶地址有效
CS3 片选信号,地址04D0~04DF 偶地址有效
CS4 片选信号,地址04E0~04EF 偶地址有效
CS5 片选信号,地址04F0~04FF 偶地址有效
CS6 片选信号,地址0000~01FF 偶地址有效
CS7 片选信号,地址0200~03FF 偶地址有效
改变片选信号线的连接方式,如:CS3?CS244;CS4?CS273;请修改相应的程序实现上述方案中的功能。
实验二8255并行口实验
一、实验目的
掌握8255A的编程原理
二、实验设备
CPU挂箱、8086CPU模块
三、实验内容
8255A的A口做为输入口,与逻辑电平开关相连。8255A的B口做为输出口,与发光二极管相连。编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。
四、实验原理介绍
本实验用到两部分电路:开关量输入输出电路和8255可编程并口电路。
五、实验步骤
1、实验接线
CS0?CS8255,PA0~PA7,平推开关的输出K1~K8,PB0~PB7?发光二极管的输入LDE1~LDE8。
2、编程并全速或单步运行
3、全速运行时拨动开关,观察发光二极管的变化,当开关某位置于L时,对应的发光二极管
点亮,置于H时熄灭。
六、实验提示
8255A是一种比较常用的并行接口芯片,其特点在许多教科书中均有介绍,8255A有三个
8位的输入输出端口,通常将A端口作为输入用,B端口作为输出用,C端口作为辅助控制用,本实验也是如此。实验中8255A工作基本输入输出方式(方式0)
七、实验结果
程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。例如:K2置于L位置,则对应的LED2应该点亮。
八、程序框图
九、程序源代码
assume cs:code
code segment public
org 100h
start: mov dx,04a6h ;控制寄存器地址
mov ax,90h ;设置为A口输入,B口输出
out dx,ax
start1: mov dx,04a0h ;A口地址
in ax,dx ;输入
mov dx,04a2h ;B口地址
out dx,ax ;输出
jmp start1
code ends
end start
十、改进实验
若改变本实验当中并行通讯接口的输入、输出方式,例如:改变为B口输入、A口输出,请修改相应的硬件连接和软件程序内容。
实验三8250串口实验
一、实验目的
1、熟悉串行通信的一般原理和8250的工原理。
2、了解RS--232串行接口标准及连接方法。
3、掌握8250芯片的编程方法。
二、实验设备
CPU挂箱、8086CPU模块。
三、实验内容
在实验箱与PC机(上位机)之间实现串行通信,主机每下传一个字符,如通讯正确则下位机返回一个同样的字符,如果不正确,则无返回或不相同。
四、实验原理介绍
实验原理图见8250串行接口电路。由MAX232完成RS232电平和TTL电平的转换,由8250完成数据的收发。8250内部有10个寄存器,分别对应着不同的IO口地址。对不同的寄存器进行初始化或读出写入操作就可以完成与计算机的通信。由于不能同时收发数据,所以8250又称为通用串行异步收发器,简写为:UART。8250实验电路的所有信号均已连好。
实验中,通讯波特率选用9600bps。上下位机均采用查询方式。8250的端口地址为0480起始的偶地址单元。
实验中,上位机向下位机发送一个字符,下位机将接收到的字符返回。事实上这就实现了串口通信的基本过程。掌握了此实验中的编程方法再编制复杂的串行通信程序也就不难了。
串行通信和并行通信是计算机与外围设备进行信息交换的基本方法,二者有不同的特点。简而言之,前者电路及连线简单,最少用三根线就可以实现串口通信,但通信速率慢,适用于长距离慢速通信;后者电路及连线复杂,成本较高,但通信速率快,适用于短距离高速通信。
五、实验步骤
1、实验接线
利用串口电缆连接实验箱的串口和计算机的串口(COM1或COM2)
2、编写程序。
3、在实验箱上运行86编译系统,下载实验程序8250.asm,并全速运行。
4、实验箱退出86编译系统,启动实验三的上位机驱动程序T6UP.EXE,首先选择串行端口(COM1或COM2),端口与步骤1一致,键入串口号即可,然后从键盘上输入字符,看返回字符是否正确。欲退出T6UP.EXE,按回车键。
六、实验结果
在上位机程序中可以看到发送和接受的字符相同。
七、程序框图
上位机程序流程
九、程序源代码
code segment ;define data segment
assume cs:code
org 0100h
start:
mov bx,0480h
mov dx,bx
add dx,6
mov ax,80h
out dx,ax
mov dx,bx
mov ax,0ch ;000ch---9600 ,clk=4.77MHZ/4
; AL=4770000/16/9600/4=8
out dx,ax
add dx,2
mov ax,0h
out dx,ax
add dx,4
mov ax,07 ;no pe,8 bit, 1 stop
out dx,ax
mov dx,bx
add dx,2 ;no interupt
mov ax,0
out dx,ax
add dx,8h
in ax,dx
mov dx,bx
in ax,dx
crd: call recv
call send
jmp crd
send: push ax
mov bx,0480h
mov dx,bx
add dx,0ah
in ax,dx
test ax,20h
jnz recv2
pop ax
jmp send
recv2: pop ax
mov dx,bx
out dx,ax
ret
recv:mov bx,0480h
mov dx,bx
add dx,0ah
in ax,dx
test ax,01h
jnz recv1
jmp recv
recv1: mov dx,bx
in ax,dx
ret
code ends ;end of code segment
end start ;end assembly
十、改进实验
使用串口调试助手,实验与终端CPU的通讯,并在改变串口通讯相关参数的基础上,如:改变校验位、停止位的设置,实现正常的串口通讯。
实验四8253定时器/计数器接口实验
一、实验目的
掌握8253定时器的编程原理,用示波器观察不同模式下的输出波形。
二、实验设备
CPU挂箱、8086CPU模块、示波器。
三、实验内容
8253计数器0,1,2工作于方波方式,观察其输出波形。
四、实验原理介绍
本实验用到两部分电路:脉冲产生电路、8253定时器/计数器电路。8253是计算机系统中经常使用的可编程定时器/计数器,其内部有三个相互独立的计数器,分别称为T0,T1,T2。8253有多种工作方式,其中方式3为方波方式。当计数器设好初值后,计数器递减计数,在计数值的前一半输出高电平,后一半输出低电平。实验中,T0、T1的时钟由CLK3提供,其频率为750KHz。程序中,T0的初值设为927CH(37500十进制),则OUT0输出的方波周期为(37500*4/3*10-6=0.05s)。T2采用OUT0的输出为时钟,则在T2中设置初值为n时,则OUT2输出方波周期为n*0.05s。n的最大值为FFFFH,所以OUT2输出方波最大周期为3276.75s(=54.6分钟)。可见,采用计数器叠加使用后,输出周期范围可以大幅度提高,这在实际控制中是非常有用的。
五、实验步骤
1、实验连线:
CS0?CS8253 OUT0?8253CLK2 OUT2?LED1 示波器?OUT1
CLK3?8253CLK0,CLK3?8253CLK1
2、编程调试程序
3、全速运行,观察实验结果
六、实验结果
程序全速运行后,LED1闪烁(周期为0.25s),OUT1示波器观察为方波,频率为15KHz。
七、程序框图
八、程序源代码
assume cs:code
code segment public
org 100h
start:
mov dx,04a6h ;控制寄存器
mov ax,36h ;计数器0,方式3 out dx,ax
mov dx,04a0h
mov ax,7Ch
out dx,ax
mov ax,92h
out dx,ax ;计数值927Ch
mov dx,04a6h
mov ax,76h ;计数器1,方式3 out dx,ax
mov dx,04a2h
mov ax,32h
out dx,ax
mov ax,0 ;计数值32h
out dx,ax
mov dx,04a6h
mov ax,0b6h ;计数器2,方式3
out dx,ax
mov dx,04a4h
mov ax,04h
out dx,ax
mov ax,0 ;计数值04h
out dx,ax
next:
nop
jmp next
code ends
end start
十、改进实验
重新设计LED灯的闪烁周期,计算8253的计数值,修改相应的程序段。通过三个独立通道的串联,实验更长时间周期的LED灯的闪烁。
实验五8259中断控制器实验
一、实验目的
1、掌握8259A的工作原理。
2、掌握编写中断服务程序方法。
3、掌握初始化中断向量的方法。
二、实验设备
CPU挂箱、8086CPU模块。
三、实验内容
用电平开关的输出作为中断源,每个开关对应于一个中断源。在中断服务程序中,通过
74LS273输出一个数据,以点亮与中断源相对应位置的LED。
四、实验原理介绍
本实验用到三部分电路:电平开关电路、简单I/O口扩展电路和8259中断控制器电路。8259的使用说明请详细阅读教科书。8086的中断系统是向量中断方式。内存中特定位置有一中
断向量表,表内存有不同中断类型的中断向量(中断入口地址)。不同中断类型的中断向量在表
内有对应的偏移地址,其计算方法是:中断类型*4。中断类型由8259通过数据总线送给8086,8086内部电路会将该类型值自动乘4,而后赋给指令指针,从而转向中断向量表的相应单元取
得中断入口地址,之后就进入中断服务程序。请仔细研读8259的工作时序。中断类型的高5位
由8259寄存器ICW2决定,低3位由中断源IRx的编码自动填入。IR0~IR7的编码分别为000,001,010,011,100,101,110,111。
五、实验步骤
1、实验接线
CS0 ?CS8259 CS1 ?CS273 O0~O7?LED1~LED8 K1~K8?IR0~IR7 INT?INT( 8086CPU板) INTA?INTA(8086CPU板)
2、编译调试程序
3、全速运行程序,拨动某一电平开关,观察LED的亮灭情况。
六、实验结果
全速运行程序,由上往下拨动开关时,相应位置的LED点亮,其余LED全灭。
七、实验程序框图
计算机接口技术实验指导计算机科学与技术学院
主程序流程图中断服务程序流程图
九、程序源代码
assume cs:code
code segment public
org 100h
start: mov cx,0
start1: cli
mov dx,04a0h
mov ax,13h
out dx,ax ;ICW1, ICW4 NEEDED
mov dx,04a2h
mov ax,80h
out dx,ax ;ICW2 中断类型80h
mov ax,01
out dx,ax ;ICW4
mov ax,00h
out dx,ax ;OCW1, 开放所有中断
mov ax,0
mov ds,ax
mov si,200h ;初始化中断向量表
mov ax,offset hint
mov ds:[si],ax
add si,2
mov ds:[si],100h
mov ax,0
;jmp start
sti
waiting:
cmp ax,55h
nop
nop
nop
nop
nop
nop
nop
nop
jne waiting ;没发生中断,则等待
nop
nop
mov dx,04b0h
xor cx,0ffh
mov ax,cx
out dx,ax ;LED灯亮灭一次
jmp start1
nop
hint: cli
nop
nop
nop
nop
nop
nop
nop
nop
mov ax,55h
nop
iret
code ends
end start
实验六存储器读写实验
一、实验目的
1.掌握PC机外存扩展的方法。
2.熟悉6264芯片的接口方法。
3.掌握8086十六位数据存储的方法。
二、实验设备
CPU挂箱、8086CPU模块。
三、实验内容
向02000~020FFH单元的偶地址送入AAH,奇地址送入55H。
四、实验原理介绍
本实验用到存储器电路。RAM区的地址为02000H,编程时可将地址设为01000H,则偏移地址为1000H。如果按字节进行存储,则AL为55H或AAH;如果按字进行存储,则AX应为55AAH。6264、62256等是计算机系统扩展中经常用到的随机存储器芯片(RAM),主要用作数据存储器扩展。本实验所进行的内存置数在程序中经常用到。计算机系统运行中会频繁地进行内存与外设或者内存与内存之间的数据传输,所以本实验虽然简单但对理解系统程序的运行很关键,望学习和实验时认真对待。
五、实验步骤
1、实验接线:本实验无需接线。
2、编写调试程序
3、运行实验程序,可采取单步、设置断点方式,打开内存窗口可看到内存区的变化。
六、实验结果
在断点1处内存区02000H~020FFH单元为00H;在断点2处偶地址为AAH,奇地址为55H。
七、程序框图
八、程序源代码
code segment
assume cs:code
org 0100h
start: mov ax,0100h
计算机接口技术实验指导计算机科学与技术学院mov ds,ax ;数据段地址
mov es,ax
mov si,1000h ;偏移地址
mov cx,0100h ;循环次数
mov al,0
intram: mov [si],al
inc si
loop intram
mov si,1000h ;设置断点处
mov cx,100h
mov ax,55aah
fil: mov [si],ax ;RAM区循环置数
inc si
;mov [si],ah
inc si
loop fil
nop ;设置断点处
jmp start
code ends
end start
实验七A/D实验
一、实验目的
熟悉A/D转换的基本原理,掌握ADC0809的使用方法。
二、实验设备
CPU挂箱、8086CPU模块。
三、实验内容
从ADIN0输入一路模拟信号,启动A/D转换,用简单输入口(74LS244)查询EOC信号,转换结束后查看转换结果。同时用万用表测量输入的模拟电压,与转换后的数字量比较。作图,横坐标是模拟电压,纵坐标是转换的数字量,检查A/D转换的线性度。
其它通道实验与通道0类似,相应修改地址即可。
四、实验原理介绍
本实验用到两部分电路:简单I/O口扩展电路、A/D。实验电路中启动信号START与地址锁存信号相连,所以启动A/D转换的方法为:
MOV DX ,ADDRESS ;ADDRESS是ADC0809的端口地址
OUT AL,DX ;发片选及IOW信号,启动0通道
五、实验步骤
1、实验连线
AN0?ADIN0 CS0?CS0809 CS1 ?CS244 EOC?IN0
2、用CPU实验箱右下角的“VERF.ADJ”电位器调节ADC0809 12脚上的参考电压至5V。
3、编写程序并全速运行。
4、检查显示数据(16进制)是否与电位器输出的电压相符合。
六、实验结果
在输入电压AN0分别为0V,1V,2V,3V,4V,5V时显示数据分别为00H,33H,66H,99H,0CCH,0FFH(数据低位略有偏差属正常现象)。
七、程序
con8279 e qu 0492h
dat8279 equ 0490h
assume cs:code
code segment public
org 100h
start: jmp start1
segcod db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h
start1: mov dx,04a0h
mov ax,34h
out dx,ax ;启动通道0
wait1: mov dx,04b0h ;CS244
in ax,dx ;读EOC
and ax,1
cmp ax,1
jne wait1 ;如果EOC=0,waiting....
mov dx,04a0h
in ax,dx ;读转换结果
and ax,0ffh
mov bx,ax