微机原理与接口技术-北京交大-微机实验报告.doc_第1页
微机原理与接口技术-北京交大-微机实验报告.doc_第2页
微机原理与接口技术-北京交大-微机实验报告.doc_第3页
微机原理与接口技术-北京交大-微机实验报告.doc_第4页
微机原理与接口技术-北京交大-微机实验报告.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

微机原理与接口技术 实验报告 班班 级 级 通信通信 xxxxxxxx 姓姓 名 名 xxxxxxxx 学学 号 号 1xxxxx1xxxxx 授课教师 授课教师 xxxxxxxx 老师老师 第 2 页 共 42 页 目录目录 1 实验一实验一 3 2 实验二实验二 9 3 实验三实验三 15 4 实验四实验四 23 5 实验五实验五 29 6 实验六实验六 38 第 3 页 共 42 页 实验一实验一 交通灯控制实验交通灯控制实验 一一 实验目的实验目的 通过应用接口技术设计十字路口 复杂路口交通灯控制系统 学会应用 微机原理与 接口技术 课程所学的 X86 汇编语言和接口技术掌握可编程并行接口芯片的硬件设计 软 件编程 实现十字路口交通灯的模拟控制并思考计算机如何应用在各种控制系统中 1 掌握利用 X86 汇编语言技巧 2 掌握 X86 微处理器与可编程并行接口芯片 8255A 硬件电路设计 3 熟悉模拟交通灯控制的实现方法并思考如何应用在实际中 二二 实验内容实验内容 1 1 基本功能 基本功能 设计一个交通控制系统 该控制系统工作后 交通灯按照如下规律变化 1 南北路口的绿灯 东西路口的红灯同时亮 3 秒左右 2 南北路口的黄灯闪烁若干次 同时东西路口的红灯继续亮 3 南北路口的红 东西路口的绿灯同时亮 3 秒 4 南北路口的红灯继续亮 同时东西路口的黄灯亮闪烁若干次 5 返回 1 依次循环 2 2 思考扩展功能 思考扩展功能 1 如遇到特殊情况 可拨动应急开关 使各项均为红灯 特殊车辆不受红灯限制 使其 顺利通过后拨动另一个开关 系统返回继续运行 2 用 LED 应倒计时方式显示各路口灯亮时间 3 对于多路口联网应该如何设计 三 实验电路三 实验电路 如下图 L7 L6 L5 作为南北路口的交通灯与 PC7 PC6 PC5 相连 L2 L1 L0 作为 东西路口的交通灯与 PC2 PC1 PC0 相连 编程使六个灯按交通灯变化规律燃灭 8255 动态分配地址 控制寄存器 0EC0BH A 口地址 0EC08H 第 4 页 共 42 页 C 口地址 0EC0AH 8 82 25 55 5 P PC C7 7P PC C6 6 P PC C5 5 P PC C2 2P PC C1 1P PC C0 0 C CS S 2 28 88 8H H 2 28 8F FH H L L7 7 L L6 6 L L5 5L L2 2 L L1 1 L L0 0 红红 黄黄 绿绿 红红 黄黄 绿绿 交交通通灯灯实实验验电电路路图图 1 10 02 21 11 10 08 89 9 四 程序流程图四 程序流程图 长长延延时时 是是否否有有按按键键 南南北北路路口口黄黄灯灯闪闪 东东西西路路口口绿绿灯灯亮亮 南南北北路路口口绿绿灯灯亮亮 东东西西路路口口红红灯灯亮亮 南南北北路路口口红红灯灯亮亮 东东西西路路口口绿绿灯灯亮亮 设设置置8 82 25 55 5A A口口输输出出C C口口输输出出 返返回回D DO OS S 开开始始 南南北北路路口口红红灯灯亮亮 东东西西路路口口黄黄灯灯闪闪 长长延延时时 Y N 交交通通灯灯控控制制流流程程图图 1 10 02 21 11 10 08 89 9 第 5 页 共 42 页 五 源程序五 源程序 CODE SEGMENT ASSUME CS CODE 工作状态控制字设置 START MOV DX 0EC0BH 写控制端口 地址0EC0BH MOV AL 10010000B C口方式0输出 OUT DX AL 南北路口绿灯亮 东西路口红灯亮 FIRST MOV DX 0EC0AH 写PC口 地址0EC0AH MOV AL 00100100B 南北绿 东西红 PC口写00100100 OUT DX AL 两层嵌套实现长延时 MOV CX 0 外层循环送入初值65536 MOV AX 2000H 内层循环送入初值2000H DELAY1 DEC AX JNZ DELAY1 LOOP DELAY1 南北路口黄灯闪烁 东西路口红灯亮 MOV BL 5 BL控制黄灯亮的次数5次 SECOND MOV DX 0EC0AH MOV AL 01000100B OUT DX AL 南北黄 东西红 MOV CX 3000H MOV AX 0100H LI1 DEC AX JNZ LI1 LOOP LI1 第 6 页 共 42 页 MOV DX 0EC0AH 短延时 MOV AL 00000100B 南北路口黄灯先灭 OUT DX AL MOV CX 3000H MOV AX 0100H WEN1 DEC AX JNZ WEN1 短延时 LOOP WEN1 DEC BL JNZ SECOND 南北路口黄灯再亮 南北路口红灯亮 东西路口绿灯亮 THIRD MOV DX 0EC0AH 写入C口 MOV AL 10000001B OUT DX AL 南北红 东西绿 MOV CX 0 长延时 MOV AX 2000H DELAY2 DEC AX JNZ DELAY2 LOOP DELAY2 MOV BL 4 控制黄灯亮的次数 FORTH MOV DX 0EC0AH 写入C口 MOV AL 10000010B OUT DX AL 南北红 东西黄 MOV CX 3000H MOV AX 0100H LI2 DEC AX JNZ LI2 短延时 第 7 页 共 42 页 LOOP LI2 南北路口红灯亮 东西路口黄灯闪烁 MOV DX 0EC0AH MOV AL 10000000B OUT DX AL 东西路口黄灯先灭 MOV CX 3000H MOV AX 0100H WEN2 DEC AX JNZ WEN2 LOOP WEN2 DEC BL JNZ FORTH 东西路口黄灯再亮 MOV DL 0FFH 检测是否有键按下 调用6号功能 MOV AH 06H INT 21H 执行键盘输入操作 JZ FIRST MOV AH 4CH INT 21H 返回操作系统 CODE ENDS END START 六 实验总结六 实验总结 这是我们的首个微机原理实验 而且我们班是第一批做实验的 没有丝毫经验 对实 验箱以及 TPC 2003 集成开发环境都比较陌生 也没有事先编写好程序 因此时间很紧张 今后一定要在实验前做好充分的预习工作 现根据实验指导书上的要求 编写好程序 这 第 8 页 共 42 页 个实验主要是用 8255 的定时功能来定时 然后使用 JZ JNZ 来实现闪烁和红绿灯转换等 功能 运用循环进行延时 实验中还使用了 6 号功能来实现显示的功能 通过这次实验使 我对 8255 的工作原理 定时功能有了进一步的了解 同时也对汇编的程序结构和调试方法 更加熟悉 一开始 程序编译连接都没有错误 但是有一个红灯一直亮 其他功能均正常 我又去检查程序是否存在逻辑错误 并反调试运行 都不能解决问题 后来在别人的实验 箱上就运行成功了 可靠的硬件保障是实验成功的首要条件 第 9 页 共 42 页 实验二实验二 可编程定时器可编程定时器 计数器计数器 一 实验目的一 实验目的 通过实验了解可编程定时器 计数器的本质是计数 学会再设计应用系统中如何用接口 芯片实现计数和定时功能 通过实验思考并比较标准 TTL 集成电路实现计数和可编程定时 器 计数器有什么不同 各有哪些特点 思考计数器可以用哪些场合 1 掌握 8253A 与 X86 微机处理硬件连接原理 2 掌握 8253A 计数定时应用编程 3 熟悉掌握 8253A 在 PC 机系统中典型应用方法并思考如何应用在其他系统中 二 实验内容二 实验内容 1 利用单脉冲发生器作为 8253A 可编程计数定时器时钟信号 实现 N 个脉冲后产生输出 高电平信号 2 利用 8253A 可编程计数定时器实现产生 1S 钟定时输出程序设计 输入 1MHZ 三 实验电路三 实验电路 U U5 5 8 82 25 53 3 C CL LK K0 0 G GA AT TE E0 0 O OU UT T0 0 C CS S2 28 80 0H H 5 5V V 5 5V V G GN ND D R R2 2R R3 3 图图2 2 1 1 可可编编程程定定时时器器 计计数数器器 电电路路图图一一 1 10 02 21 11 10 08 89 9 1 按图 2 1 虚线连接电路 将计数器 0 设置为方式 0 计数器初值为 N N 0FH 用手动 逐个输入单脉冲 编程使计数值在屏幕上显示 并同时用逻辑笔观察 OUT0 电平变化 第 10 页 共 42 页 当输入 N 1 个脉冲后 OUT0 变高电平 2 按图 2 2 连接电路图 将计数器 0 计数器 1 分别设置为方式 3 计数初值设为 1000 用逻辑笔观察 OUT1 输出电平的变化 频率为 1MHz U U5 5 8 82 25 53 3 C CL LK K0 0 G GA AT TE E0 0 O OU UT T0 0 C CS S2 28 80 0H H 5 5V V O OU UT T1 1 G GA AT TE E1 1 C CL LK K1 1 图图2 2 2 2 可可编编程程定定时时器器 计计数数器器 电电路路图图二二 1 10 02 21 11 10 08 89 9 5 5V V 四 实验原理四 实验原理 8253 具有 3 个独立的计数通道 采用减 1 计数方式 在门控信号有效时 每输入 1 个 计数脉冲 通道作 1 次计数操作 当计数脉冲是已知周期的时钟信号时 计数就成为定时 作计数器时 要求计数的次数可直接作为计数器的初值预置到减 1 计数器中 8253 中各通道可有 6 种可供选择的工作方式 以完成定时 计数或脉冲发生器等多 种功能 本实验用到的是方式 0 计数结束中断 在写入计数值 N 之后的第一个 CLK 的下 降沿将 N 装入计数执行单元 待下一个 CLK 的下降沿到来且门控信号 GATE 为高电平时 通 道开始启动计数 在计数过程中 OUT 一直保持低电平 直到计数达 0 时 OUT 输出由 低电平变为高电平 并且保持高电平 8253 动态分配地址 控制寄存器 0EC03H 计数器 0 地址 0EC00H 计数器 1 地址 0EC01H 第 11 页 共 42 页 五 程序流程图五 程序流程图 开开始始 设设计计数数器器0 0为为工工作作方方式式0 0 显显示示计计数数值值 读读计计数数器器值值 送送计计数数器器初初值值 有有键键按按下下吗吗 结结束束 N N Y Y 开开始始 设设计计数数器器0 0为为工工作作方方式式3 3 向向计计数数器器1 1送送初初值值1 10 00 00 0 先先送送低低字字节节后后送送高高字字节节 设设计计数数器器1 1为为工工作作方方式式3 3 向向计计数数器器0 0送送初初值值1 10 00 00 0 先先送送低低字字节节后后送送高高字字节节 结结束束 可可编编程程定定时时器器 计计数数器器 流流程程图图 10211089 六 源程序六 源程序 1 1 DATA SEGMENT N EQU 0BH 定义计数器初值N 初值N在0到F之内 便于字符显示简单 STRINGDB 0AH 0DH 定义STRING用来换行 0DH回车 0AH换行 是字符 串的结尾标志 DATA ENDS STACK1 SEGMENT STACK DW 100 DUP 0 STACK1 ENDS 第 12 页 共 42 页 CODE SEGMENT ASSUME CS CODE DS DATA SS STACK1 START MOV AX DATA MOV DS AX 8253的初始化 MOV DX 0EC03H 控制寄存器地址0EC03H MOV AL 10H 计数器0 00 只读 写计数器的低字节 01 方式0 000 二进制计数 0 所以控制字写00010000B OUT DX AL 写入控制字 MOV DX 0EC00H 计数器0地址0EC00H MOV AL N OUT DX AL 写入计数初值为N 即0BH 11 MOV CL N 用CL控制计数N次 L00P MOV DX 0EC00H IN AL DX 读取当前数值 CMP AL CL JNE L00P 若AL不等于CL 则继续到L00P循环 DEC CL 更改CL值 单字符输出程序 先转换成 ASIIC MOV DL AL CMP DL 09H 转换为ASIIC 0 9内的数字加30 A到F加37 JLE ADD30 ADD DL 07H A F先加7 下一步再加30 ADD30 ADD DL 30H 第 13 页 共 42 页 MOV AH 02H 02号功能是单字符输出显示 显示计数器当前值 INT 21H MOV DX OFFSET STRING 换行 MOV AH 09H INT 21H CMP CL 0 JNL L00P 循环至CL等于0 即N次 MOV AH 4CH INT 21H CODE ENDS END START 2 2 CODE SEGMENT ASSUME CS CODE START MOV DX 0EC03H 把控制寄存器地址放在DX寄存器中 MOV AL 36H 设置控制字00110110计数器0 方式3 OUT DX AL MOV AX 1000 MOV DX 0EC00H 把计数器0地址放在DX寄存器中 OUT DX AL MOV AL AH OUT DX AL MOV DX 0EC03H 把端口地址放在DX寄存器中 MOV AL 76H 设置控制字01110110 计数器1 方式3 第 14 页 共 42 页 OUT DX AL MOV AX 1000 MOV DX 0EC01H 把端口地址放在DX寄存器中 OUT DX AL MOV AL AH OUT DX AL MOV AH 4CH INT 21H CODE ENDS END START 七 实验总结七 实验总结 经过第一次实验的教训后 我在实验前做了充足的预习工作 已经将程序写好 只需 要在实验室连接外部电路 调试程序即可 因此实验进行得很顺利 这次实验是针对可编 程定时时钟 计数器 8253 8253 有六种工作方式 我在实验中主要用到了 8253 的工作方 式 0 和工作方式 3 此外调用了 02 号功能单字符输出显示 以及 09 号功能输出显示字符 串 我在做宏汇编研究性学习的时候就已经研究过这两个功能的使用方法 所以这次使用 得心应手 要注意的是 执行 02 号功能必须进行 ASSIC 码转换 执行 09 号功能必须在字 符串结尾写一个符号 表示字符串结束 此外 在实验老师的指导下 我进一步熟悉了 调试的方法 之前只会 F8 单步调试 但是在遇到很长的循环程序时 就不能单步调试的 了 通过这次实验我学会了如何使用 F4 让程序进行到任意指定位置 这样就可以跳过循 环继续执行代码 实验三 可编程中断控制器实验三 可编程中断控制器 第 15 页 共 42 页 一 实验目的一 实验目的 通过实验了解中断是计算机系统最重要的工作方式之一 理解中断能实现系统协调工 作 了解中断在操作系统 工业控制中的应用 通过实验可学会可编程中断控制器 8259 的 结构 中断申请 中断响应 中断处理 中断返回等中断原理 掌握中断系统的编程与应 用 1 掌握 PC 机 8259A 可编程中断控制器中断基本原理 2 掌握中断源 中断处理过程 中断向量表的建立 DOS 的使用 3 熟悉主程序 中断服务程序编写 了解中断相应过程 二 实验内容二 实验内容 1 学习 PC 机系统中断原理 2 利用手动产单脉冲作为中断请求信号 要求每按一次开关产生一次中断在屏幕上显 示一次 TPC pci card Interrupt 中断 10 次后程序退出 三 实验原理三 实验原理 1 由于 9054 的驱动程序影响直写 9054 芯片的控制寄存器 中断实验需要在纯 DOS 的环境中才能正常运行 这里指的纯 DOS 环境是指微机启动时按 F8 键进入的 DOS 环境 WINDOWS 重启进入 MSDOS 方式由于系统资源被重新规划过 所以也不能正常实验 2 由于 TPC 卡使用 PCI 总线 所以分配的中断号每台微机可能都不同 编程时需要 了解当前的微机使用那个中断号并进行设置 获取方法请参看汇编程序使用方法的介绍 也可使用自动获取资源分配的程序取得中断号 3 在纯 DOS 环境下 有些微机的 BIOS 设置中有将资源保留给 ISA 总线使用的选项 致使在纯 DOS 环境 WINDOWS 环境下不会出现此问题 下 PCI 总线无法获得系统资源 也就无法做实验 这时需要将此选项修改为使用即插即用 4 在纯 DOS 环境下 有些微机的 BIOS 设置中有使用即插即用操作系统的选项 如果 在使用即插即用操作系统状态下 BIOS 将不会给 TPC 卡分配系统资源 致使在纯 DOS 环 境 WINDOWS 环境下不会出现此问题 下 PCI 总线无法获得系统资源 也就无法做实验 这时需要将此选项修改为不使用即插即用操作系统 5 由于 TPC 卡使用 9054 芯片连接微机 所以在编程使用微机中断前需要使能 9054 的中断功能 代码如下 第 16 页 共 42 页 mov dx ioport cent 68h 设置 tpc 卡中9054芯片io口 使能中断 in ax dx or ax 0900h out dx ax 其中 IOPORT CENT 是 9054 芯片寄存器组的 I O 起始地址 每台微机可能都不同 编程时需要了解当前的微机使用哪段并进行设置 获取方法请参看本书结尾部分的介绍 也可使用自动获取资源分配的程序取得 68H 的偏移是关于中断使能的寄存器地址 设置含义如下 程序退出前还要关闭 9054 的中断 代码如下 mov dx ioport cent 68h 设置 tpc 卡中9054芯片io口 关闭中断 in ax dx and ax 0f7ffh out dx ax 6 PC 机中断控制器 8259 的地址为 20H 21H 编程时要根据中断类型号设置中断矢量 8259 中断屏蔽寄存器 IMR 对应位要清零 允许中断 中断服务结束返回前要使用中断结 束命令 MOV AL 20H OUT 20H AL 中断结束返回 DOS 时应将 IMR 对应位置 1 以关闭中断 四 实验电路四 实验电路 实验电路如图 直接用手动产单脉冲作为中断请求信号 只需连接一根导线 IRQ R11R10 GND 5V 中中断断实实验验电电路路图图 五 流程图五 流程图 第 17 页 共 42 页 开开始始 关关中中断断 设设置置T TP PC C卡卡中中断断使使能能 保保存存原原中中断断向向量量 设设置置新新中中断断向向量量 设设置置中中断断掩掩码码 显显示示提提示示信信息息 开开中中断断 计计数数器器为为0 0 按按任任意意键键 恢恢复复中中断断掩掩码码 恢恢复复中中断断向向量量 设设置置T TP PC C卡卡中中断断关关闭闭 结结束束返返回回 Y Y N N N 中中断断开开始始 关关中中断断 计计数数器器减减1 1 显显示示提提示示信信息息 发发出出E EO OI I结结束束中中断断 开开中中断断 中中断断返返回回 中中断断实实验验 流流程程图图 10211089 五五 源程序源程序 第 18 页 共 42 页 386 以上微机适用 纯 dos 下才能使用 tasm4 1 或以上编译 中断 data segment int vect EQU 073H 中断 0 7 的向量为 08h 0fh 中断 8 15 的向量为 70h 77h irq mask 2 7 equ 11111011b 中断掩码 中断 0 7 时从低至高相应位为零 中断 8 15 时第 2 位为零 irq mask 9 15 equ 11110111b 中断 0 7 时全一 中断 8 15 时从低至高相应位为零 ioport cent equ 0E800h tpc 卡中 9054 芯片的 io 地址 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 stack segment stack db 100 dup stack ends code segment assume cs code ds data ss stack es data start Enable Local Interrupt Input 386 cli 第 19 页 共 42 页 mov ax data mov ds ax mov es ax mov ax stack mov ss ax mov dx ioport cent 68h 设置 tpc 卡中 9054 芯片 io 口 使能中断 in ax dx or ax 0900h out dx ax mov al int vect 调用 35 号功能 保存原中断向量 int vect mov ah 35h int 21h mov ax es mov csreg ax mov ipreg bx ipreg csreg 是旧中断向量保存空间 mov ax seg int proc 调用 25 号功能设置新中断向量 mov ds ax 中断服务程序的的段基址送 DX mov dx offset int proc 中断服务程序的的偏移地址送 DX mov al int vect mov ah 25h int 21h in al 21h 设置中断掩码 and al irq mask 2 7 主片端口地址 21H D2 允许中断 11111011b out 21h al in al 0a1h and al irq mask 9 15 从片端口地址 A1H D3 允许中断 11110111b 第 20 页 共 42 页 out 0a1h al mov ax data mov ds ax mov dx offset msg2 mov ah 09h 09 号功能显示 Press any key to exit int 21h mov dx offset msg3 显示 Press DMC to interrupt 10 times and exit mov ah 09h int 21h mov irq times 0ah sti 允许可屏蔽中断请求进入 loop1 cmp irq times 0 等待中断并判断中断 10 次后退出 jz exit mov ah 1 BIOS 功能调用 int 16h ah 01H 检测字符是否准备好 int 16h ZF 0 表示无字符可接收 ZF 1 表示有字符可接收 jnz exit 按任意键退出 IF 1 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 第 21 页 共 42 页 in al 0a1h or al bl out 0a1h al mov dx ipreg 恢复原中断向量 int vect 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 push ax push dx push ds dec irq times mov ax data Interrupt to do mov ds ax mov dx offset msg1 mov ah 09h int 21h 第 22 页 共 42 页 mov al 20h Send EOI out 0a0h al out 20h al pop ds pop dx pop ax sti 开中断 iret int proc endp code ends end start 六六 实验总结实验总结 这次的实验感觉比较难 首先是中断程序复杂 其次 要在纯 DOS 环境下运行 但是 我们班的人要比其他班的人做得轻松 主要是由于我们在上课的时候老师给演示过 Debug 在 DOS 下的调试方法和步骤 自己也在研究性学习过程中反复运用过 对 DOS 的环境性对 比较熟悉 这次实验重点是要理解中断的概念和熟悉中断中 8352 主片和从片的如何级联工作 具体包括 知道如何查找中断源 确定中断类型 设置 TPC 卡中断使能 调用 35 号功能保 护原中断向量 调用 25 号功能设置新的中断向量 设置中断屏蔽字等诸多内容 虽然老师 已经给了我们程序 但是要在短时间内彻底地读懂全部程序 并透彻的理解每一句代码的 意义还是比较困难的 尤其是使用微机中断前使能 9054 的中断功能这一部分的程序令人费 解 特地请教了老师帮我解惑 通过此次试验 我对整个中断服务流程的理解更加清晰 对 8352 主片和从片的级联工作用以拓展中断源的工作方式有了进一步的认识 第 23 页 共 42 页 实验四实验四 模模 数转换器数转换器 A DC0809A DC0809 一一 实验目的实验目的 通过实验了解计算机能直接处理的通常是数字信号 学会利用 A D 器件把模拟信号转 换成数字信号 学会 A D 芯片如何与计算机连接 掌握有哪些主要参数影响采集的速度和 精度 掌握软件编程实现模拟信号采集 思考如何解决实际多通道数据采集处理问题 思 考数据采集后如何处理等问题 了解模 数转换的基本原理 掌握 ADC0809 的使用方法 1 掌握单通道模拟信号采集到数据处理的方法 2 掌握采集电路和计算机连接的硬件电路 3 熟悉多通道模拟信号采集到数据处理的方法 二二 实验内容实验内容 基本功能 利用 ADC0809 进行单通道电压数据采集 并将采集的电压值在显示器上显示出来 扩展功能 综合实验 利用 ADC0809 进行多通道电压 温度等数据采集 并将采集的电压值在显示器上显 示出来 三三 实验电路实验电路 2 2 1 1 m ms sb b 2 2 2 2 2 2 3 3 2 2 4 4 2 2 5 5 2 2 6 6 2 2 7 7 2 2 8 8 2 21 1 2 20 0 1 19 9 1 18 8 8 8 1 15 5 1 14 4 1 17 7 D D7 7 D D6 6 D D5 5 D D4 4 D D3 3 D D2 2 D D1 1 D D0 0 l ls sb b 2 24 4 2 23 3 2 25 5 7 7 2 22 2 6 6 9 9 A A2 2 A A1 1 A A0 0 E EO OC C 2 2 5 5 3 3 6 6 C CS S I IO OWW 298H 29FH I IO OR R U U8 8 A A U U8 8 B B 7 74 4L LS S0 02 2 1 1 4 4 A AD DD D C C A AD DD D B B A AD DD D A A A AL LE E S ST TA AR RT T E EO OC C E EN NA AB BL LE E r re ef f V VC CC C 5 5V V 1 12 2 1 11 1 1 13 3 1 16 6 G GN ND D1 10 0 2 28 8 2 27 7 G GN ND D r re ef f c cl lo oc ck k I IN NT T 2 2 I IN NT T 1 1 2 26 6 A AD DC C0 08 80 09 9 I IN NT T 0 0 A A D D转转换换器器电电路路图图 10211089 第 24 页 共 42 页 四 参考流程图四 参考流程图 开开始始 启启动动A A D D转转换换 延延时时 读读入入转转换换后后数数据据 将将数数据据右右移移四四位位 调调用用子子程程序序显显示示其其高高四四位位 从从B BL L中中取取出出数数据据和和0 0F FH H相相与与 调调显显示示子子程程序序显显示示其其低低四四位位 所所读读数数据据赋赋给给B BL L 有有按按键键按按下下吗吗 结结束束 开开始始 将将A AL L赋赋给给D DL L D DL L加加7 7 D DL L加加3 30 0H H D DL L大大于于9 9吗吗 显显示示A AS SC C码码为为D DL L的的 字字符符 结结束束 N N Y Y N N Y Y A D转换流程图 五五 实验提示实验提示 ADC0809 的 IN0 口地址为 298H IN1 口地址为 299H 第 25 页 共 42 页 IN0 单极性输入电压与转换后数字的关系为 其中 Ui 为输入电压 UREF 为参考电压 这里的参考电压为 机的 电源 一次 A D 转换的程序可以为 MOV DX 口地址 OUT DX AL 启动转换 延时 IN AL DX 读取转换结果放在 AL 中 六 源程序六 源程序 data segment io0809a equ 0ec18h ADC0809 的 IN0 口地址为 298HADC0809 的 IN0 口地址为 298H io0809aa equ 0ec19h ADC0809 的 IN1 口地址为 298HADC0809 的 IN0 口地址为 299H data ends code segment assume ds data cs code start mov ax data mov ds ax mov ah 01h 从键盘键入一个符号 其 ASCII 码保存在 AL 中 int 21h cmp al 41h 此符号的 ASCII 码与 A 的 ASCII 码进行比较 ja n2 大于 A 进行通道一的数据采集并显示 否则是通道零 n1 是通道 0 的采样程序 n1 mov dx io0809a 启动 A D 转换器 out dx al mov cx 0ffh 等待转换结束 delay loop delay in al dx 从 A D 转换器输入数据 第 26 页 共 42 页 mov bl al mov cl 4 shr al cl 将 AL 右移四位 call disp 调显示子程序显示其高四位 mov al bl and al 0fh call disp 调显示子程序显示其低四位 mov ah 02 mov dl 0ah 回车 int 21h mov dl 0dh 换行 int 21h jmp endend n1 是通道 1 的采样程序 n2 mov dx io0809aa 启动 A D 转换器 out dx al mov cx 0ffh 等待转换结束 delayb loop delayb 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 第 27 页 共 42 页 mov dl 0ah 回车 int 21h mov dl 0dh 换行 int 21h jmp endend endend 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 第 28 页 共 42 页 六六 实验总结 实验总结 这次试验是我第一次尝试着去做拓展试验 之前一直觉得扩展实验都很难 不敢尝试 这次完成基本实验后 时间还很充裕 分析了一下扩展实验的要求后脑中就有了思路 于 是开始尝试着编程 一开始只是将通道零的数据采集程序复制后 将 equ 0ec18h 改成通道 一的地址 equ0ec19h 后插入基本实验的程序 但运行结果两通道的数据在屏幕上快速交替 显示 闪烁不清 我又在两个通道的程序之间加了延时 效果仍不理想 在做宏汇编的研 究性学习时 我写过一个程序 从键盘键入字符选择数据是从大到小还是从小到大排 于 是 我决定也可以这样选择通道零或通道一分别显示采集到的电压值 首先是调用 01 号功 能从键盘键入一个字符 其 ASCII 码保存在 AL 中 此符号的 ASCII 码与 A 的 ASCII 码进行比较 大于 A 进行通道一的数据采集并显示 否则进行通道零的数据采集并显 示 通过这次实现扩展功能 我发现扩展实验其实不像我以前想象的那么难 在扎实掌握 基本知识的基础上 灵活的做一些变动 就可以实现 这让我体会到面对难题 如果你不 愿尝试就一定不会有突破 只要愿意思考 并且举一反三 不断尝试 才会有成功的机遇 第 29 页 共 42 页 五 双机串行通讯五 双机串行通讯 一 实验目的一 实验目的 1 进一步了解串行通信的基本原理 2 掌握串行接口芯片 8250 的工作原理和编程方法 3 熟悉 PC 机串行口的基本连接方法 二 实验内容二 实验内容 1 PC 机 RS 232 串口自发自收 按照 PC 机串口自发自收的连接方法连线 编写 PC 机自发自收串行通信程序 要求 从键盘输入一个字符 将字符通过串口发送出去 再由此串口将字符接收回来并在屏幕上 显示 实现自发自收 2 两台 PC 机间 RS 232 串口通信 按照 PC 机 RS 232 串口直接互连的方法连接两台 PC 机 编写 PC 机直接互连串行通信 程序 要求 由甲机键盘键入字符经串口发送给乙机 再由乙机通过串口接收字符并显示 在屏幕上 当键入感叹号 结束收发过程 三 实验原理三 实验原理 1 本实验为异步通信 以字符为单位进行传送 每传送一个字符 以起始位作为开 始标志 以停止位作为结束标志 异步串行通信的工作过程是 传送开始后 接收设备不断地检测传输线是否有起始位 到来 当接收到一系列的 1 空闲或停止位 之后 检测到第一个 0 说明起始位出 现 就开始接收所规定的数据位 奇偶校验位及停止位 经过接收器处理 将停止位去掉 把数据位拼装成一字节数据 并且经奇偶校验无错误 才算是正确地接收到了一个字符 当一个字符接收完毕 接收设备又继续测试传输线 监视 0 电平的到来 下一个字符的 开始 第 30 页 共 42 页 D D0 0D D1 1 D Dn n 起起始始 位位 数数据据位位 奇奇偶偶 校校验验 位位 帧帧 空空闲闲 位位 空空闲闲位位停停止止位位 2 8250 各部分功能说明 8250 片内有 10 个寄存器 其中有几个是共用地址的 其识别由线路控制寄存器 LCR 的最高位 DLAB 来决定 各寄存器的地址和格式如下所示 0 0 0 0 0 0 0 0 3 3F F8 8H H 2 2F F8 8H H 发发送送端端数数据据寄寄存存器器 0 0 0 0 0 0 0 0 3 3F F8 8H H 2 2F F8 8H H 接接收收端端数数据据寄寄存存器器 1 1 0 0 0 0 0 0 3 3F F8 8H H 2 2F F8 8H H 波波特特率率因因子子寄寄存存器器 低低8 8位位 1 1 0 0 0 0 1 1 3 3F F9 9H H 2 2F F9 9H H 波波特特率率因因子子寄寄存存器器 高高8 8位位 0 0 0 0 0 0 1 1 3 3F F9 9H H 2 2F F9 9H H 中中断断允允许许寄寄存存器器 I IE ER R X X 0 0 1 1 0 0 3 3F FA AH H 2 2F FA AH H 中中断断识识别别寄寄存存器器 I II IR R X X 0 0 1 1 1 1 3 3F FB BH H 2 2F FB BH H 线线路路控控制制寄寄存存器器 L LC CR R X X 1 1 0 0 0 0 3 3F FC CH H 2 2F FC CH H M MO OD DE EM M控控制制寄寄存存器器 M MC CR R X X 1 1 0 0 1 1 3 3F FD DH H 2 2F FD DH H 线线路路状状态态寄寄存存器器 L LS SR R X X 1 1 1 1 0 0 3 3F FE EH H 2 2F FE EH H M MO OD DE EM M状状态态寄寄存存器器 X X 1 1 1 1 1 1 3 3F FF FH H 2 2F FF FH H 保保留留 DLABA2A1A0I O地地址址对对应应寄寄存存器器 8 82 25 50 0 寄寄存存器器地地址址 3 数据发送和接收 数据发送 CPU 数据 数据发送R 时钟控制 发送移位R 并转串 发送端SOUT 插入起始 校验 停止位后发出 数据接收 数据起始位 时钟控制 SIN 数据 移位R 串转并 数据接收RCPU 四 源程序四 源程序 1 1 PCPC 机机 RS 232RS 232 串口自发自收 串口自发自收 DATA SEGMENT 第 31 页 共 42 页 CHLDB 0AH 0DH 换行字符串 DATA ENDS STACK1 SEGMENT STACK DW 100 DUP 0 STACK1 ENDS CODE SEGMENT ASSUME CS CODE DS DATA SS STACK1 START MOV AX DATA MOV DS AX MOV DX 3FBH MOV AL 80H DLAB 1除数寄存器访问允许 OUT DX AL MOV AX 30H 除数N 基准时钟频率 波特率 16 1 8432M 2400 16 48 30H MOV DX 3F8H 写除数低位 OUT DX AL MOV AL AH 写除数高位 INC DX OUT DX AL MOV AL 03H 无校验 0 停止1位 0 八位数据 11 MOV DX 3FBH 线路控制REG OUT DX AL MOV AL 0 屏蔽全部中断 MOV DX 3F9H 中断允许寄存器地址 OUT DX AL 第 32 页 共 42 页 WAIT1 MOV DX 3FDH 读线路状态寄存器 IN AL DX TEST AL 1EH 判断是否有错 终止符 帧格式 奇偶 溢出 JNZ ERROR TEST AL 01H 判断是否收到 JNZ RECEIVE TEST AL 20H 判断发送端是否空 JZ WAIT1 MOV DL 0FFH 六号功能调用读入待发送数据 MOV AH 06H INT 21H JZ WAIT1 MOV DX 3F8H 写发送REG OUT DX AL JMP WAIT1 返回 WAIT1 CHAR PUSH AX MOV DL AL 显示接收 MOV AH 02H INT 21H MOV DX OFFSET CHL 输出字符串换行 MOV AH 09H INT 21H POP AX JMP WAIT1 ERROR MOV DX 3FDH 读线路状态寄存器 第 33 页 共 42 页 IN AL DX MOV DL 对于错误显示 MOV AH 02H INT 21H JMP WAIT1 RECEIVE MOV DX 3F8H IN AL DX 读数据接收寄存器 CMP AL 判断是否结束 JNE CHAR MOV AH 4CH INT 21H CODE ENDS END START 2 两台两台PCPC机间机间RS 232RS 232串口通信 串口通信 1 发送端 CODE SEGMENT ASSUME CS CODE START MOV AL 80H 8250初始化 设DLAB 1 MOV DX 3FBH OUT DX AL MOV AX 30H MOV DX 3F8H OUT DX AL 写入除数低字节 MOV AL AH INC DX OUT DX AL 写入除数高字节 第 34 页 共 42 页 MOV AL 0AH 7位数据 1位停止 奇校验 MOV DX 3FBH OUT DX AL 写入线路控制寄存器 MOV AL 03H 请求发送 数据终端就绪 0000 0011 MOV DX 3FCH OUT DX AL 写入Modem控制寄存器 MOV AL 0 MOV DX 3F9H OUT DX AL 写中断允许寄存器 屏蔽所有中断 WAIT1 MOV DX 3FDH 读线路状态寄存器 IN AL DX TEST AL 1EH 出错否 JNZ ERROR TEST AL 01H 接收数据就绪否 JNZ SEND 发送 TEST AL 20H 发送寄存器空否 不空 返回等待 JZ WAIT1 SEND MOV AH 1 INT 21H 读键盘 CMP AL 21H 是 JZ EXIT 是 返回操作系统 MOV DX 3F8H 不是 则发送 第 35 页 共 42 页 OUT DX AL JMP WAIT1 返回等待 ERROR MOV DX 3FDH 出错则清除线路状态寄存器 IN AL DX MOV DL 显示 MOV AH 02H INT 21H JMP WAIT1 EXIT MOV DX 3F8H OUT DX AL MOV AH 4CH INT 21H CODE ENDS END START 2 接收端 CODE SEGMENT ASSUME CS CODE START MOV AL 80H 8250初始化 MOV DX 3FBH OUT DX AL MOV AX 30H 写除数 MOV DX 3F8H OUT DX AL 写入除数低字节 MOV AL AH 第 36 页 共 42 页 INC DX MOV DX 3F9H OUT DX AL 写入除数高字节 MOV AL 0AH 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 写中断允许寄存器 屏蔽所有中断 WAIT1 MOV DX 3FDH 读线路状态寄

温馨提示

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

评论

0/150

提交评论