




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理与接口技术 实验报告 班班 级:级: 自动化(铁道信号)自动化(铁道信号) 姓姓 名:名: * 学学 号:号: 1121*1121* 授课教师:授课教师: 陈福恩陈福恩 目录目录 1 1. . 实验一实验一 .3 3 2. 2. 实验二实验二 .8 8 3. 3. 实验三实验三 .1313 4. 4. 实验四实验四 .2222 5. 5. 实验五实验五 .2626 6. 6. 实验六实验六 .3333 7. 7.参考文献参考文献.3838 实验一实验一 交通灯控制实验交通灯控制实验 一一. .实验目的实验目的 通过应用接口技术设计十字路口、复杂路口交通灯控制系统,学会应用“微机原理与 接口技术”课程所学的 X86 汇编语言和接口技术掌握可编程并行接口芯片的硬件设计、软 件编程,实现十字路口交通灯的模拟控制并思考计算机如何应用在各种控制系统中。 (1)掌握利用 X86 汇编语言技巧 (2)掌握 X86 微处理器与可编程并行接口芯片 8255A 硬件电路设计 (3)熟悉模拟交通灯控制的实现方法并思考如何应用在实际中。 二二. .实验内容实验内容 设计一个交通控制系统,该控制系统工作后,交通灯按照如下规律变化: (1)南北路口的绿灯、东西路口的红灯同时亮 3 秒左右。 (2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。 (3)南北路口的红、东西路口的绿灯同时亮 3 秒。 (4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。 (5)返回(1)依次循环。 三实验电路三实验电路 如下图,L7、L6、L5 作为南北路口的交通灯与 PC7、PC6、PC5 相连,L2、L1、L0 作为 东西路口的交通灯与 PC2、PC1、PC0 相连。编程使六个灯按交通灯变化规律燃灭。 8255 动态分配地址: 控制寄存器:0EC0BH A 口地址: 0EC08H C 口地址: 0EC0AH 红 黄 绿 红 黄 绿 图图 1-11-1 交通灯实验电路图交通灯实验电路图 四程序流程图四程序流程图 五源程序五源程序 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 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 ;短延时 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 集成开发环境都比较陌生, 也没有事先编写好程序,因此时间很紧张,今后一定要在实验前做好充分的预习工作,现 根据实验指导书上的要求,编写好程序。这个实验主要是用 8255 的定时功能来定时,然后 使用 JZ、JNZ 来实现闪烁和红绿灯转换等功能,运用循环进行延时,实验中还使用了 6 号 功能来实现显示的功能。通过这次实验使我对 8255 的工作原理、定时功能有了进一步的了 解,同时也对汇编的程序结构和调试方法更加熟悉。一开始,程序编译连接都没有错误, 但是有一个红灯一直亮,其他功能均正常,我又去检查程序是否存在逻辑错误,并反调试 运行,都不能解决问题,后来在别人的实验箱上就运行成功了,可靠的硬件保障是实验成 功的首要条件。 实验二实验二 可编程定时器可编程定时器/ /计数器计数器 一实验目的一实验目的 通过实验了解可编程定时器/计数器的本质是计数,学会再设计应用系统中如何用接口 芯片实现计数和定时功能,通过实验思考并比较标准 TTL 集成电路实现计数和可编程定时 器/计数器有什么不同,各有哪些特点?思考计数器可以用哪些场合。 (1)掌握 8253A 与 X86 微机处理硬件连接原理。 (2)掌握 8253A 计数定时应用编程。 (3)熟悉掌握 8253A 在 PC 机系统中典型应用方法并思考如何应用在其他系统中。 二实验内容二实验内容 (1)利用单脉冲发生器作为 8253A 可编程计数定时器时钟信号,实现 N 个脉冲后产生输出 高电平信号。 (2)利用 8253A 可编程计数定时器实现产生 1S 钟定时输出程序设计,输入 1MHZ。 三实验电路三实验电路 1 按图 2.1 虚线连接电路,将计数器 0 设置为方式 0,计数器初值为 N(N0FH) ,用手 动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察 OUT0 电平变化 (当输入 N+1 个脉冲后 OUT0 变高电平) 。 图图 2.12.1 可编程计时器可编程计时器/ /计数器计数器 电路图一电路图一 2 按图 2.2 连接电路图,将计数器 0、计数器 1 分别设置为方式 3,计数初值设为 1000, 用逻辑笔观察 OUT1 输出电平的变化(频率为 1MHz) 。 图图 2.22.2 可编程定时器可编程定时器/ /计数器计数器 电路图二电路图二 四实验原理四实验原理 8253 具有 3 个独立的计数通道,采用减 1 计数方式。在门控信号有效时,每输入 1 个 计数脉冲,通道作 1 次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。 作计数器时, 要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。 8253 中各通道可有 6 种可供选择的工作方式, 以完成定时、计数或脉冲发生器等多 种功能。 方式 0计数结束终端:在写入计数值 N 之后的第一个 CLK 的下降沿将 N 装入计数执行 单元,待下一个 CLK 的下降沿到来且门控信号 GATE 为高电平时,通道开始启动计数。在计 数过程中,OUT 一直保持低电平,直到计数达“0”时,OUT 输出由低电平变为高电平,并 且保持高电平。 方式 3方波发生器:OUT 输出低电平, 装入计数值后,OUT 立即跳变为高电平。如果 当 GATE 为高电平, 则立即开始减“1”计数,OUT 保持为高电平,若 n 为偶数,则当计数 值减到 n/2 时,OUT 跳变为低电平,一直保持到计数值为“0” ,系统才自动重新置入计数 值 n,实现循环计数。这时 OUT 端输出的周期为 nCLKi 周期,占空比为 1:1 的方波序列; 若 n 为奇数, 则 OUTi 端输出周期为 nCLK 周期,占空比为(n+1)/2)/(n-1)/2)的近似 方波序列。 8253 动态分配地址: 控制寄存器: 0EC03H 计数器 0 地址: 0EC00H 计数器 1 地址: 0EC01H CLK0连接时钟: 1MHZ 五程序流程图五程序流程图 图图 2.32.3 可编程定时器可编程定时器/ /计数器计数器 流程图流程图 六源程序六源程序 (1 1) DATA SEGMENT N EQU 0BH ;定义计数器初值N,初值N在0到F之内,便于字符显示简单 STRING DB 0AH,0DH,$ ;定义STRING用来换行,0DH回车,0AH换行,$是字符串 的结尾标志 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 ;*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,09内的数字加30,A到F加37 JLE ADD30 ADD DL,07H ; AF先加7,下一步再加30 ADD30: ADD DL,30H 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) DATA SEGMENT N DB 07H DATA ENDS STACK1 SEGMENT PARA STACK DB 20 DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS: CODE START: MOV AL, 36H ;设置 8253 计数器 0 为工作方式 3,十进制计数 MOV DX,0EC03H OUT DX, AL ;送方式控制字到控制口 MOV DX, 0EC00H MOV AX, 1000 ;计数初值为 1000 OUT DX, AL ;送计数初值的低字节到计数器 0 的端口 MOV AL, AH OUT DX, AL ;送计数初值的高字节到计数器 0 的端口 MOV AL, 76H ;设置 8253 计数器 1 为工作方式 3,十进制计数 MOV DX, 0EC03H OUT DX, AL ;送方式控制字到控制口 MOV DX, 0EC01H MOV AX, 1000 ;计数初值为 1000 OUT DX, AL ;送计数初值的低字节到计数器 1 的端口 MOV AL, AH OUT DX, AL ;送计数初值的高字节到计数器 1 的端口 MOV AH, 4CH ;返回 DOS INT 21H CODE ENDS END START 七实验总结七实验总结 经过第一次实验的教训后,我在实验前做了充足的预习工作,已经将程序写好,只需 要在实验室连接外部电路,调试程序即可,因此实验进行得很顺利。这次实验是针对可编 程定时时钟/计数器(8253) ,8253 有六种工作方式,我在实验中主要用到了 8253 的工作方 式 0 和工作方式 3,此外调用了 02 号功能单字符输出显示,以及 09 号功能输出显示字符 串,我在做宏汇编研究性学习的时候就已经研究过这两个功能的使用方法,所以这次使用 得心应手,要注意的是:执行 02 号功能必须进行 ASSIC 码转换,执行 09 号功能必须在字 符串结尾写一个符号$,表示字符串结束。此外,在实验老师的指导下,我进一步熟悉了 调试的方法,之前只会 F8 单步调试,但是在遇到很长的循环程序时,就不能单步调试的 了,通过这次实验我学会了如何使用 F4 让程序进行到任意指定位置,这样就可以跳过循 环继续执行代码。 实验三、可编程中断控制器实验三、可编程中断控制器 一实验目的一实验目的 通过实验了解中断是计算机系统最重要的工作方式之一,理解中断能实现系统协调工 作,了解中断在操作系统,工业控制中的应用。通过实验可学会可编程中断控制器 8259 的 结构、中断申请、中断响应、中断处理、中断返回等中断原理,掌握中断系统的编程与应 用。 (1)掌握 PC 机 8259A 可编程中断控制器中断基本原理。 (2)掌握中断源、中断处理过程、中断向量表的建立、DOS 的使用。 (3)熟悉主程序、中断服务程序编写,了解中断相应过程 。 二实验内容二实验内容 (1)学习 PC 机系统中断原理 (2)利用手动产单脉冲作为中断请求信号 , 要求每按一次开关产生一次中断在屏幕上显 示一次 “TPC pci card Interrupt” 中断 10 次后程序退出。 三实验原理三实验原理 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之间级连对外可以提供16个中断源 中断源 中断类型号 中断功能 IRQ8 070H 实时时钟 IRQ9 071H 用户中断 IRQ10 072H 保留 IRQ11 O73H 保留 IRQ12 074H 保留 IRQ13 075H 协处理器 IRQ14 076H 硬盘 IRQ15 077H 保留 PCI总线中的中断线只有四根 INTA# INTB# INTC# INTD# 它们需要通过P设置 tpc 卡中9054芯片io口,使能中断 in ax,dx or ax,0900h out dx,ax 其中 IOPORT_CENT 是 9054 芯片寄存器组的 I/O 起始地址,每台微机可能都不同, 编程时需要了解当前的微机使用哪段并进行设置,获取方法请参看本书结尾部分的介绍。 (也可使用自动获取资源分配的程序取得) ,+68H 的偏移是关于中断使能的寄存器地址, 设置含义如下: 设置 INTCSR(68H)寄存器 中断模式设置 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 out dx,ax 6. PC 机中断控制器 8259 的地址为 20H、21H,编程时要根据中断类型号设置中断矢量, 8259 中断屏蔽寄存器 IMR 对应位要清零(允许中断) ,中断服务结束返回前要使用中断结 束命令: MOV AL,20H OUT 20H,AL 中断结束返回 DOS 时应将 IMR 对应位置 1,以关闭中断 。 五实验电路五实验电路 实验电路如图,直接用手动产单脉冲作为中断请求信号,只需连接一根导线。 图图 3.13.1 中断实验电路图中断实验电路图 六流程图六流程图 图图 3.23.2 中断实验流程图中断实验流程图 五五. .源程序源程序 ;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 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 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 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 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 环境下运行。 这次实验重点是要理解中断的概念和熟悉中断中 8352 主片和从片的如何级联工作, 具体包括:知道如何查找中断源、确定中断类型,设置 TPC 卡中断使能、调用 35 号功能保 护原中断向量、调用 25 号功能设置新的中断向量,设置中断屏蔽字等诸多内容。虽然老师 已经给了我们程序,但是要在短时间内彻底地读懂全部程序,并透彻的理解每一句代码的 意义还是比较困难的,尤其是使用微机中断前使能 9054 的中断功能这一部分的程序令人费 解,特地请教了老师帮我解惑。通过此次试验。我对整个中断服务流程的理解更加清晰, 对 8352 主片和从片的级联工作用以拓展中断源的工作方式有了进一步的认识。 实验四实验四 模模/ /数转换器数转换器 A/DC0809A/DC0809 一一. .实验目的实验目的 通过实验了解计算机能直接处理的通常是数字信号,学会利用 A/D 器件把模拟信号转 换成数字信号,学会 A/D 芯片如何与计算机连接,掌握有哪些主要参数影响采集的速度和 精度,掌握软件编程实现模拟信号采集,思考如何解决实际多通道数据采集处理问题,思 考数据采集后如何处理等问题,了解模/数转换的基本原理,掌握 ADC0809 的使用方法。 (1)掌握单通道模拟信号采集到数据处理的方法。 (2)掌握采集电路和计算机连接的硬件电路。 (3)熟悉多通道模拟信号采集到数据处理的方法。 二二. .实验内容实验内容 实验电路原理图如图4.1。通过实验台左下角电位器RW1输出05直流电压送入 ADC0809通道0(IN0), 编程采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制 数) 三实验电路三实验电路 图图 4.14.1 模数转换电路模数转换电路 四参考流程图四参考流程图 图图 4.2 A/D 转换流程图转换流程图 五五, ,实验提示实验提示 、ADC0809 的 IN0 口地址为 298H,IN1 口地址为 299H。 、IN0 单极性输入电压与转换后数字的关系为: 其中 Ui 为输入电压,UREF 为参考电压,这里的参考电压为机的电源。 、一次 A/D 转换的程序可以为 MOV DX,口地址 ;启动转换 OUT DX,AL ;延时 IN AL,DX ;读取转换结果放在 AL 中 六源程序六源程序 CODE SEGMENT ASSUME CS:CODE START: MOV AL,0 MOV DX,0EC18H ;IN0 口动态地址 OUT DX,AL ;启动 MOV DX,0FFFH MOV CX,0 DELATE:LOOP DELATE DEC DX JNZ DELATE ;延时 WP: MOV DX,0EC18H IN AL,DX ;读 IN0 口 MOV DL,AL MOV CL,4 SHR DL,CL ;右移 4 位 CMP DL,9 JG BIG ADD DL,30H ;ASCII 显示 09,并显示 MOV AH,06H INT 21H JMP NEXT BIG: ADD DL,37H ;ASCII 码 AF,并显示 MOV AH,06H INT 21H JMP NEXT NEXT: MOV DX,0EC18H ;读 IN0 口 IN AL,DX MOV DL,AL AND DL,00001111B ;屏蔽高 4 位 CMP DL,9 JG BIGS ADD DL,30H ;ASCII 显示 09,并显示 MOV AH,06H INT 21H JMP JUDGE BIGS: ADD DL,37H ;ASCII 码 AF,并显示 MOV AH,06H INT 21H JMP JUDGE JUDGE: MOV DL,0DH ;加回车符,只显示一个两位数字 INT 21H MOV DL,0FFH MOV AH,06H INT 21H JZ START ;有键按下返回 DOS MOV AH,4CH INT 21H CODE ENDS END START 七实验总结七实验总结 这次试验之前我也同样进行了预习,了解了模/数转换的基本原理,掌握 ADC0809 的 使用方法。在将 IN0 口的输入电压显示在屏幕上时,通过实验台左下角电位器 RW1 输出 05V 直流电压送入 ADC0809 通道 0,调节电位器的阻值,屏幕上显示的数字随着电阻值 的变化而变化,不需要按 enter 键换行,通过和老师的交流,才明白过来,这是因为程序的 JUDGE 段加了回车符,只显示一个两位数字,所以不需要按 enter 键进行换行,直接改变 电阻值,即可显示出相应的输入电压值。 通过这几次的实验,我发现微机实验其实很简单,在扎实掌握基本知识的基础上,灵 活的做一些变动,就可以实现,这让我体会到面对难题,如果你不愿尝试就一定不会有突 破,只要愿意思考,并且举一反三,不断尝试,才会有成功的机遇。 五、五、PCPC 机串行通讯实验机串行通讯实验 一、实验目的一、实验目的 1、 进一步了解串行通信的基本原理。 2、 掌握串行接口芯片 8250 的工作原理和编程方法。 3、 熟悉 PC 机串行口的基本连接方法 二、实验内容二、实验内容 1、PC 机 RS-232 串口自发自收。 按照 PC 机串口自发自收的连接方法连线。编写 PC 机自发自收串行通信程序,要求: 从键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上 显示,实现自发自收。 2、 两台 PC 机间 RS-232 串口通信。 按照 PC 机 RS-232 串口直接互连的方法连接两台 PC 机。 编写 PC 机直接互连串行通信 程序;要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示 在屏幕上。当键入感叹号“!” ,结束收发过程。 图 5-1 DB-9 连接器 图 5-2 双机近距离通信连接图 三、实验原理三、实验原理 (1)本实验为异步通信:以字符为单位进行传送,每传送一个字符,以起始位作为开 始标志,以停止位作为结束标志。 异步串行通信的工作过程是:传送开始后,接收设备不断地检测传输线是否有起始位 到来,当接收到一系列的“1” (空闲或停止位)之后,检测到第一个“0” ,说明起始位出 现,就开始接收所规定的数据位、奇偶校验位及停止位。经过接收器处理,将停止位去掉, 把数据位拼装成一字节数据,并且经奇偶校验无错误,才算是正确地接收到了一个字符。 当一个字符接收完毕,接收设备又继续测试传输线,监视“0”电平的到来(下一个字符的 开始) 。 D0 D1 Dn 空闲位 数据位 奇 偶 校 验 位 停 止 位 帧 起 始 位 空闲位 (2)8250 各部分功能说明 8250 片内有 10 个寄存器,其中有几个是共用地址的,其识别由线路控制寄存器 (LCR)的最高位 DLAB 来决定。各寄存器的地址和格式如下所示: (3)数据发送和接收: 数据发送:CPU 数据 数据发送R 时钟控制 发送移位R 并转串 发送端SOUT (插入起始、校验、停止位后发出) 数据接收:数据起始位 时钟控制 SIN 数据 移位R 串转并 数据接收RCPU 四源程序四源程序 1 1PCPC 机机 RS-232RS-232 串口自发自收。串口自发自收。 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,00001010B;7 位数据,1 位停止,奇校验 MOV DX,3FBH OUT DX,AL;写入线路控制寄存器 MOV AL,00010000B;自检控制 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;出错,转 ERROR TEST AL,00000001B;接收数据就绪否 JNZ RECEIVE;就绪,转接受 TEST AL,00100000B;发送寄存器空否,不空,返回等待 JZ WAIT_FOR MOV AH,1 INT 21H;读键盘 MOV DX,3F8H;发送 OUT DX,AL JMP WAIT_FOR;返回等待 RECEIVE: PUSH CX PUSH AX MOV CX,02000H T1: MOV AX,0FFFFH T2: DEC AX JNZ T2 LOOP T1 ;延时程序 MOV DX,3F8H;读接收数据 IN AL,DX AND AL,01111111B;保留 7 位数据 CMP AL,03H;是 Ctrl+C? JNZ CHAR MOV AH,4CH;返回 DOS INT 21H CHAR: PUSH AX MOV DL,AL MOV AH,2H;显示接收字符 INT 21H POP AX JMP WAIT_FOR;返回等待 ERROR: MOV DX,3FDH;出错则清除线路状态寄存器 IN AL,DX MOV DL,?;显示? MOV AH,02H INT 21H JMP WAIT_FOR CODE ENDS END START 2. 两台两台PCPC机间机间RS-232RS-232串口通信。串口通信。 (1 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 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)(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 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;显示接收字符 INT 21H POP AX JMP WAIT_FOR;返回等待 CODE ENDS END START 5 5实验总结实验总结 在这次实验中,PC机RS-232串口自发自收实验进行得比较顺利,但是在两台PC机间RS- 232串口通信时,遇到了问题:实验题目要求从键盘输入“!”时,结束双机通信,可是我 作为发送端可以在输入感叹号时立即结束通信并返回DOS,而
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年热切割技术实操考试题库及答案参考
- 2025年村级养老驿站营养知识考试模拟题及答案
- 2025年入门指南与模拟试题软件开发者面试准备全攻略
- 2025年地理信息系统GIS初级工程师模拟题及解析
- 制作课件一的教学反思
- 7的分成减法教学课件
- 2025年初级律师助理面试必-备题库及解析
- 2025年安徽省安庆市大观区中考化学临考模拟试卷-
- 2025年物资储备管理局招聘考试必-备知识点梳理
- 2025年初级国际贸易实务模拟题解析
- 住所经营场所使用证明
- 联想AIO超融合解决方案
- 锡焊机理与焊点可靠性分析
- 北京市工业污染行业生产工艺调整退出及设备淘汰目录(2022年版)
- 3.盖立春-课堂教学行为研究的“元问题”研究
- 机电工程施工监理管理、检验和交工评定用表
- LY/T 2692-2016榉树育苗技术规程
- GB/T 33982-2017分布式电源并网继电保护技术规范
- 光电及光化学转化原理与应用电化学全册配套课件
- 压力性损伤预防及处理课件
- 【2020】高中英语人教版必修一词汇 词性转换
评论
0/150
提交评论