微型机系统与接口实验指导书及实验结果分析_第1页
微型机系统与接口实验指导书及实验结果分析_第2页
微型机系统与接口实验指导书及实验结果分析_第3页
微型机系统与接口实验指导书及实验结果分析_第4页
微型机系统与接口实验指导书及实验结果分析_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微型机系统与接口实验指导书实验1 并行接口扩展设计一、实验目的1、了解8255芯片结构及编程方法。2、了解8255输入/输出实验方法。二、实验原理可编程通用接口芯片8255A有三个八位的并行I/O口,它有三种工作方式。本实验采用的是方式0:PA,PC口输出,PB口输入。很多I/O实验都可以通过8255A来实现。三、实验仪器LAB 6000实验系统,PC机四、实验内容8255的CS/接地址译码/CS0,则命令字地址为8003H,PA口地址为8000H,PB口地址为8001H,PC口地址为8002H。PA0-PA7(PA口)接LED0-LED7(LED)PB0-PB7(PB口)接K0-K7(开关量

2、)。数据线、读/写控制、地址线、复位信号板上已接好。连线连接孔1连接孔21CS08255CS2L08255-PA03L18255-PA14L28255-PA25L38255-PA36L48255-PA47L58255-PA58L68255-PA69L78255-PA710K08255-PB011K18255-PB112K28255-PB213K38255-PB314K48255-PB415K58255-PB516K68255-PB617K78255-PB7根据以下程序流程图编写完整的实验程序并调试。开始延时置8255工作方式置8255PA口数据左移延时开始延时置8255工作方式读8255PB口

3、置8255PA口参考程序:mode equ 082h ; 方式0,PA,PC输出,PB输入 PortA equ 8000h ; Port A PortB equ 8001h ; Port B PortC equ 8002h ; Port C CAddr equ 8003h ; 控制字地址code segment assume cs:codestart proc nearStart: mov al, mode mov dx, CAddr out dx, al ; 输出控制字 ;实验1:PortA输出 mov al, 80H mov cx, 08HOutA: mov dx, PortA out d

4、x, al ; 输出PortA mov dx, PortC out dx, al shr al, 1 ; 移位 mov ah,100 call delay ; 延时 loop OutA ;实验2: PortB 输入 PortA 输出 mov dx, PortB in al, dx ; 读入PortB mov dx, PortC out dx, al mov dx, PortA out dx, al ; 输出到PortA mov ah, 200 call delay jmp Start endpdelay proc near push ax mov al,0 push cx mov cx,ax

5、loop $ pop cx pop ax retdelay endpcode ends end start思考:1、将CS0修改为CS5 2、让LED灯由右向左移动 3、改变延时的时间,使得灯亮延续的时间长些五、实验总结整理实验程序,并进行实验结果定性分析。实验2 定时器/计数器接口扩展设计一、实验目的1、学习8088/86与8253的连接方法。2、学习8088/86对8253的控制方法。3、学习8253多级串联实现大时间常数的定时方法。二、实验原理利用8088/86外接8253可编程定时器/计数器,可以实现对外部事件进行计数。设置断点读回计数器的值。用8253对标准脉冲信号进行计数,就可以实

6、现定时功能。三、实验仪器 LAB 6000实验系统,PC机四、实验内容1、 计数器:本实验中计数器按方式0工作。即十六位二进制计数器。当计数设置好后,计数器就开始计数。如果要读入计数器的值,要先锁存计数值,才能读到计数值。本实验所设计数值为5,也就是外部5个脉冲,计数器值加1。同时OUT脚输出一个高电平。实验时,可以将OUT0接到LED上,观察计数器是否工作。连线连接孔1连接孔218253_CSCS028253_OUT0L038253_GATE0VCC48253_CLK0单脉冲根据以下程序流程图编写完整的实验程序并调试。开始设置工作方式锁存计数值读回计数值参考程序:CONTROL equ 08

7、003hCOUNT0 equ 08000hCOUNT1 equ 08001hCOUNT2 equ 08002hcode segment assume cs:codestart proc near mov al, 30h ; 通道0,方式0 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

8、 in al, dx ; 读入计数值低八位 mov bl, al in al, dx ; 读入计数值高八位 mov ah, al mov al, bl jmp Againstart endpcode ends end start思考:1、将计数器0换成计数器1 2、将计数次数改成10次 3、改变单脉冲输入,看有何变化。2、 定时器:工作方式0,计数值减完后输出一个脉冲宽度的高电平。而本实验在计数值减完后,管脚状态产生变化(从高到低或从低到高)。直到下一次计数值减完。这样输出的波形为方波。由于定时常数过大,就要用多级串联方式。本实验采用两级计数器。定时常数分别为100和10000。将计数器的输出

