




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一 I/O 地址译码与交通灯控制实验 一、 实验目的 1、 掌握并行接口 8253 的基本原理 2、 掌握 8253 的编程方法 二、 实验内容 如图所示, L7、 L6、 L5 作为南北路口的交通灯与 PC7、 PC6、 PC5 相连, L2、 L1、 L0 作为东西路口的交通灯与 PC2、 PC1、 PC0 相连。编程使六个灯按交通变化规律燃灭。 三、 编程分析 1、 8255 地址分析 :控制寄存器地址: 0C40BH A 口地址 : 04C408H C 口地址 : 04C40AH 2、十字路口交通灯的变化规律要求 ( 1) 南北路口的绿灯、东西路口的红灯同时亮三秒; ( 2) 南北路口的黄灯闪烁三次,同时东西路口的红灯继续亮; ( 3) 南北路口的红灯、东西路口的绿灯同时亮三秒; ( 4) 南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁三次; ( 5) 转( 1)重复。 3、 C 口置数分析 由于发光二极管是共阴极相连,所以若要其发亮应给高电平;黄灯闪烁是让其不断交替亮灭来实现;同时分析可知只要有绿灯亮,灯就会持续亮三秒,黄灯亮就会闪微机原理与接口技术实验报告 2 开始 返回 DOS 设置 8255C 口输出 南北路口的绿灯、东西路口的红 灯亮 长延时 南北路口的黄灯闪烁,东西路口红灯亮 南北路口的红灯、东西路口的绿灯亮 长延时 南北路口红灯亮、东西路口黄灯亮闪烁 有键按下吗? Y N 烁三次 。 4、程序设计流程图 四、汇编语言程序 STACK1 SEGMENT STACK DB 100 DUP(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE, SS:STACK1 DY PROC NEAR 微机原理与接口技术实验报告 3 PUSH AX PUSH CX MOV AX, 0FFFFH ;延时程序 MOV CX, 02FFFH L0:DEC AX JNZ L0 LOOP L0 POP CX POP AX RET DY ENDP START: MOV DX, 0C40BH MOV AL, 10000000B OUT DX, AL MOV DX, 0C40AH MOV BL, 6H ;设置延迟 3 秒 L1:MOV AL, 00100100B ;南北绿灯亮,东西红灯亮 OUT DX, AL CALL DY ;调用延迟子程序 DEC BL JNZ L1 MOV BL, 4H ;设置第二次闪烁 3 次 L2:MOV DX, 0C40AH MOV AL, 01000100B ; 南北黄灯亮,东西红灯亮 OUT DX, AL CALL DY MOV AL, 00000100B ;南北黄灯灭,东西红灯亮,实现要求闪的功能 OUT DX,AL CALL DY 微机原理与接口技术实验报告 4 DEC BL JNZ L2 MOV BL,6H ;第三次设置亮灭时间为 3 秒 L3:MOV AL,10000001B ; 南北黄灯亮,东西红灯亮 OUT DX,AL CALL DY DEC BL JNZ L3 MOV BL,4H L4:MOV AL,10000010B ;南北红灯亮,东西黄灯亮 OUT DX,AL CALL DY MOV AL,10000000B ;南北红灯亮,东西黄灯灭,实现闪的功能 OUT DX,AL CALL DY DEC BL JNZ L4 MOV DL,0FFH ;判断是否有键按下,结束程序 MOV AH,06H INT 21H JZ START ;没有键按下,进入下一次循环 MOV AH,4CH INT 21H CODE ENDS END START 五、实验现象 : 红黄绿灯变化规律如下: 微机原理与接口技术实验报告 5 南北路口的绿灯、东西路口的红灯同时亮 3秒左右; 南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮; 南北路口的红灯、东西路口的绿灯同时亮 3秒左右; 南北路口的红灯 继续亮,同时东西路口的黄灯闪烁若干次; 依次重复。 六、实验感想 这是第一次微机实验, 总体感觉挺难的。虽然课前进行了预习准备,但在调试时还是遇到了灯不亮的情况。仔细检查程序后没有发现什么问题,所以就换了一个实验箱,并得到了理想的效果。我觉得这个实验的关键是设置延时子程序 DY,在每一次灯亮后,都要调用这个延时程序,并跳转到下一次灯亮。 微机原理与接口技术实验报告 6 实验二 可编程定时器 /计数器 (8253) 一、 实验目的 1、 掌握并行接口 8253 的基本工作原理; 2、 掌握 8253 的编程方法。 二、 实验内容 1、 按图虚线连接电路,将计数器 0 设置为工作方式 0,计数器初值为 N( N 0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察 OUT0 电平变化(当输入 N+1 个脉冲后 OUT0 遍高电平)。 2、 按图连接电路,将计数器 0、计数器 1 分别设置为方式 3,计数初值设为 1000,用逻辑笔观察 OUT1 输出电平的变化 (频率 1Hz)。 微机原理与接口技术实验报告 7 三、 编程 分析 1、 8253 控制寄存器地址: 0C403H 计数器 0 地址: 0C400H 计数器 1 地址: 0C401H CLK0 连接 时钟: 1MHz。 2、程序参考流程图 四、汇编语言程序 ( 1): CODE SEGMENT ASSUME CS:CODE START: MOV DX,0C403H ;计数器 0,方式 0 MOV AL,010H 开始 设置计数器 0 为工作方式 0 送计数器初值 读计数器值 显示计数值 结束 结束 开始 设计数器 1 为工作方式 3 向计数器 1 送初值 1000 先送低字节后送高字节 向计数器 0 送初值 1000 先送低字节后送高字节 计数器 0 位工作方式 3 有 键按下吗? 调用延时子程序 Y N ( 1) ( 2) 微机原理与接口技术实验报告 8 OUT DX,AL MOV DX,0C400H MOV AL,06H ;送初值 6 OUT DX,AL MOV CL,1 READ: INC CL ;自加 1 CMP CL,0 JZ START MOV DX,0C400H ;读计数器 0口 IN AL,DX MOV DL,AL MOV CL,AL CMP AL,9 JG BIG ADD DL,30H ; 0到 9,数字 ASCII偏移 30H MOV AH,02H INT 21H ;显示 ASCII数字 MOV DL,0DH INT 21H JMP RETURN BIG: ADD DL,37H ; 大于 9,转换大写字母 ASCII码 MOV AH,02H INT 21H ;显示 ASCII字母 MOV DL,0DH INT 21H JMP RETURN RETURN: MOV DL, 0FFH MOV AH, 06H INT 21H JZ READ ;有键按下回 DOS,没有则继续执行 微机原理与接口技术实验报告 9 MOV AH,4CH INT 21H CODE ENDS END START ( 2): CODE SEGMENT ASSUME CS:CODE START: MOV DX,0C403H ;计数器 0方式 3控制字写入 MOV AL,00110110B OUT DX,AL MOV AX,1000 ;计数器 0置入初值 1000,先送低字节后送高字节 MOV DX,0C400H OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,0C403H ;计数器 1初始化方式 3控制字写入 MOV AL,01110110B OUT DX,AL MOV AX,1000 ;计数器 1 置入初值 1000,先送低字节后送高字节 MOV DX,0C401H OUT DX,AL MOV AL,AH OUT DX,AL MOV AH,4CH INT 21H ;返回操作系统 CODE ENDS END START 微机原理与接口技术实验报告 10 五、实验现象 实验 1,用手动逐个输入单脉冲,在屏幕上从计数器初值开始显示,此时逻辑笔显示为低电平,单脉冲每输入一个,计数器值将会减 1,进行自减计数。同时在屏幕上显示,当计数器值减到 0 时,逻辑笔显示为高电平,红灯亮。因为方式 0 计数不会重新装入计数值,所以如果要重新计数,需要重新启动程序。 实验 2,红灯绿灯交替变化,表示输出是矩形脉冲。 六、实验感想 这次实验做得挺不顺畅的 ,一开始我做第一个小实验时, 没有实现最后判断是否有健按下,并跳出程序的功能。 后来问了同学以后,在 RETURN 返回子程序里加了一个 DOS 6 号功能调用,并加入一个控制转移指令 JZ READ,就实现了有键按下返回操作系统,无键按下继续执行的功能。总之在这次实验中我收获了很多。 微机原理与接口技术实验报告 11 实验三 中断实验(纯 DOS) 一、 实验目的 1、 掌握 PC 机中断处理系统的基本原理 2、 学会编写中断服务程序 二、 实验原理与内容 1、 实验原理 PC 机用户可使用的硬件中断只有可屏蔽中断,由 8259 中断控制器管理,中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后 向 CPU 发出可屏蔽中断请求。 IBM PC/XT 机内有一片 8259 中断控制器对外可以提供 8 个中断源,如表 6-1 所示。 表 6-1 中断源 中断源 中断类型号 中断功能 IRQ0 08H 时钟 IRQ1 09H 键盘 IRQ2 0AH 保留 IRQ3 0BH 串行口 2 IRQ4 0CH 串行口 1 IRQ5 0DH 硬盘 IRQ6 0EH 软盘 IRQ7 0FH 并行打印机 8 个中断源的中断请求信号线 IRQ0IRQ7 在主机的 62 线 ISA 总线插座中可以引出,系统已设定中断请求信号为边沿触发、普通结 束方式,对于 IBM PC/AT 及 80286 以上微机,系统又扩展了一片 8259 中断控制器,主片的 IRQ2 用于两片 8259 之间级连,对外可以提供 16 个中断源,如表 6-2 所示。 表 6-2 中断源 中断源 中断类型号 中断功能 IRQ8 070H 实时时钟 IRQ9 071H 用户中断 IRQ10 072H 保留 IRQ11 073H 保留 微机原理与接口技术实验报告 12 IRQ12 074H 保留 IRQ13 075H 协处理器 IRQ14 076H 硬盘 IRQ15 077H 保留 PCI 总线中的中断线只有四根: INTA#, INTB#, INTC#, INTD#。它们需要通过 P&P的设置来和某一根中断相连接才能进行中断申请。如图 6-1 所示,虚线为实验中需要连的线。 I R Q+ 5R 1 1 R 1 0图 6-1 实验电路图 2、 实验内容 实验电路如图 6-1 所示直接用手动产生单脉冲作为中断请求信号,只需连接一根导线,要求每按一次开关产生一次中断,在屏幕上显示一次“ TPC pci card Interrupt”,中断 10 次后程序退出。 三、 编程分析 1、 由于 9054 的驱动程序影响直写 9054 芯片的控制寄存器,中断实验 需要在纯 DOS的环境中才能正常运行。 2、由于 TPC 卡使用 PCI 总线,所以分配的中断号在每台微机可能都不同,编程时需要了解当前的微机使用哪个中断号并进行设置。获取方法是在纯 DOS 环境中,运行一个读 PCI 配置空间的程序“ PORTR.EXE”,该程序能够获得本机 TPC 板卡或所有 PCI 板卡的硬件资源,如 IO、内存、中断占用情况。然后根据获得的中断请求号码来修改程序中的中断向量、中断掩码的参数,并重新编译链接后即可。 微机原理与接口技术实验报告 13 9 3 C S 5 6E E P R O MP L X9 0 5 4驱 动M A X7 1 2 8C P L DT e s t H e a d e rTestHeader晶 振阻 排5 0芯I S A总线图 6-2 PCI 卡的结构 3、由于 TPC 卡使用 9054 芯片连接微机,如图 6-2 所示, 9054 通过中断控制 /状态寄存器( INTCSR)激活 /禁用中断源,所以在编程时,使用微机中断前需要使用 9054 的中断功能,所以要先对中断控制 /状态寄存器( INTCSR)设置,代码如下: MOV DX,IOPORT_CENT+68H ;设置 tpc 卡中 9054 芯片 io 口,使能中断 IN AX,DX OR AX,0900H OUT DX,AX 其中 IOPORT_CENT 是 9054 芯片寄存器组的 I/O 起始地址,每台微机可能都不同,编程时需要了解当前的微机使用哪段并进 行设置,获取方法请参看汇编程序使用方法的介绍。中断使能寄存器( INTCSR)的偏移地址是 +68H,设置含义如表 6-3 所示: 表 6-3 BITS 功能 8 1:使能产生 PCI中断 0:禁止产生 PCI中断 11 1:使能 LOCAL端输入的中断送到 PCI端 0:禁止 LOCAL端输入的中断送到 PCI端 其它位为零即可,更多内容参考 9054芯片数据手册 程序退出前还要关闭 9054 的中断,代码如下: MOV DX,IOPORT_CENT+68H ;设置 TPC 卡中 9054 芯片 IO 口,关闭中断 IN AX,DX AND AX,0F7FFH 微机原理与接口技术实验报告 14 OUT DX,AX 4、 PC 机中断控制器 8259 的地址为 20H、 21H,编程时要根据中断类型号设置中断矢量, 8259 中断屏蔽寄存器 IMR 对应位要清零(允许中断),中断服务结束返回前要使用中断结束命令: MOV AL,20H OUT 20H,AL 中断结束返回 DOS 时应将 IMR 对应位置 1,以关闭中断。 四、 参考流程图 开 始关 中 断设 置 T P C 卡 中 断 使 能保 存 原 中 断 向 量设 置 新 中 断 向 量设 置 中 断 掩 码显 示 提 示 信 息开 中 断计 数 器 为 0 ?按 任 意 键 ?YYNN恢 复 中 断 掩 码恢 复 原 中 断 向 量设 置 T P C 卡 中 断 关 闭结 束 返 回中 断 开 始关 中 断计 数 器 减 一显 示 提 示 信 息发 出 E O I 结 束 中 断开 中 断中 断 返 回微机原理与接口技术实验报告 15 五、 汇编语言程序 ;接 1根线 ,单脉冲 -IRQ,输入一个脉冲中断一次 ,输入 10次结束 . DATA SEGMENT INT_VECT EQU 0BH ;中断 0-7 的向量为 :08H-0FH,中断 8-15 的向量为 :70H-77H.中断类型号 :73是在本微机设备管理器中查出的 . IRQ_MASK_2_7 EQU 011110111B ;中断掩码 ,中断 0-7 时从低至高相应位为零 ,中断 8-15时第 2位为零 IRQ_MASK_9_15 EQU 011111111B ;中断 0-7时全一 ,中断 8-15时从低至高相应位为零 IOPORT_CENT EQU 0C000H ;TPC 卡中 9054芯片的 IO地址 ,地址 0E000H是在本微机设备管理器中查出的 . CSREG DW ? IPREG DW ? ;旧中断向量保存空间 IRQ_TIMES DW 00H ;中断计数 MSG1 DB 0DH,0AH,TPC PCI CARD INTERRUPT,0DH,0AH,$ MSG2 DB 0DH,0AH,PRESS ANY KEY TO EXIT!,0DH,0AH,$ MSG3 DB 0DH,0AH,PRESS DMC TO INTERRUPT 10 TIMES AND EXIT!,0DH,0AH,$ DATA ENDS STACKS SEGMENT STACK DB 100 DUP (?) STACKS ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKS,ES:DATA START: ;ENABLE LOCAL INTERRUPT INPUT .386 CLI MOV AX,DATA 微机原理与接口技术实验报告 16 MOV DS,AX MOV ES,AX MOV AX,STACKS MOV SS,AX MOV DX,IOPORT_CENT+68H ;设置 TPC 卡中 9054芯片 IO口 ,使能中断 IN AX,DX OR AX,0900H OUT DX,AX MOV AL,INT_VECT ;保存原中断向量 MOV AH,35H INT 21H MOV AX,ES MOV CSREG,AX MOV IPREG,BX MOV AX,CS ;设置新中断向量 MOV DS,AX MOV DX,OFFSET INT_PROC MOV AL,INT_VECT MOV AH,25H INT 21H IN AL, 21H ;设置中断掩码 AND AL, IRQ_MASK_2_7 OUT 21H, AL IN AL, 0A1H AND AL, IRQ_MASK_9_15 OUT 0A1H, AL 微机原理与接口技术实验报告 17 MOV AX,DATA MOV DS,AX MOV DX,OFFSET MSG2 MOV AH,09H INT 21H MOV DX,OFFSET MSG3 MOV AH,09H INT 21H MOV IRQ_TIMES,0AH STI LOOP1: CMP IRQ_TIMES,0 ;等待中断并判断中断 10次后退出 JZ EXIT HLT ;JZ LOOP1 ;按任意键退出 JMP LOOP1 EXIT: CLI MOV BL, IRQ_MASK_2_7 ;恢复中断掩码 NOT BL IN AL, 21H OR AL, BL OUT 21H, AL MOV BL, IRQ_MASK_9_15 NOT BL IN AL, 0A1H OR AL, BL OUT 0A1H, AL 微机原理与接口技术实验报告 18 MOV DX,IPREG ;恢复原中断向量 MOV AX,CSREG MOV DS,AX MOV AH,25H MOV AL,INT_VECT INT 21H MOV DX,IOPORT_CENT+68H ;设置 TPC 卡中 9054芯片 IO口 ,关闭中断 IN AX,DX AND AX,0F7FFH OUT DX,AX MOV AX,4C00H INT 21H INT_PROC PROC FAR CLI PUSH AX PUSH DX PUSH DS DEC IRQ_TIMES MOV AX,DATA MOV DS,AX MOV DX,OFFSET MSG1 MOV AH,09H INT 21H MOV AL,20H ;写入 EOI OUT 0A0H,AL OUT 20H,AL 微机原理与接口技术实验报告 19 POP DS POP DX POP AX STI IRET INT_PROC ENDP CODE ENDS END START 六、 实验感想 在课堂上,戴老师已经给我们演示过关于在 DOS 环境中调试程序,所以对于这次实验,入手并不是很困难,但是在纯 DOS 环境下操作还是第一次,主要把指令和流程记住就不会有太大的问题。 微机原理与接口技术实验报告 20 实验四 模 /数转换器 一、 实验目的 了解模 /数转换的基本原理,掌握 ADC0809 的使用方法。 二、 实验 原理及 内容 1、 实验电路原理图 如下 。通过实验台左下角电位器 RW1 输出 0 5直流电压送入 ADC0809 通道 0(IN0),利用 debug 的输出命令启动 /转换器,输入命令读取转换结果,验证输入电压与转换后数字的关系。 实验电路图如下: 2、编程采集 IN0 输入的电压 ,在屏幕上显 示出转换后的数据(用 16 进制数)。 三、 实验提示 1、 0809 地址 : (原地址( ISA) 动态分配地址) IN0口: 298H 0C418H IN1口: 299H 0C419H 2、利用 debug的输出命令启动 /转换器,输 入命令读取转换结果。 Debug -O C418 0 ; 启动 IN0开始转换 -I C418 ; 读转换结果 - D8 ; 转换后的数字量 3、 IN0单极性输入电压与转换后数字的关系为: N = Ui/(Uref/256) 其中 Ui为输入电压, Uref为参考电压,这里参考电压为 PC机的 +5V电压。 四、参考流程图 微机原理与接口技术实验报告 21 五、汇编语言程序 开始 结束 启动 A/D 转换 延时 读入转换后的数据 所读数据赋给 BL 将 AL 数据右移 4 位,显示其高四位 将 AL 数据赋给 DL DL 加 7 DL 加 30H 显示 ASC 码为 DL 的字符 将 AL 数据赋给 DL 从 BL 中取出数据至 AL 和 0FH 相与,显示其低四位 DL 加 30H DL 加 7 显示 ASC 码为 DL 的字符 DL 大于 9 吗? DL 大于 9 吗? 有键按下吗? N N N 微机原理与接口技术实验报告 22 CODE SEGMENT ASSUME CS:CODE START:MOV DX,0C418H ;ADC0809 地址为 0C418H MOV AL,0 ;向其地址写入 0,启动 ADC0809 进行模数转换 OUT DX,AL MOV CX,0FFFFH ;延时 ,计数值为 FFFF*FFFF,使 ADC0809 完成转换 T1:MOV AX,0FFFFH T2:DEC AX JNZ T2 LOOP T1 IN AL,DX ;将转换结果读进来 MOV BL,AL ;将数据的高位存入 AL,低位存入 BL AND AL,11110000B AND BL,00001111B MOV CL,4 SHR AL,CL CMP AL,0AH ;比较 AL 的值与 0AH 的大小 JAE L0 ;若大于等于 0AH 转 L0 ADD AL,30H ;若小于 0AH 加 30H 转换成它的 ASCII 码 JMP L1 L0:ADD AL,37H ;大于 0AH 时加 37H 转换成它的 ASCII 码 L1:CMP BL,0AH ;比较 BL 的值与 0AH 的大小 JAE L2 ;若大于等于 0AH 转 L2 ADD BL,30H ;若小于 0AH 加 30H 转换成它的 ASCII 码 JMP L3 L2:ADD BL,37H L3:MOV DL,AL ;2 号功能调用 ,显示高位 MOV AH,02H INT 21H MOV DL,BL ;显示低位 微机原理与接口技术实验报告 23 MOV AH,02H INT 21H MOV DL,13 ;回车 MOV AH,02H INT 21H MOV DL,10 ;换行 MOV AH,02H INT 21H MOV DL,0FFH ;按任意键退出 MOV AH,06H INT 21H JZ START MOV AH,4CH INT 21H CODE ENDS END START 五、 实验现象 (1) 用 Debug 完成 AD 转换。 微机原理与接口技术实验报告 24 (2) 调节实验台左下角电位器 RW1,即可改变输入的模拟电压的值,经 0809转换成数字量后显示在屏幕上。输入不同电压值,输出值也随其改变。 六、 实验感想 这次实验 程序中我用的是延迟法进行 AD 转换,所以转换部分程序很简单,主要困难是将 2 位数转换成它们的 ASCII 码形式并输出。认真的编程后又仔细检查,这部分也完成得很好。上机调试时,发现每次显示的电压值都不停往后输出,此时认为输出一次后加一个换行会比较好,加上后就出来上面的效果图了。 调试过程中换了好几个实验箱,有好几次都是第一次调出来结果以后,再想给老师演示时就出问题。不过,幸亏我的程序没有什么问题,完成得还算顺利。 微机原理与接口技术实验报告 25 实验五 PC 机 串行通信实验( 8250) 一、 实验目的 1、 掌握串 行接口 芯片 8250 的基本 原理 和编程方法 2、 熟悉 PC 机串行的基本连接方法 3、 进一步了解串行通信的基本原理 二、 实验内容 1、 PC 机 RS-232 串口自发自收。 按照 PC 机 RS-232 串口自发自收的连线方法连线。编写 PC 机自发自收串行通信程序。 要求:键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示,实现自发自收。 2、两台 PC 机间 RS-232 串口通信。 按照 PC 机 RS-232 串口直接互连的方法连接两台 PC 机。 编写 PC 机直接互连串行通信程序。 要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收 字符并显示在屏幕上。当键入感叹号“!”,结束收发过程。 三 、 硬件连接 实验室提供了 2 根 DB-9 连接器的串口连接线: 1、孔( RS232) -针, 9 针全部直连方式。作为延长线使用 2、孔 -孔,引脚 2(RXD)、 3(TXD)交叉方式, 其余信号直连作为交叉连接用 。 四、 编程分析 1、 接收和发送数据可以采用查询方式。 2、 8250 输入的基准时钟频率为: 1.8432MHz。 微机原理与接口技术实验报告 26 3、 PC 机系统的异步通信接口电路参照书本 微机原理与接口技术 P223 图 7-45。 五、汇编语言程序 1、自发自收 (非自检方 式,把 2、 3 端口短路) CODE SEGMENT ASSUME CS:CODE START: MOV AL,10000000B ;8250 初始化 ,设 DLAB=1 MOV DX,3FBH OUT DX,AL MOV AX,30H MOV DX,3F8H OUT DX,AL ;写入除数低字节 MOV AL,AH MOV DX,3F9H OUT DX,AL ;写入除数高字节 MOV AL,00001011B ;8 位数据 ,1 位停止 ,奇校验 MOV DX,3FBH OUT DX,AL ;写入线路控制寄存器 MOV AL,00000000B ;非自检 MOV DX,3FCH OUT DX,AL ;写入 MODEM 控制寄存器 MOV AL,0 MOV DX,3F9H OUT DX,AL ;禁止中断 WAIT_FOR: MOV DX,3FDH ;读线路状态寄存器 IN AL,DX TEST AL,00011110B ;出错否 JNZ ERROR TEST AL,00000001B ;接收数据就绪否 微机原理与接口技术实验报告 27 JNZ RECEIVE ;转接收 TEST AL,00100000B ;发送器空否 JZ WAIT_FOR ;返回等待 MOV AH,1 INT 21H ;读键盘 MOV DX,3F8H ;发送 OUT DX,AL CALL DELAY JMP WAIT_FOR ;返回等待 RECEIVE: MOV DX,3F8H ;读接收数据 IN AL,DX AND AL,01111111B CMP AL,03H ;是 CTRL-C? JNZ CHAR MOV AX,4C00H ;返回 DOS INT 21H CHAR: MOV DL,AL MOV AH,2 ;显示接受字符 INT 21H JMP WAIT_FOR ;返回等待 ERROR:MOV DL,? ;显示 ? MOV AH,02H INT 21H JMP WAIT_FOR DELAY PROC PUSH CX PUSH DX MOV CX,0 MOV DX,1000 微机原理与接口技术实验报告 28 L1: LOOP L1 DEC DX JNZ L1 POP DX POP CX RET DELAY ENDP CODE ENDS END START 2、甲机发送,乙机接收 1)发送程序 CODE SEGMENT ASSUME CS:CODE START: MOV AL,80H ;8250 初始化 ,设 DLAB=1 MOV DX,3FBH OUT DX,AL MOV AX,0030H MOV DX,3F8H OUT DX,AL ;写入除数低字节 MOV AL,AH MOV DX,3F9H OUT DX,AL ;写入除数高字节 MOV AL,0AH ;7 位数据 ,1 位停止 ,奇校验 MOV DX,3FBH OUT DX,AL ;写入线路控制寄存器 MOV AL,03H ;数据终端就绪 ,请求发送数据 MOV DX,3FCH OUT DX,AL ;写入 Modem 控制寄存器 MOV AL,0 微机原理与接口技术实验报告 29 MOV DX,3F9H OUT DX,AL ;写中断允许寄存器,屏蔽中断 WAIT_FOR: MOV DX,3FDH ;读线路状态寄存器 IN AL,DX TEST AL,00100000B ;发送寄存器空否 ,不空 ,返回等待 JZ WAIT_FOR SEND: MOV AH,1 INT 21H CMP AL,21H JZ EXIT MOV DX,3F8H ;读键盘 ,若是 !,返回 DOS,若不是 ,则发送 OUT DX,AL JMP WAIT_FOR ;返回等待 EXIT: MOV AX,4C00H INT 21H CODE ENDS END START 2)接受程序 CODE SEGMENT ASSUME CS:CODE START: MOV AL,80H ;8250 初始化 ,设 DLAB=1 MOV DX,3FBH OUT DX,AL MOV AX,0030H MOV DX,3F8H OUT DX,AL ;写入除数低字节 MOV AL,AH 微机原理与接口技术实验报告 30 MOV DX,3F9H OUT DX,AL ;写入除数高字节 MOV AL,0AH ;7 位数据 ,1 位停止 ,奇校验 MOV DX,3FBH OUT DX,AL ;写入线路控制寄存器 MOV AL,03H ;数据终端就绪 ,请求发送数据 MOV DX,3FCH OUT DX,AL ;写入 Modem 控制寄存器 MOV AL,0 MOV DX,3F9H OUT DX,AL ;写中断允许寄存器,屏蔽中断 WAIT_FOR: MOV DX,3FDH ;读线路状态寄存器 IN AL,DX TEST AL,00000001B ;接收数据就绪否 JNZ RECEIVE ;转接收 JMP WAIT_FOR ;返回等待 RECEIVE: MOV DX,3F8H ;读接收数据 IN AL,DX AND AL,01111111B ;保留 7 位数据 CMP AL,21H ;是 !? JNZ CHAR MOV AX,4C00H ;返回 DOS INT 21H CHAR: PUSH AX MOV DL,AL MOV AH,2 ;显示接收字符 微机原理与接口技术实验报告 31 INT 21H POP AX JMP WAIT_FOR ;返回等待 CODE ENDS END START 六、实验感想 这次实验让我们深入了解了串行口发送和接收的原理,是对课堂知识的考查和补充。 但是实验中只实现了 8250 的单工通信功能,我自己又想实现一个半双工通信的功能 ,这作为我最后一个自主设计实验来完成。 微机原理与接口技术实验报告 32 实验六 竞赛抢答器( 8255) 一、实验目的 、了解微机化竞赛抢答器的基本原理。 、进一步学习使用并行接口。 二、实验内容 图 5-4为竞赛抢答器(模拟)的原理图,逻辑开关 K0 K7代表竞赛抢答按钮 0 7号,当某个逻辑电平开关置 “ ” 时,相当某组抢答按钮按下。在七段数码管上将其组号( 0 7)显示出来,并使喇叭响一下。从键盘上按空格键开始下一轮抢答,按其它键程序退出。 三、 编程分析 1、设置 8255为 C口输入、 A口输出,读取 C口数据,若为 0表示无人抢答,若 不为 0则有人抢答。根据读取数据可判断其组号。从键盘上按空格键开始下一轮抢答,按其它键程序退出。 2、计算组号的算法: 组号 =C口数据连续除以 2得到商为零的除法运算次数 MOV AH,0 微机原理与接口技术实验报告 33 MOV DL,2 MOV CL,0 JISUAN: DIV DL INC CL CMP AL,0 JNZ JISUAN DEC CL MOV AL,CL 3、响铃的 DOS功能调用: MOV DL, 7 ; 响铃 ASCII码为 07 MOV AH ,2 INT 21H 四、参考流程图 微机原理与接口技术实验报告 34 五、汇编语言程序 DATA SEGMENT LIST DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DATA ENDS STACK1 SEGMENT PARA STACK DB 20 DUP(0) STACK1 ENDS CODE SEGMENT START:ASSUME CS:CODE,DS:DATA,SS:STACK1 MOV AX,DATA MOV DS,AX MOV BX,OFFSET LIST MOV DX,0C40BH MOV AL,10001001B OUT DX,AL ;8255 初始化 INPUT: MOV DX,0C408H MOV AL,0FFH OUT DX,AL MOV DX,0C40AH IN AL,DX ;C 口输入 CMP AL,0 JZ INPUT MOV AH,0 MOV DL,2 MOV CL,0 JISUAN: DIV DL INC CL 微机原理与接口技术实验报告 35 CMP AL,0 JNZ JISUAN DEC CL MOV AL,CL ;计算出组号 XLAT MOV DX,0C408H OUT DX,AL ;查表并从 A 口输 出 MOV DL,7 MOV AH,2 INT 21H ;响铃 MOV AH,01H INT 21H CMP AL, ;接收一字符 JZ INPUT EXIT: MOV AH,4CH INT 21H CODE ENDS END START 六、实验 现象 初始状态为数码管全亮。拨下任一开关后,铃响,同时数码管显示该组的组号。按空格键,恢复到初始状态 。 七、实验感想 在本次实验中 组号的计算是一个难点,在这个算法的设计上花费了较多的时间。我用除 2 循环实现要求之后,经过与别人交流,发现用移位算法更为直观,方便理解。但是除以 2与右移一位本来是等价的,所以这两种算法本质还是相同的。 调试过程中还是屡出故障,不过经仔细检查发现,均是实验箱接触不良导致的。 微机原理与接口技术实验报告 36 实验七 PC 机半双工通信( 8250) 自主设计实验 一、 实验目的 结合教材上的知识,掌握 8250 半双工通信的设计方法,加深对 8250 串行通信实验的理解。 二、实验内容 两台 PC 机间 RS-232 串口通信。 按照 PC 机 RS-232 串口直接互连的方法连接两台 PC 机。 编写 PC 机直接互连串行通信程序。 要求:当甲机作为发送机时,乙机作为接收机;当甲机作为接收机时,乙机作为发送机。能实现半双工的字符发送与接收。 三、编程分析 1、 接收和发送数据可以采用查询方式。 2、 8250 输入的基准时钟频率为: 1.8432MHz。 结合第五次实验内容,将其发送接收程序稍加改动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 有关店面的转让合同范文
- 二零二五人才招聘会协议书
- 二零二五房屋产权转让合同
- 数据库应用技术形成性考核册2024
- 个人板房出售合同标准文本
- 专业验房合同样本
- 语言活动小小的和大大的-公开课教案
- 个人地下停车位租赁合同范本
- 信息类维保合同样本
- 买牛肉购销合同标准文本
- 代建项目管理手册
- GB/T 39766-2021人类生物样本库管理规范
- 315食品安全宣传PPT模板
- GB/T 20145-2006灯和灯系统的光生物安全性
- GB 21519-2008储水式电热水器能效限定值及能效等级
- 2023年陕西省学业水平考试物理试真题答案无
- 运输供应商年度评价表
- 旅游项目融投资概述
- 全旅馆业前台从业人员资格证考试答案解析
- 十二经络及腧穴课件
- 立式圆筒形储罐罐底真空试验记录
评论
0/150
提交评论