好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

微机实验报告28302.pdf

66页
  • 卖家[上传人]:re****.1
  • 文档编号:574300426
  • 上传时间:2024-08-16
  • 文档格式:PDF
  • 文档大小:1.64MB
  • / 66 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第一次实验 实验01 I/O端口地址译码实验 一、实验目的 掌握I/O地址译码电路的工作原理 二、实验原理 1、 实验电路如原理图所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器译码输出端Y0~Y7在实验台上 “I/O地址” 输出端引出, 每个输出端包含8个地址, Y0: 280H~287H,Y1:288H~28FH,…… 当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲 例如:执行下面两条指令 MOV DX,290H OUT DX,AL(或IN AL,DX) Y2输出一个负脉冲,执行下面两条指令: MOV DX,2A0H OUT DX,AL(或IN AL,DX) Y4输出一个负脉冲 (II型机) 2. 接线 II型机: I/O 地址/Y2(290H---297H) 接 D 触发器/CLK I/O 地址/Y4(2A0H---2A7H) 接 D 触发器/CD D 触发器/D 接 D 触发器/SD 接+5V D 触发器/Q 接逻辑笔或L7 I型机: I/O 地址/Y4 接 D 触发器/CLK I/O 地址/Y5 接 D 触发器/CD 三、实验内容 利用负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。

      四、实验内容实现分析 分析实验连接图;说明实现该内容的原理;画出流程图 五、实验程序 DATA SEGMENT OUTPORT1 EQU 290H OUTPORT2 EQU 2A0H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX CNG: MOV DX,OUTPORT1 OUT DX,AL CALL DELAY ;调延时子程序 MOV DX,OUTPORT2 OUT DX,AL CALL DELAY ;调延时子程序 MOV AH,1 INT 16H JE CNG MOV AX,4C00H INT 21H DELAY PROC NEAR ;延时子程序 MOV BX,200 LLL: MOV CX,0 LL: LOOP LL DEC BX JNE LLL RET DELAY ENDP CODE ENDS END START 六、实验结果及分析 试验中正确连线后,在软件中写好程序,当编译成功后运行。

      这是会看到小灯闪烁,且闪烁时间由延时程序决定,当按下键盘时结束 七、实验总结 通过本次实验,基本掌握I/O地址译码电路的工作原理会写延时程 序在实验中达到了预期灯泡一亮一灭的效果自己可以控制灯泡亮灭的速度 实验02-1 简单并行接口输入输出 一、实验目的 掌握简单并行接口的工作原理及使用方法 二、实验原理 1、简单并行输入接口电路如图连接74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7 2、简单并行输出接口电路如图连接74LS273插通用插座,74LS32用实验台上的“或门”)74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7 上述并行输出接口的地址为2A8H,并行输入接口的地址为2A0H,通过上述并行接口电路输出数据需要3条指令: MOV AL,数据 MOV DX,2A8H OUT DX,AL 通过上述并行接口输入数据需要2条指令: MOV DX,2ADH IN AL,DX 3、接线 244输入/CS 接 I/O译码/Y4(2A0H---2A7H) 244输入/JP12(O7---O0) 接 总线/JP14(D7---D0) 244输入/JP11(IN7---IN0) 接 逻辑开关/JP1(K7---K0) 273输出/CS 接 I/O译码/Y5(2A8H---2AFH) 273输出/JP12(O7---O0) 接 LED显示/JP2(L7---L0) 273输出/JP9(IN7---IN0) 接 总线/JP14(D7---D0) 三、实验内容 1、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。

      2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性 四、实验内容实现分析 分析实验连接图;说明实现该内容的原理;画出流程图 五、实验程序 实验内容1: ls244 equ 2a0h code segment assume cs:code start:mov dx,ls244 ;从2A0输入一数据 in al,dx mov dl,al ;将所读数据保存在DL中 mov ah,02 int 21h mov dl,0dh ;显示回车符 int 21h mov dl,0ah ;显示换行符 int 21h mov ah,06 ;是否有键按下 mov dl,0ffh int 21h jnz exit je start ;若无,则转start exit: mov ah,4ch ;返回 int 21h code ends end start 实验内容2: inp=0ef00h-280h+2a0h code segment assume cs:code start: mov dx , inp in al ,dx mov dl , al 输入数据到dl mov ah , 2 int 21h 显示单个字符 { mov dl , 0dh int 21h } jmp start 无键盘输入则转start mov ah , 4ch int 21h 结束 code ends end 六、实验结果及分析 试验中正确连线后,在软件中写好程序,当编译成功后运行。

      此时改变开关的开通及关断组合,屏幕会显示对应的字符接通电路,运行实验程序1,当键盘输入不同值时,可以看到 var cpro_psid = "u2787156"; var cpro_pswidth = "966"; var cpro_psheight = "120"; 实验箱上的LED灯及键盘输入的值对应的ASCII码值一一对应 2、接通电路,运行实验程序2(不包括大括号里的),当拨动不同的开关(ASCII码值)作输入时可以看到及之对应的字符出现在屏幕上,且字符充满屏幕; 运行试验程序2 (包括大括号里的) , 当拨动不同的开关 (ASCII码值)作输入时可以看到及之对应的字符出现在屏幕上,此时屏幕上只有一个字符 七、实验总结 实验过程中,可能会出现这样或那样的问题,当出现这些问题时,比 如程序出错、连接线路出错等等当遇到这些问题时,首先应该自己解决,实在不行,再问老师通过解决问题,可以学到很多东西的 实验十二 系统中断控制器8259A 一、实验目的 1、掌握PC机中断处理系统的基本原理 2、学会编写中断服务程序 二、实验原理 1、实验原理 PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。

      中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求IBMPC、PC/XT机内有一片8259中断控制器对外可以提供8个中断源: 中断源 中断类型号 中断功能 IRQ0 08H 时钟 IRQ1 09H 键盘 IRQ2 0AH 保留 IRQ3 OBH 串行口2 IRQ4 0CH 串行口1 IRQ5 0DH 硬盘 IRQ6 0EH 软盘 IRQ7 0FH 并行打印机 8个中断源的中断请求信号线IRQ0~IRQ7在主机的62线ISA总线插座中可 以引出,系统已设定中断请求信号为“边沿触发”,普通结束方式对于PC/AT及286以上微机内又扩展了一片8259中断控制,IRQ2用于两片8259之间级连,对外可以提供15个中断源: 中断源 中断类型号 中断功能 IRQ8 070H 实时时钟 IRQ9 071H 用户中断 IRQ10 072H 保留 IRQ11 O73H 保留 IRQ12 074H 保留 IRQ13 075H 协处理器 IRQ14 076H 硬盘 IRQ15 077H 保留 TPC-USB实验板上,固定的接到了3号中断IRQ3上,即进行中断实验时,所用中断类型号为0BH。

      TPC-USB实验板上,扩展中断固定的接到了10号中断IRQ10上,即进行中断实验时,所用中断类型号为072H 2、接线 单脉冲2/正脉冲 接 IRQ/总线 单脉冲1/正脉冲 接 IRQ10/usb核心板 三、实验内容 1、中断IRQ3实验,实验电路如图12-1,直接用手动产单脉冲作为中断请求信号(只需连接一根导线)要求每按一次开关产生一次中断,在屏幕 上显示一次“TPCA Interrupt3!”,中断10次后程序退出 2、中断IRQ10实验,实验电路如图12-2,直接用手动产单脉冲作为中断请求信号(只需连接一根导线)要求每按一次开关产生一次中断,在屏幕上显示一次“TPCA Interrupt10!”,中断10次后程序退出 3、中断嵌套实验,分别用手动产生单脉冲作为中断IRQ3和IRQ10的请求信号,申请中断IRQ3后,进入中断3程序,再申请高级中断IRQ10 四、实验内容实现分析 分析实验连接图;说明实现该内容的原理;画出流程图 实验12_1_系统中断INT3: 实验12_2_系统中断INT10: 五、实验程序 实验12_1_系统中断INT3: DATA SEGMENT MESS DB 'TPCA INTERRUPT3!',0DH,0AH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,CS MOV DS,AX MOV DX,OFFSET INT3 MOV AX,250BH INT 21H IN AL,21H AND AL,0F7H OUT 21H,AL MOV CX,10 STI LL: JMP LL INT3: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS MOV AH,09 INT 21H MOV AL,20H OUT 20H,AL LOOP NEXT IN AL,21H OR AL,08H OUT 21H,AL STI MOV AX,4C00H INT 21H NEXT: IRET CODE ENDS END START 实验12_2_系统中断INT10: dATA SEGMENT MESS DB 'TPCA INTERRUPT10!',0DH,0AH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: CLI MOV AX,CS MOV DS,AX MOV DX,OFFSET INT10 MOV AX,2572H INT 21H IN AL,21H AND AL,0FBH OUT 21H,AL IN AL,0A1H AND AL,0FBH OUT 0A1H,AL MOV CX,10 STI LL: JMP LL INT10: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS MOV AH,09 INT 21H MOV AL,20H OUT 20H,AL OUT 0A0H,AL LOOP NEXT IN AL,21H OR AL,04H OUT 21H,AL STI MOV AX,4C00H INT 21H NEXT: IRET CODE ENDS END START 六、实验结果及分析 1、直接用手动产单脉冲作为中断请求信号,每按一次开关产生一次中断,在屏幕上显示一次“TPCA Interrupt3!”,中断10次后程序退出。

      2、直接用手动产单脉冲作为中断请求信号(只需连接一根导线)每按 一次开关产生一次中断,在屏幕上显示一次“TPCA Interrupt10!”,中断10次后程序退出 七、实验总结 通过本次实验,基本掌握8259的使用,会写初始化程序在实验中达到了预期显示中断的效果,极大促进了我对微机原理的学习兴趣,同时巩固了课本上学到的知识,把所学知识运用到实践,锻炼了自己动手能力 实验4 8255并行I/O输入/输出实验 一、实验目的 掌握8255方式0的工作原理及使用方法 二、实验原理 1、实验电路如原理图,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7 2、接线: 8255 /(PC7---PC0) 接 逻辑开关/ (K7---K0) 8255/ (PA7---PA0) 接 LED 显示/ (L7---L0) 8255/CS 接 I/O 译码/Y1(288H---28FH) 三、实验内容 2、编程从8255C口输入数据,再从A口输出 3、编程从8255A口输入数据,从B口输出 四、实验内容实现分析 1、分析实验连接图,并说明各端口的地址; 2、分别画出实现内容的流程图。

      实验06_8255方式1中断输入实验: 实验05_8255方式1中断输出实验: 五、实验程序 实验06_8255方式1中断输入实验: code segment assume cs:code start: mov ax,cs mov ds,ax mov dx,offset int_proc mov ax,2572h int 21h mov dx,21h in al,dx and al,0fbh out dx,al in al,0a1h and al,0fbh out 0a1h,al mov dx,28bh mov al,0b8h out dx,al mov al,09h out dx,al mov bl,8 ll: jmp ll int_proc: mov dx,288h in al,dx mov dl,al mov ah,02h int 21h mov dl,0dh int 21h mov dl,0ah int 21h mov dx,20h mov al,20h out dx,al out 0a0h,al dec bl jnz next in al,21h or al,08h out 21h,al sti mov ah,4ch int 21h next: iret code ends end start 实验05_8255方式1中断输出实验: code segment assume cs:code start: mov ax,cs mov ds,ax mov dx,offset int_proc mov ax,2572h int 21h mov dx,21h in al,dx and al,0fBh out dx,al in al,0a1h and al,0fbh out 0a1h,al mov dx,28bh mov al,0a0h out dx,al mov al,0dh out dx,al mov bl,1 ll: jmp ll int_proc: mov al,bl mov dx,288h out dx,al mov al,20h out 20h,al out 0a0h,al shl bl,1 jnc next in al,21h or al,08h out 21h,al sti mov ah,4ch int 21h next: iret code ends end start 六、实验结果及分析 1.从键盘输入一位 十进制数字(0~9),在七段数码管上显示出来。

      2.由于两个数码管之间轮流显示的间隔时间很短,因视觉暂留作用,所以人眼无法判别其间隔作用 七、实验总结 具体实验分析见各部分的调试实验分析硬件是基础,做实验时要首先检查硬件设备是否可用,保证后续实验的可检测性在实验中应不要带电接线、插拔芯片;插拔接线时轻微转动,便于插拔在实验中学会使用示波器、万用表、逻辑笔观察、测量 实验5 4X4 键盘键号显示实验 一、实验目的 1、熟悉8255 控制键盘及显示电路的基本功能及编程方法 2、了解一般键盘和显示电路的工作原理 二、实验原理 1. 原理如图 2.接线: 8255/CS 接 I/O 地址译码/Y1(288H---28FH) 8255/ (PA7---PA0) 接 数码管/(DP---A) 8255/ (PC7---PC0) 接 4X4 键盘/ (行3---列0) 数码管/S0 接 GND 三、实验内容 编程序:设置8255C口键盘输入、A口为数码管段码输出使得在小键盘上每按一 个键,8 位数码管上显示出相应字符 四、实验内容实现分析 分析实验连接图;说明实现该内容的原理(包括键盘和数码管);画出流程图 五、实验程序 DATA SEGMENT IO8255_A EQU 288H IO8255_k EQU 28BH LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH MESG1 DB 0DH,0AH,'INPUT A NUM (0--9),OTHER KEY IS EXIT:',0DH,0AH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,IO8255_K ;使8255的A口为输出 方式 MOV AX,80H OUT DX,AL SSS: MOV DX,OFFSET MESG1 ;显示提示信息 MOV AH,09H INT 21H MOV AH,01 ;从键盘接收字符 INT 21H CMP AL,'0' ;是否小于0 JL EXIT ;若是则退出 CMP AL,'9' ;是否大于9 JG EXIT ;若是则退出 SUB AL,30H ;将所得字符的ASCII码减30H MOV BX,OFFSET LED ;BX为数码表的起始地址 XLAT ;求出相应的段码 MOV DX,IO8255_A ;从8255的A口输出 OUT DX,AL JMP SSS ;转SSS EXIT: MOV AX,4C00H ;返回 INT 21H CODE ENDS END START 六、实验结果及分析 当按下不同的按键时,数码管显示不同的字符。

      七、实验总结 通过实验,掌握了键盘及8255以及数码管的连接原理,进一步的掌握了8255中各个端口的使用方法,以及按键的识别方法和按键扫描的方法实验过程中,可能会出现这样或那样的问题,当出现这些问题时,比如程序出错、连接线路出错等等当遇到这些问题时,首先应该自己解决,实在不行,再问老师通过解决问题,可以学到很多东西的 实验6-1 可编程定时/计数器8254A 一、实验目的 掌握8254的基本工作原理和编程方法,用示波器观察不同方式下的波形 二、实验原理 1、三个16 位“减一”计数单元:分别称为CNT0、CNT1和CNT2三个计数器相互独立、 可以工作在不同的方式每一个计数器都有对应的三条输入、输出信号线:CLK 外部 计数脉冲输入线,OUT 计数器溢出信号线和GATE 门控输入信号线(控制计数器是否 工作) 控制寄存器: 芯片内部四个寄存器之一, 占用一个寄存器单元的地址,由三个计数器共用只能写入不能读出,用于设定计数器的工作方式编程时在程序的初始化部分中,通过对该寄存器写入相应的命令字来设定对应计数器的工作方式 2、接线 8254/CLK0 接 单脉冲/正脉冲 8254/CS 接 I/O 译码/Y0(280H---287H) 8254/OUT0 接 LED 显示/L7 8254/GATE0 接 +5V 三、实验内容 1、将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化。

      2、将计数器0设置为方式2,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化 四、实验内容实现分析 分析实验连接图;说明实现这两种内容的原理;画出流程图 五、实验程序 实验内容 1(方式 0) : DATA SEGMENT IO8254_0 EQU 280H IO8254_K EQU 283H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,10H ;设置 8253 通道 0 为工作方式 0,二进制计数 MOV DX,IO8254_K OUT DX,AL MOV DX,IO8254_0 ;送计数初值为 0FH MOV AL,0FH OUT DX,AL LLL: IN AL,DX ;读计数初值 CALL DISP ;调显示子程序 PUSH DX MOV AH,06H MOV DL,0FFH INT 21H POP DX JZ LLL MOV AX,4C00H ;退出 INT 21H DISP PROC NEAR ;显示子程序 PUSH DX AND AL,0FH ;首先取低四位 MOV DL,AL CMP DL,9 ;判断是否<=9 JLE NUM ;若是则为'0'-'9',ASCII 码加 30H ADD DL,7 ;否则为'A'-'F',ASCII 码加37H NUM: ADD DL,30H MOV AH,02H ;显示 INT 21H MOV DL,0DH ;加回车符 INT 21H MOV DL,0AH ;加换行符 INT 21H POP DX RET ;子程序返回 DISP ENDP CODE ENDS END START 实验内容 2(方式 2) : DATA SEGMENT IO8254_0 EQU 280H IO8254_K EQU 283H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,14H ;设置 8253 通道 0 为工作方式 2,二进制计数 MOV DX,IO8254_K OUT DX,AL MOV DX,IO8254_0 ;送计数初值为 0FH MOV AL,0FH OUT DX,AL LLL: IN AL,DX ;读计数初值 CALL DISP ;调显示子程序 PUSH DX MOV AH,06H MOV DL,0FFH INT 21H POP DX JZ LLL MOV AX,4C00H ;退出 INT 21H DISP PROC NEAR ;显示子程序 PUSH DX AND AL,0FH ;首先取低四位 MOV DL,AL CMP DL,9 ;判断是否<=9 JLE NUM ;若是则为'0'-'9',ASCII 码加 30H ADD DL,7 ;否则为'A'-'F',ASCII 码加37H NUM: ADD DL,30H MOV AH,02H ;显示 INT 21H MOV DL,0DH ;加回车符 INT 21H MOV DL,0AH ;加换行符 INT 21H POP DX RET ;子程序返回 DISP ENDP CODE ENDS END START 六、实验结果及分析 当把编写的程序编译运行之后,通过手动调整正脉冲发生器,可以看到L7闪烁。

      七、实验总结 通过本次实验,掌握了8254芯片的基本功能和工作方式,学到典型电路的接法和学会定时应用实验产生方波的方法 8254同8253一样,方式2和3是周期的,可以自动循环的工作方式;方式0,1,4,5则是单稳态的,非周期的工作方式在周期形式下可根据输出波形不同选择方式2(负脉冲)和方式3(方波);在非周期中根据输出波形不同选择方式0,1(计数期间为低,计数到0时上升)和方式4,5(负脉冲);方式0,1可继续通过触发方式不同选择方式0(软触发)和方式1(硬触发);方式4,5可继续通过触发方式不同选择方式4(软触发)和方式5(硬触发) 实验6-2 8254定时器实验 一、实验目的 掌握8253工作方式3的基本工作原理、计数特点和编程方法 二、实验内容 1、原理如图 2、接线 CLK0连接时钟 1MHZ 8254/CS 接 I/O 译码/Y0(280H---287H) 8254/OUT0 接 8254/CLK1 8254/GATE0,GATE1 接 +5V 8254/OUT1 接 逻辑笔或L7 三、实验内容 1、将计数器0、计数器1分别设置工作方式,CLK0连接时钟1MHZ,由 T01000分频后变为1000HZ,再由T1进行1000分频后得1HZ。

      2、控制L7等闪烁的周期为4S. 四、实验内容实现分析 分析实验连接图;说明实现该内容的原理;画出流程图 五、实验程序 DATA SEGMENT IO8254_0 EQU 280H IO8254_1 EQU 281H IO8254_K EQU 283H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,IO8254_K ;向 8254 写控制字 MOV AL,36H ;使 0 通道为工作方式 3 OUT DX,AL MOV AX,1000 ;写入循环计数初值 1000 MOV DX,IO8254_0 OUT DX,AL ;先写入低字节 MOV AL,AH OUT DX,AL ;后写入高字节 MOV DX,IO8254_K MOV AL,76H ;设 8254 通道 1 工作方式2 OUT DX,AL MOV AX,1000 ; 写入循环计数初值1000 MOV DX,IO8254_1 OUT DX,AL ;先写低字节 MOV AL,AH OUT DX,AL ;后写高字节 ddd: JMP ddd ;动态停机 CODE ENDS END START 六、实验结果及分析 分别实现1s变化和4s变化 七、实验总结 通过本次实验,掌握了8254芯片的基本功能和工作方式,学到典型电路的接法和学会定时应用实验产生方波的方法。

      实验7 串行通讯 一、实验目的 1、了解串行通讯的基本原理 2、掌握串行接口芯片8251的工作原理和编程方法 二、实验原理 1、 按原理图连接好电路,其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起 2、接线 8254/CLK0 接 时钟/1MHz 8254/CS 接 I/O 译码/Y0(280H---287H) 8254/OUT0 接 8251/TX/RXCLK 8254/GATE0 接 +5V 8251/TXD 接 8251/RXD 8251/CS 接 I/O 译码/Y7(2B8H---2BFH) 三、实验内容 从键盘输入一个字符,将其ASCII码加 1 后发送出去,再接收回来在屏幕上显示,实现自发自收 四、实验内容实现分析 分析实验连接图;说明实现该内容的原理;画出流程图 五、实验程序 data segment io8253a equ 280h io8253b equ 283h io8251a equ 2b8h io8251b equ 2b9h mes1 db 'you can play a key on the keybord!',0dh,0ah,24h mes2 dd mes1 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov dx,io8253b ;设置 8253 计数器 0 工作方式 mov al,16h out dx,al mov dx,io8253a mov al,52 ;给 8253 计数器 0 送初值 out dx,al mov dx,io8251b ;初始化 8251 xor al,al mov cx,03 ;向 8251 控制端口送 3 个 0 delay: call out1 loop delay mov al,40h ;向 8251 控制端口送 40H,使其复位 call out1 mov al,4eh ;设置为 1 个停止位,8 个数据位,波特率因子为 16 call out1 mov al,27h ;向 8251 送控制字允许其发送和接收 call out1 lds dx,mes2 ;显示提示信息 mov ah,09 int 21h waiti: mov dx,io8251b in al,dx test al,01 ;发送是否准备好 jz waiti mov ah,01 ;是,从键盘上读一字符 int 21h cmp al,27 ;若为 ESC,结束 jz exit mov dx,io8251a inc al out dx,al ;发送 mov cx,40h s51: loop s51 ;延时 next: mov dx,io8251b in al,dx test al,02 ;检查接收是否准备好 jz next ;没有,等待 mov dx,io8251a in al,dx ;准备好,接收 mov dl,al mov ah,02 ;将接收到的字符显示在屏幕上 int 21h jmp waiti exit: mov ah,4ch ;退出 int 21h out1 proc near ;向外发送一字节的子程序 out dx,al push cx mov cx,40h gg: loop gg ;延时 pop cx ret out1 endp code ends end start 六、实验结果及分析 从键盘输入一个字符,将其ASCII码加 1 后发送出去,再接收回来在屏幕 上显示,实现自发自收。

      七、实验总结 通过本次实验,掌握了8254芯片的基本功能和工作方式,了解串行通讯的基本原理, 掌握串行接口芯片8251的工作原理和编程方法 第四次实验 实验8 继电器控制实验 一、实验目的 1、了解微机控制直流继电器的一般方法 2、进一步熟悉使用8255、8253 二、实验原理 将8253 计数器0 设置为方式3、计数器1 设置为方式0 并联使用,CLK0 接1MHZ 时钟,设置两个计数器的初值(乘积为5000000)启动计数器工作后,经过5秒钟OUT1 输出高电平通过8255 的PA0口查询OUT1的输出电平,用C 口PC0输出开关量控制继电器动作 继电器开关量输入端输入“1”时,继电器常开触点闭合,发光二极管接通,指示灯亮,输入“0”时断开,指示灯灭 2、接线 8255/CS 接 I/O 地址译码/Y1(288H---28FH) 8255/PC0 接 继电器 8255/PA0 接 8254/OUT1 8254/CS 接 I/O 地址译码/Y0(280H---287H) 8254/CLK0 接 时钟/1MHz 8254/OUT0 接 8254/CLK1 8254/GATE0,1 接 +5V 三、实验内容 1、使用8254定时,让继电器周而复始的闭合5 秒钟(指示灯灯亮),断开5 秒钟(指示灯灯)。

      2、改变指示灯亮灭的周期为2s,改用PC7口控制继电器 四、实验内容实现分析 分析实验连接图;说明实现这两种内容的原理;画出流程图 延时: 继电器: 是 否 是 五、实验程序 周期5秒: io8253b equ 281h io8253c equ 283h io8255a equ 288h 将PC0置位 开始 延 时 将PC0复位 延 时 初始化 8253 按键 时间到返回子程序 查询8255 结束 否 io8255c equ 28ah io8255ctl equ 28bh code segment assume cs:code start: mov dx,io8255ctl mov al,90h lll: out dx,al mov dx,io8255c mov al,00000001B ;将PC0置位 out dx,al call delay ;延时5s mov al,0 ;将PC0复位 out dx,al call delay ;延时5s jmp lll ;转lll delay proc near ;延时子程序 push dx mov dx,io8253c ;设8254计数器为方式3 mov al,36h out dx,al mov dx,io8253a mov ax,10000 ;写入计数器初值10000 out dx,al mov al,ah out dx,al mov dx,io8253c mov al,70h ;设计数器1为工作方式0 out dx,al mov dx,io8253b mov ax,500 ;写入计数器初值500 out dx,al mov al,ah out dx,al ll2: mov ah,06 ;是否有键按下 mov dl,0ffh int 21h jne exit ;若有则转exit mov dx,io8255a in al,dx ;查询8255的Pa0是否为高电平 and al,01h jz ll2 ;若不是则继续 pop dx ret ;定时时间到,子程序返回 exit: mov ah,4ch int 21h delay endp code ends end start 周期2秒: io8253a equ 280h io8253b equ 281h io8253c equ 283h io8255a equ 288h io8255c equ 28ah io8255ctl equ 28bh code segment assume cs:code start: mov dx,io8255ctl mov al,90h lll: out dx,al mov dx,io8255c mov al,80H ;将PC0置位 out dx,al call delay ;延时5s mov al,0 ;将PC0复位 out dx,al call delay ;延时5s jmp lll ;转lll delay proc near ;延时子程序 push dx mov dx,io8253c ;设8254计数器为方式3 mov al,36h out dx,al mov dx,io8253a mov ax,10000 ;写入计数器初值10000 out dx,al mov al,ah out dx,al mov dx,io8253c mov al,70h ;设计数器1为工作方式0 out dx,al mov dx,io8253b mov ax,100 ;写入计数器初值500 out dx,al mov al,ah out dx,al ll2: mov ah,06 ;是否有键按下 mov dl,0ffh int 21h jne exit ;若有则转exit mov dx,io8255a in al,dx ;查询8255的Pa0是否为高电平 and al,01h jz ll2 ;若不是则继续 pop dx ret ;定时时间到,子程序返回 exit: mov ah,4ch int 21h delay endp code ends end start 六、实验结果及分析 实验现象: 实验内容一:通过 8254 定时,让继电器周而复始的闭合 5 秒钟,这时候指示灯灯亮,断开 5 秒钟这时候指示灯灭,这样周而复始,指示灯亮灭。

      实验内容二:通过编程,改用PC7口控制继电器,同时将原本接在PC0的接线改接到PC7,同时改变指示灯亮灭的周期为2s,这样实现指示灯每隔两秒钟亮,两分钟后熄灭,两秒钟后再亮,周而复始 七、实验总结 通过本次实验了解了微机控制直流继电器的一般方法进一步熟悉使用8255、8253的方法,进一步巩固了课本上所学的知识,锻炼了自己理论联系实际的能力 实验9 电子琴实验 一、实验目的 1、通过8253 产生不同的频率信号,使PC 机成为简易电子琴 2、了解利用8255 和8253 产生音乐的基本方法 二、实验原理 利用8255 的PA0 口来施加控制信号给及门,用来控制扬声器的开关状态再利用设置 不同的计数值,使8253 产生不同频率的波形,使扬声器产生不同频率的音调,达到类似及音阶的高低音变换对于音乐,每个音阶都有确定的频率各音阶标称频率值: 2、接线 8255/CS 接 I/O 地址译码/Y1(288H---28FH) 8255/PA0 接 及门/A 8254/CLK0 接 时钟/1MHz 8254/CS 接 I/O 译码/Y0(280H---287H) 8254/OUT0 接 及门/B 8254/GATE0 接 8255/PA1 及门/Y 接 喇叭 三、实验内容 1、使计算机的数字键1、2、3、4、5、6、7 作为电子琴按键,按下即发出相应的音阶。

      2、实现一句音乐的播放 四、实验内容实现分析 分析实验连接图;说明实现这两种内容的原理;画出流程图 五、实验程序 用键盘按键响音乐: data segment io8255a equ 288h io8255ctl equ 28bh io8253a equ 280h io8253b equ 283h table dw 524,588,660,698,784,880,988,1048;高音的 ;table dw 262,294,330,347,392,440,494,524;低音的 msg db 'Press 1,2,3,4,5,6,7,8,ESC:',0dh,0ah,'$' data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov dx,offset msg mov ah,9 int 21h ;显示提示信息 sing: mov ah,7 int 21h ;从键盘接收字符,不回显 cmp al,1bh je finish ;若为ESC键,则转finish cmp al,'1' jl sing cmp al,'8' jg sing ;若不在'1'-'8'之间转sing sub al,31h shl al,1 ;转为查表偏移量 mov bl,al ;保存偏移到bx mov bh,0 mov ax,4240H ;计数初值 = 1000000 / 频率, 保存到AX mov dx,0FH div word ptr[table+bx] mov bx,ax mov dx,io8253b ;设置8254计时器0方式3, 先读写低字节, 再读写高字节 mov al,00110110B out dx,al mov dx,io8253a mov ax,bx out dx,al ;写计数初值低字节 mov al,ah out dx,al ;写计数初值高字节 mov dx,io8255ctl ;设置8255 A口输出 mov al,10000000B out dx,al mov dx,io8255a mov al,03h out dx,al ;置PA1PA0 = 11(开扬声器) call delay ;延时 mov al,0h out dx,al ;置PA1PA0 = 00(关扬声器) jmp sing finish: mov ax,4c00h int 21h delay proc near ;延时子程序 push cx push ax mov ax,15 x1: mov cx,0ffffh x2: dec cx jnz x2 dec ax jnz x1 pop ax pop cx ret delay endp code ends end start 播放一段音乐: data segment io8255a equ 288h io8255ctl equ 28bh io8253a equ 280h io8253b equ 283h table dw 524,588,660,698,784,880,988,1048;高音的 ;table dw 262,294,330,347,392,440,494,524;低音的 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov ah,9 int 21h ;显示提示信息 mov al,1 sing: sub al,31h shl al,1 ;转为查表偏移量 mov bl,al ;保存偏移到bx mov bh,0 mov ax,4240H ;计数初值 = 1000000 / 频率, 保存到AX mov dx,0FH div word ptr[table+bx] mov bx,ax mov dx,io8253b ;设置8254计时器0方式3, 先读写低字节, 再读写高字节 mov al,00110110B out dx,al mov dx,io8253a mov ax,bx out dx,al ;写计数初值低字节 mov al,ah out dx,al ;写计数初值高字节 mov dx,io8255ctl ;设置8255 A口输出 mov al,10000000B out dx,al mov dx,io8255a mov al,03h out dx,al ;置PA1PA0 = 11(开扬声器) call delay ;延时 Inc al Cmp al,8 Jz loop jmp sing loop: Mov al,1 Jmp sing finish: mov ax,4c00h int 21h delay proc near ;延时子程序 push cx push ax mov ax,15 x1: mov cx,0ffffh x2: dec cx jnz x2 dec ax jnz x1 pop ax pop cx ret delay endp code ends end start 六、实验结果及分析 实验一的实验现象:当按下键盘上的 1~7 数字键时,电子琴发出响应数字的音阶。

      实验二的实验现象:当程序执行的时候,电子琴发出按程序设定的音阶的声音,实现一句音乐的播放 七、实验总结 通过实验掌握了通过8253 产生不同的频率信号,使PC 机成为简易电子琴的方法,以及利用8255 和8253 产生音乐的基本方法编写实验二的程序时,需要特别注意每个音阶的延时时间,使得每个音阶能够被分辨清楚 实验10-1 模/数转换器0809查询法实验 一、实验目的 了解模/数转换的基本原理,掌握ADC0809的使用方法 二、实验内容 1、实验电路原理图如图通过实验台左下角电位器RW1输出0~5V直流电压送入ADC0809通道0(IN0),利用debug的输出命令启动A/D转换器,输入命令读取转换结果,验证输入电压及转换后数字的关系 启动IN0开始转换: Out 0298 0 读取转换结果: In 0298 ADC0809的IN0口地址为298H,IN1口地址为299H IN0单极性输入电压及转换后数字的关系参考原理图: 其中Ui为输入电压,UREF为参考电压,这里的参考电压为这里的参考电压为该实验区可调电位器输出电压,便于编程计算默认为。

      一次A/D转换的程序可以为 MOV DX,口地址 OUT DX,AL ;启动转换 ;延时 IN AL,DX ;读取转换结果放在AL中 2、接线 0809/CS 接 I/O 地址译码/Y3(298H---29FH) 0809/IN0 接 电位器/0~5V 三、实验内容 编程采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制数) 四、实验内容实现分析 分析实验连接图;说明实现此内容的原理;画出流程图 五、实验程序 io0809a equ 298h code segment assume cs:code start:mov dx,io0809a ;启动A/D转换器 out dx,al mov cx,0ffh ;延时 delay:loop delay in al,dx ;从A/D转换器输入数据 mov bl,al ;将AL保存到BL mov cl,4 shr al,cl ;将AL右移四位 call disp ;调显示子程序显示其高四位 mov al,bl and al,0fh call disp ;调显示子程序显示其低四位 mov ah,02 mov dl,20h ;加回车符 int 21h mov dl,20h int 21h push dx mov ah,06h ;判断是否有键按下 mov dl,0ffh int 21h pop dx je start ;若没有转START mov ah,4ch ;退出 int 21h disp proc near ;显示子程序 mov dl,al cmp dl,9 ;比较DL是否>9 jle ddd ;若不大于则为'0'-'9',加30h为其ASCII码 add dl,7 ;否则为'A'-'F',再加7 ddd: add dl,30h ;显示 mov ah,02 int 21h ret disp endp code ends end start 六、实验结果及分析 旋转电位器就会有数字变化 七、实验总结 通过本次实验了解了模/数转换的基本原理,掌握了ADC0809的使用方法。

      实验10-2 模/数转换器0809中断法实验 一、实验目的 了解模/数转换的基本原理,掌握利用中断方法对ADC0809的编程方法 二、实验内容 程序由主程序和中断服务程序组成: 1.主程序包括初始化,等待中断;如果有中断时在主程序中再启动一次ADC0809,然后等待下一次中断主程序等待中断是借助于一个标志(SI寄存器); 2.中断服务程序中首先读取ADC0809中的数据,然后转换的数据(用16进制 数)后通过屏幕显示 2、接线 0809/CS 接 I/O 地址译码/Y3(298H---29FH) 0809/IN0 接 电位器/0~5V 0809/EOC 接 总线/MIRQx 三、实验内容 将A/D转换的结果显示在屏幕上 四、实验内容实现分析 分析实验连接图;说明实现此内容的原理;画出流程图 五、实验程序 io0809a equ 298h stacks segment stack sta dw 512 dup() top equ length sta stacks ends code segment assume cs:code start: mov ax,cs mov ds,ax mov dx,offset int3 ;系统功能调用、设置中断向量、由 DS:DX指向四个字节地址 mov ax,250bh ; AL=中断类型号(=0bh---0b*4=向量表地址) int 21h ; (实现向中断性量表中添置 int3 的地址) mov ax,stacks ;设定堆栈段寄存器 SS mov ss,ax mov sp,top ;设定堆栈指针 SP 的初值 in al,21h ;设置中断屏蔽字(采用"读-及-写"方式使能) and al,0f7h ;使能 IRQ3 out 21h,al ;写入 OCW1(屏蔽字) mov si,0 ;建立一个标志,原始=0 mov dx,io0809a ;启动 A/D 转换器 out dx,al loop1: sti ;开中断(IF 置 1) in al,dx mov cx,0ffffh ;设定延时常数 cmp si,01 ;查询标志、判断是否转换完成 jne loop1 ;未完成时:返回等待 loop3: loop loop3 ;转换完成时首先延时 cli mov dx,io0809a ;再次启动 A/D 转换器 out dx,al jmp loop1 ;返回继续等待下一次中断 int3: push ax ;中断服务程序 push dx push cx mov si,1 ;建立一个转换完成的标志(SI=1) mov dx,io0809a in al,dx ;从 A/D 转换器输入数据 ;处理采集的数据:将 8 位二进制数拆分为两位十六进制数以待显示 mov bl,al ;将 AL 保存到 BL mov cl,4 shr al,cl ;将 AL 右移四位 call disp ;调显示子程序显示其高四位 mov al,bl and al,0fh call disp ;调显示子程序显示其低四位 mov ah,02 ;系统功能调用(显示字符) mov dl,20h ;(空格符) int 21h mov dl,20h ;(空格符) int 21h push dx mov ah,06h ;判断是否有键按下 mov dl,0ffh ;DX=FF 时 输入字符 int 21h ;AL=输入的字符 pop dx je loop2 ;若没有键盘操作(AL=0)则转 START in al,21h ;中断屏蔽字 OCW1 操作 ; or al,08h ;将 IMR 中的 IRQ3 屏蔽 out 21h,al mov ah,4ch ;退出 int 21h loop2: sti ;返回主程序之前开中断 mov al,20h ;写 OCW2,发 EOI 命令 out 20h,al ;使 ISR 相应位清零 pop cx pop dx pop ax iret ;中断返回 disp proc near ;显示子程序 mov dl,al cmp dl,9 ;比较 DL 是否>9 jle ddd ;若不大于则为'0'-'9',加 30h 为其ASCII 码 add dl,7 ;否则为'A'-'F',再加 7 ddd:add dl,30h ;显示 mov ah,02 int 21h ret disp endp code ends end start 六、实验结果及分析 旋转电位器数字发生变化。

      七、实验总结 通过这次试验学习了模/数转换的基本原理,掌握利用中断方法对ADC0809的编程方法 实验11 数/模转换器DAC0832 一、实验目的 了解数/模转换器的基本原理,掌握DAC0832芯片的使用方法 二、实验原理 1、实验电路原理如图,DAC0832采用单缓冲方式,具有单双极性输入端(图中的Ua、Ub),利用debug输出命令(Out 290 数据)输出数据给DAC0832,用万用表测量单极性输出端Ua及双极性输出端Ub的电压,验证数字及电压 之间的线性关系也可用示波器观察输出波形 8位D/A转换器DAC0832的口地址为290H,输入数据及输出电压的关系为: (UREF表示参考电压,N表示数数据),这里的参考电压为该实验区可调电位器输出电压,便于编程计算默认为 产生锯齿波只须将输出到DAC0832的数据由0循环递增 2、接线 0832/CS 接 I/O 地址译码/Y2(290H---298H) 0832/Ua,Ub 接 示波器 三、实验内容 编程产生以下波性:锯齿波*、正弦波 四、实验内容实现分析 分析实验连接图;说明实现此内容的原理;画出流程图。

      五、实验程序 data segment io0832a equ 290h sin db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h db 80h,66h,4eh,38h,25h,15h,09h,04h db 00h,04h,09h,15h,25h,38h,4eh,66h ;正弦波数据 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax ll: mov si,offset sin ;置正弦波数据的偏移地址为SI mov bh,32 ;一组输出32个数据 lll: mov al,[si] ;将数据输出到D/A转换器 mov dx,io0832a out dx,al mov ah,06h mov dl,0ffh int 21h jne exit mov cx,1 delay: loop delay ;延时 inc si ;取下一个数据 dec bh jnz lll ;若未取完32个数据则转lll jmp ll exit: mov ah,4ch ;退出 int 21h code ends end start 六、实验结果及分析 旋转电位器数字发生变化。

      七、实验总结 通过这次试验学习了数/模转换器的基本原理,掌握了DAC0832芯片的使用方法另外中断法对系统的功耗更小 实验12 直流电机转速控制实验 一、实验目的 1、进一步了解DAC0832 的性能及编程方法 2、了解直流电机控制的基本方法 二、实验原理 1、 按图线路接线DAC0832 的CS 接290H~297H,Ub 接DJ 插孔,8255 CS 接288H~28FH 直流电机的转速是由 0832 的 Ub 输出脉冲的占空比例来决定的,正向占空比例越大,电机转 速越快,反之越慢,如图所示 0832 的输出 Ub 为双极性,当输入量小于 80H 时,输出为负,电机反转等于 80H 时,输出 为 0,电机停止转动大于 80H 时,输出为正,电机正转本实验 0832 输出的数字量只需要两个数值 80H 和 FFH,80H 对应电机反转,FFH 对应电机正转,通过不同的延时时间达到改变电机转 速的目的 3、接线: 0832/CS 接 I/O 地址译码/Y2(290H---297H) 8255/JP8(PC7---PC0) 接 逻辑开关/JP1(K7---K0) 8255/CS 接 I/O 地址译码/Y1(288H---28FH) 0832/Ub 接 直流电机 三、实验内容 编程利用DAC0832 输出一串脉冲,经放大后驱动小直流电机,利用开关K0~K5 控制改变输出脉冲的电平及持续时间,达到使电机加速,减速之目的。

      四、实验内容实现分析 分析实验连接图;说明实现此内容的原理;画出流程图 五、实验程序 DATA SEGMENT PORT1 EQU 290H PORT2 EQU 28BH PORT3 EQU 28AH BUF1 DW 0 BUF2 DW 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,PORT2 MOV AL,89H OUT DX,AL ;8255 PORT C INPUT LLL: MOV AL,80H MOV DX,PORT1 OUT DX,AL ;D/A OUTPUT 0V push dx MOV AH,06h mov dl,0ffh INT 21H pop dx JE INTK ;NOT ANY KEY JMP INTK MOV AH,4CH INT 21H ;EXIT TO DOS INTK: MOV DX,PORT3 IN AL,DX ;READ SWITCH TEST AL,01H JNZ K0 TEST AL,02H JNZ K1 TEST AL,04H JNZ K2 TEST AL,08H JNZ K3 TEST AL,10H JNZ K4 TEST AL,20H JNZ K5 JMP LLL K0: MOV BUF1,0400H MOV BUF2,0330H DELAY: MOV CX,BUF1 DELAY1: LOOP DELAY1 MOV AL,0FFH MOV DX,PORT1 OUT DX,AL MOV CX,BUF2 DELAY2: LOOP DELAY2 JMP LLL K1: MOV BUF1,0400H MOV BUF2,0400H JMP DELAY K2: MOV BUF1,0400H MOV BUF2,0500H JMP DELAY K3: MOV BUF1,0400H MOV BUF2,0600H JMP DELAY K4: MOV BUF1,0400H MOV BUF2,0700H JMP DELAY K5: MOV BUF1,0400H MOV BUF2,0800H JMP DELAY CODE ENDS END START 六、实验结果及分析 编程利用DAC0832 输出一串脉冲,经放大后驱动小直流电机,利用开关K0~K5 控制改变输出脉冲的电平及持续时间,达到使电机加速,减速之目的。

      开关代表二进制数,拨动不同大小的二进制数,电动机的转速会不同 七、实验总结 通过实验进一步深入学习了DAC0832 的性能及编程方法和直流电机控制的基本方法。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.