9、接到计数器0输入。计数器0的输出接到LED0。用板上的1MHz做为标准信号,将8253可编程计数器/定时器的时间常数设在1000000次,就可以在定时器的管脚上输出1秒钟高/1秒钟低的脉冲信号。因为8253每个计数器只有十六位,要用两个计数器才能实现一百万次的计数,实现每一秒钟输出状态发生一次反转。根据以下程序流程图编写完整的实验程序并调试。连线连接孔1连接孔218253_CSCS428253_OUT0L038253_GATE0VCC48253_CLK08253_OUT158253_GATE1VCC68253_CLK1F/4(1M)74MHzFin开始设置计数器0定时常数设置计数器0模式控制字

10、设置计数器1模式控制字设置计数器1定时常数等待参考程序:CONTROL equ 0c003hCOUNT0 equ 0c000hCOUNT1 equ 0c001hCOUNT2 equ 0c002hcode segment assume cs:codestart proc near mov al, 36h; 00110110B ; 计数器0,16位,方式3,二进制 mov dx, CONTROL out dx, al mov ax, 1000 mov dx, COUNT0 out dx, al ; 计数器低字节 mov al, ah out dx, al ; 计数器高字节 mov al, 76h;

11、 01110110B ; 计数器1,16位,方式3,二进制 mov dx, CONTROL out dx, al mov ax, 1000 mov dx, COUNT1 out dx, al ; 计数器低字节 mov al, ah out dx, al ; 计数器高字节 jmp $start endpcode ends end start思考:1、如果采用BCD码计数,则如何修改程序 2、让OUT0输出连接喇叭,看有什么现象发生。 3、修改程序,只使用计数器0,让喇叭发出一段乐曲。五、实验总结整理实验程序,并进行实验结果定性分析。实验3 串行接口扩展设计一、实验目的1、掌握8088/86实验串

12、行口通信的方法。2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。3、学习串行口通讯程序编写方法。二、实验原理8088/86CPU通过外接的8251可编程串行控制器实现串口通信。通过8251的控制口写入其工作方式或读入当前状态,通过数据口发送或接收串行口数据。本实验是通过查询方式读写状态和输入输出串行数据。三、实验仪器LAB 6000实验系统,PC机四、实验内容利用8088/86CPU控制8251A可编程串行通信控制器,实现两个实验台之间的串行通讯。其中一个实验台作为发送方,另一侧为接收方。发送方读入按键值,并发送给接收方,接收方收到数据后在LED上显示。通讯双方的RXD、TXD信

13、号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。也可以将本机的TXD接到RXD,这样按下的键就会在本机的LED上显示。连线连接孔1连接孔21KEY/LED_CSCS028251_CSCS538251_TxCLKF/16 (250KHz)48251_RxCLKF/16 (250KHz)58251_CLKF/4 (1MHZ)64MHzFin7甲方8251_TXD乙方8251_RXD8甲方8251_RXD乙方8251_TXD9甲方GND乙方GND若想与标准的RS232设备通信,就要做电平转换,输出时要将TTL电平换成RS232电平,输入

14、时要将RS232电平换成TTL电平。可以将仿真板上的RXD、TXD信号接到实验板上的“用户串口接线”的相应RXD和TXD端,经过电平转换,通过“用户串口”接到外部的RS232设备。将分频器的Fin接到4MHz脉冲发生器,就可以得到1MHz和250KHz脉冲。电路连接如下:位选通信号 (0x002H) 段码输出(0x004H)数据总线是接收子程序是否已收到数据?读入数据返回否串口接收子程序是发送子程序发送缓冲为空?发送数据返回否清出错标志串口发送子程序是否无开始设置串口通讯方式及波特率LED显示读入键值检测键盘输入转换成键码串口发送键码收到数据?接收数据送显示缓冲主程序根据以下程序流程图编写完整

15、的实验程序并调试。参考程序:OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口IN_KEY equ 08001h ; 键盘读入口CS8251D equ 09000h ; 串行通信控制器数据口地址CS8251C equ 09001h ; 串行通信控制器控制口地址data segmentLEDBuf db 6 dup(?) ; 显示缓冲Num db 1 dup(?) ; 显示的数据DelayT db 1 dup(?)RBuf db 0TBuf db 0LEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7

16、dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hKeyTable: ; 键码定义 db 16h, 15h, 14h, 0ffh db 13h, 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h, 01h, 04h, 07hcode segment assume cs:code, ds:dataDelay proc near push ax ; 延时子程序 push cx mov al, 0 mov cx,ax loop $

17、 pop cx pop ax retDelay endpDisplayLED proc near mov bx, offset LEDBuf mov cl, 6 ; 共6个八段管 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 in

18、c bx dec cl jnz DLoop mov dx, OUTBIT mov al, 0 out dx,al ; 关所有八段管 retDisplayLED endpTestKey proc near mov dx, OUTBIT mov al, 0 out dx, al ; 输出线置为0 mov dx, IN_KEY in al, dx ; 读入键状态 not al and al, 0fh ; 高四位不用 retTestKey endpGetKey proc near mov ch, 00100000b mov cl, 6KLoop: mov dx, OUTBIT mov al, ch ;

19、 找出键所在列 not al out dx, al shr ch, 1 mov dx, IN_KEY in al, dx not al and al, 0fh jne Goon_ ; 该列有键入 dec cl jnz KLoop mov cl, 0ffh ; 没有键按下, 返回 0ffh jmp Exit1Goon_: dec cl shl cl, 2 ; 键值 = 列 X 4 + 行 mov ch, 4LoopC: test al, 1 jnz Exit1 shr al, 1 inc cl dec ch jnz LoopCExit1: mov dx, OUTBIT mov al, 0 out

20、 dx, al mov ch, 0 mov bx, offset KeyTable add bx, cx mov al, bx ; 取出键码 mov bl, alWaitRelease: mov dx, OUTBIT mov al, 0 out dx, al ; 等键释放 mov ah, 10 call Delay call TestKey jne WaitRelease mov al, bl retGetKey endpIInit proc near ; 8251初始化 mov dx, CS8251C mov al, 01001111b ; 1停止位,无校验,8数据位, x64 out dx

21、, al mov al, 00010101b ; 清出错标志, 允许发送接收 out dx, al retIInit endpSend proc near ; 串口发送 mov dx, CS8251C mov al, 00010101b ; 清出错,允许发送接收 out dx, alWaitTXD: in al, dx test al, 1 ; 发送缓冲是否为空 jz WaitTXD mov al, TBuf ; 取要发送的字 mov dx, CS8251D out dx, al ; 发送 push cx mov cx,0ffffh loop $ pop cx retSend endpRece

22、ive proc near ; 串口接收 mov dx, CS8251CWaitRXD: in al, dx test al, 2 ; 是否已收到一个字 je WaitRXD mov dx, CS8251D in al, dx ; 读入 mov RBuf, al retReceive endpstart proc near mov ax, data mov ds, ax call IInit mov LEDBuf, 0ffh ; 显示 .8. mov LEDBuf+1, 0ffh mov LEDBuf+2, 0ffh mov LEDBuf+3, 0ffh mov LEDBuf+4, 0 mov

23、 LEDBuf+5, 0MLoop: call DisplayLED ; 显示 mov dx, CS8251C in al, dx ; 是否接收到一个字 test al, 2 jnz RcvData call TestKey ; 有键入? je MLoop ; 无键入, 继续显示 call GetKey ; 读入键码 and al, 0fh ; 显示键码 mov TBuf, al call Send jmp MLoopRcvData: call Receive ; 读入接收到的字 mov al, RBuf and al, 0fh ; 只显示低四位 mov ah, 0 mov bx, offse

24、t LEDMAP add bx, ax mov al, bx ; 转换成显示码 mov LEDBuf+5, al jmp MLoopStart endpcode ends end start五、实验总结整理实验程序,并进行实验结果定性分析。实验4 中断控制器应用设计一、实验目的1学习8088/86与8259的连接方法。2学习8088/86对8259的控制方法。二、实验原理用8088/86控制8259可编程中断控制器,实现对外部中断的响应和处理。要求程序中对每次中断进行计数,并将计数结果用8255的PA口输出到LED。三、实验仪器LAB 6000实验系统,PC机四、实验内容8088/86需要外接

25、中断控制器才能对外部中断进行处理。在编程时应注意1.正确地设置可编程中断控制和工作方式。2.必须正确地设置中断服务程序地址。8259可外接8个中断源,本实验只响应INT0中断,8259也可以多级连接以响应多个中断源。将单脉冲信号接到8259的INT0脚。每次中断时,可以看到LED显示会加1。连线连接孔1连接孔218259_CSCS128259_INT0单脉冲38255_CSCS04PA0L05PA1L16PA2L27PA3L38PA4L49PA5L510PA6L611PA7L7根据以下程序流程图编写完整的实验程序并调试。参考程序:CTL8255 equ 8003hICW1 equ 000100

26、11b ; 单片8259, 上升沿中断, 要写ICW4ICW2 equ 00100000b ; 中断号为20HICW4 equ 00000001b ; 工作在8086/88 方式OCW1 equ 11111110b ; 只响应INT0 中断CS8259A equ 09000h ; 8259地址CS8259B equ 09001hdata segmentCNT db 0data endscode segment assume cs:code, ds: dataIEnter proc near push ax push dx mov dx, PA8255 inc CNT mov al, CNT o

27、ut dx, al ; 输出计数值 mov dx, CS8259A mov al, 20h ; 中断服务程序结束指令 out dx, al pop dx pop ax iretIEnter endpIInit proc 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 retIInit endpstart proc near mov dx, CTL8255 mov al, mode out

28、dx, al cli mov ax, 0 mov ds, ax mov bx, 4*ICW2 ; 中断号 mov ax, code shl ax, 4 ; x 16 add ax, offset IEnter ; 中断入口地址(段地址为0) mov bx, ax mov ax, 0 inc bx inc bx mov bx, ax ; 代码段地址为0 call IInit mov ax, data mov ds, ax mov CNT, 0 ; 计数值初始为0 mov al, CNT mov dx, PA8255 out dx, al stiLP: ; 等待中断,并计数。 nop jmp LP

29、start endpcode ends end startmode equ 82h ; 8255 工作方式PA8255 equ 8000h ; 8002 8255 PA口输出地址CTL8255 equ 8003hICW1 equ 00010011b ; 单片8259, 上升沿中断, 要写ICW4ICW2 equ 00100000b ; 中断号为20H 00100010 00010000ICW4 equ 00000001b ; 工作在8086/88 方式OCW1 equ 11111110b ; 只响应INT0 中断11111011 11111110CS8259A equ 09000h ; 825

30、9地址CS8259B equ 09001hdata segmentCNT db 0data endscode segment assume cs:code, ds: dataIEnter proc near push ax push dx mov dx, PA8255 inc CNT mov al, CNT out dx, al ; 输出计数值 mov dx, CS8259A mov al, 20h ; 中断服务程序结束指令 out dx, al pop dx pop ax iretIEnter endpIInit proc mov dx, CS8259A mov al, ICW1 out d

31、x, al mov dx, CS8259B mov al, ICW2 out dx, al mov al, ICW4 out dx, al mov al, OCW1 out dx, al retIInit endpstart proc near mov dx, CTL8255 mov al, mode out dx, al cli mov ax, 0 mov ds, ax mov bx, 4*ICW2 ; 中断号 mov ax, code shl ax, 4 ; x 16 add ax, offset IEnter ; 中断入口地址(段地址为0) mov bx, ax mov ax, 0 in

32、c bx inc bx mov bx, ax ; 代码段地址为0 call IInit mov ax, data mov ds, ax mov CNT, 0 ; 计数值初始为0 mov al, CNT mov dx, PA8255 out dx, al stiLP: ; 等待中断,并计数。 nop jmp LPstart endpcode ends end start思考题1、如果将INT0换成INT2,要得到与原来一样的结果,应如何做?2、如果将中断类型号改为10H,该如何做?3、如果利用8255的C口作为输出,获得中断次数,该如何做?PA8255> PC8255五、实验总结整理实验程

33、序,并进行实验结果定性分析。实验5 A/D、D/A转换器接口扩展设计一、实验目的1、掌握A/D转换与8088/8086的接口方法。2、了解A/D芯片ADC0809转换性能及编程。3、通过实验了解单片机如何进行数据采集。4、了解D/A转换的基本原理。5、了解D/A转换芯片0832的性能及编程方法。6、了解微型机系统中扩展D/A转换的基本方法。二、实验原理A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好;价格便宜,但速度慢;二是逐次逼近A/D转换器,精度,速度,价格适中;三是并行A/D转换器,速度快,价格也昂贵。实验用的ADC0809属第二类,是八位A/D转换器。每采集一次一般需100us。本程序是用延时查询方式读入A/D转换结果,也可以用中断方式读入结果,在中断方式下,A/D转换结束后会自动产生EOC信号,将其与CPU的外部中断相

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论