微机原理与接口技术-北京交大-微机实验报告.docx
微机原理与接口技术实验报告班级:通信xxxx姓名:xxxx学号:lxxxxx授课教师:xxxx老师目录1. 实验一 32. 实验二 93. 实验三 154. 实验四 235. 实验五 296. 实验六38实验一交通灯控制实验一. 实验目的通过应用接口技术设计十字路口、复杂路口交通灯控制系统,学会应用“微机原理与接 口技术”课程所学的X86汇编语言和接口技术掌握可编程并行接口芯片的硬件设计、软件编 程,实现十字路口交通灯的模拟控制并思考计算机如何应用在各种控制系统中。(1)掌握利用X86汇编语言技巧(2)掌握X86微处理器与可编程并行接口芯片8255A硬件电路设计(3)熟悉模拟交通灯控制的实现方法并思考如何应用在实际中。二. 实验内容1. 基本功能:设计一个交通控制系统,该控制系统工作后,交通灯按照如下规律变化:(1)南北路口的绿灯、东西路口的红灯同时亮3秒左右。(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。(3)南北路口的红、东西路口的绿灯同时亮3秒。(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。(5)返回(1)依次循环。2. 思考扩展功能:(1)如遇到特殊情况,可拨动应急开关,使各项均为红灯,特殊车辆不受红灯限制,使其 顺利通过后拨动另一个开关,系统返回继续运行(2)用LED应倒计时方式显示各路口灯亮时间(3)对于多路口联网应该如何设计。三. 实验电路如下图,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为 东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律燃灭。8255动态分配地址:控制寄存器:0EC0BHA 口地址: 0EC08H288H-28FHL7 L6 L5PC7 PC6 PC5CS8255交通灯实验电路图L2 L1PC2 PC1四.程序流程图(返回DOS交通灯控制流程图绿L0PC010211089五. 源程序CODE SEGMENTASSUME CS:CODE ;* 工作状态控制字设置START: MOV DX,0EC0BH;写控制端口,地址0EC0BHMOV AL,10010000B;ca方式0输出OUT DX,AL;*南北路口绿灯亮,东西路口红灯亮FIRST: MOV DX,0EC0AH;写?。口,地址 0EC0AHMOV AL,00100100B;南北绿,东西红,PC口写00100100OUT DX,AL两层嵌套实现长延时MOV CX,0;外层循环送入初值65536MOV AX,2000H;内层循环送入初值2000HDELAY1:DEC AXJNZ DELAY1LOOP DELAY1;*南北路口黄灯闪烁,东西路口红灯亮MOV BL,5;BL控制黄灯亮的次数5次SECOND:MOV DX,0EC0AHMOV AL,01000100B;南北黄,东西红OUT DX,ALMOV CX,3000HMOV AX,0100HLI1:DEC AXMOV DX,0EC0AHMOV AL,00000100BOUT DX,ALMOV CX,3000HMOV AX,0100HWEN1:DEC AXJNZ WEN1LOOP WEN1DEC BLJNZ SECOND;短延时;南北路口黄灯先灭;短延时;南北路口黄灯再亮南北路口红灯亮,东西路口绿灯亮;写入。口;南北红,东西绿;长延时;控制黄灯亮的次数;写入。口;南北红,东西黄“ ;*个个个个个个个个个个;THIRD: MOV DX,0EC0AHMOV AL,10000001BOUT DX,ALMOV CX,0MOV AX,2000HDELAY2:DEC AXJNZ DELAY2LOOP DELAY2MOV BL,4FORTH: MOV DX,0EC0AHMOV AL,10000010BOUT DX,ALMOV CX,3000HMOV AX,0100HLI2:DEC AX;短延时LOOP LI2;*南北路口红灯亮,东西路口黄灯闪烁MOV DX,0EC0AHMOV AL,10000000BOUT DX,AL;东西路口黄灯先灭MOV CX,3000HMOV AX,0100HWEN2:DEC AXJNZ WEN2LOOP WEN2DEC BLJNZ FORTH;东西路口黄灯再亮MOV DL,0FFH;*检测是否有键按下,调用6号功能MOV AH,06H;执行键盘输入操作INT 21HJZ FIRSTMOV AH,4CHINT 21H;返回操作系统CODE ENDSEND START六. 实验总结这是我们的首个微机原理实验,而且我们班是第一批做实验的,没有丝毫经验,对实验 箱以及TPC-2003集成开发环境都比较陌生,也没有事先编写好程序,因此时间很紧张,今 后一定要在实验前做好充分的预习工作,现根据实验指导书上的要求,编写好程序。这个实 验主要是用8255的定时功能来定时,然后使用JZ、JNZ来实现闪烁和红绿灯转换等功能, 运用循环进行延时,实验中还使用了 6号功能来实现显示的功能。通过这次实验使我对8255 的工作原理、定时功能有了进一步的了解,同时也对汇编的程序结构和调试方法更加熟悉。 一开始,程序编译连接都没有错误,但是有一个红灯一直亮,其他功能均正常,我又去检查 程序是否存在逻辑错误,并反调试运行,都不能解决问题,后来在别人的实验箱上就运行成 功了,可靠的硬件保障是实验成功的首要条件。10211089实验二可编程定时器/计数器一. 实验目的通过实验了解可编程定时器/计数器的本质是计数,学会再设计应用系统中如何用接口 芯片实现计数和定时功能,通过实验思考并比较标准TTL集成电路实现计数和可编程定时器 /计数器有什么不同,各有哪些特点?思考计数器可以用哪些场合。(1)掌握8253A与X86微机处理硬件连接原理。(2)掌握8253A计数定时应用编程。(3)熟悉掌握8253A在PC机系统中典型应用方法并思考如何应用在其他系统中。二. 实验内容(1)利用单脉冲发生器作为8253A可编程计数定时器时钟信号,实现N个脉冲后产生输出高电平信号。(2)利用8253A可编程计数定时器实现产生1S钟定时输出程序设计,输入1MHZ。三. 实验电路图2.1可编程定时器/计数器电路图一1. 按图2.1虚线连接电路,将计数器0设置为方式0,计数器初值为N (NW0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。2. 按图2.2连接电路图,将计数器0、计数器1分别设置为方式3,计数初值设为1000, 用逻辑笔观察OUT1输出电平的变化(频率为1MHz)。280H-OUT1 GATE1 CS CLK1U5 8253OUT0GATE0CLK05V0 5Vjultlil10211089图2.2可编程定时器/计数器电路图二四.实验原理8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个 计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。 作计数器时,要求计数的次数可直接作为计数器的初值预置到减“ 1”计数器中。8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种 功能。本实验用到的是方式0计数结束中断。在写入计数值N之后的第一个CLK的下降沿 将N装入计数执行单元,待下一个CLK的下降沿到来且门控信号GATE为高电平时,通道开 始启动计数。在计数过程中,OUT 一直保持低电平,直到计数达“0”时,OUT输出由低电平 变为高电平,并且保持高电平。8253动态分配地址:控制寄存器:0EC03H计数器0地址:0EC00H计数器1地址:0EC01H五.程序流程图10211089可编程定时器/计数器流程图六.源程序(1)DATA SEGMENTN EQU 0BH;定义计数器初值N,初值N在0到F之内,便于字符显示简单STRING DB 0AH,0DH,'$'定义STRING用来换行,0DH回车,0AH换行,$是字符串的结尾标志DATA ENDSSTACK1 SEGMENT STACKDW 100 DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AX*8253的初始化“*,MOV DX,0EC03H ;控制寄存器地址0 EC03HMOV AL,10H;计数器0: 00,只读/写计数器的低字节:01,方式0: 000, ;二进制计数:0,所以控制字写00010000BOUT DX,AL;写入控制字MOV DX,0EC00H ;计数器 0 地址 0 EC00HMOV AL,NOUT DX,AL;写入计数初值为N,即0BH,11MOV CL,N ;用。1控制计数N次L00P: MOV DX,0EC00HIN AL,DX ;读取当前数值CMP AL,CLJNE L00P;若人1不等于CL,则继续到L 00P循环DEC CL;更改CL值ASIICMOV DL,ALCMP DL,09HJLE ADD30ADD DL,07H;*单字符输出程序,先转换成;转换为ASIIC,09内的数字加30, A到F加37;AF先加7,下一步再加30ADD30: ADD DL,30HMOV AH,02H;02号功能是单字符输出显示,显示计数器当前值INT 21H“ 个个个*个*;MOV DX,OFFSET STRING ;换行MOV AH,09H;,INT 21HCMP CL,0JNL L00P;循环至CL等于0,即N次MOV AH,4CHINT 21HCODE ENDSEND START(2)CODE SEGMENT ;ASSUME CS:CODE ;START:MOV DX,0EC03H ;把控制寄存器地址放在DX寄存器中MOV AL,36H ;设置控制字00110110计数器0,方式3OUT DX,AL ;MOV AX,1000 ;MOV DX,0EC00H ;把计数器0地址放在DX寄存器中OUT DX,AL;MOV AL,AH;OUT DX,ALMOV DX,0EC03H ;把端口地址放在DX寄存器中MOV AL,76H ;设置控制字01110110 (计数器1,方式3)OUT DX,AL ;MOV AX,1000MOV DX,0EC01H ;把端口地址放在DX寄存器中OUT DX,ALMOV AL,AHOUT DX,ALMOV AH,4CHINT 21HCODE ENDSEND 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次后程序退出。三. 实验原理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的中断功能,代码如下:mov dx,ioport_cent+68h ;设置 tpc 卡中9054芯片io口,使能中断 in ax,dxor ax,0900hout dx,ax其中IOPORT_CENT是9054芯片寄存器组的I/O起始地址,每台微机可能都不同,编 程时需要了解当前的微机使用哪段并进行设置,获取方法请参看本书结尾部分的介绍。(也 可使用自动获取资源分配的程序取得),+68H的偏移是关于中断使能的寄存器地址,设置含 义如下:程序退出前还要关闭9054的中断,代码如下:mov dx,ioport_cent+68h ;设置 tpc 卡中9054芯片io 口,关闭中断 in ax,dxand ax,0f7ffhout dx,ax6. PC机中断控制器8259的地址为20H、21H,编程时要根据中断类型号设置中断矢量, 8259中断屏蔽寄存器IMR对应位要清零(允许中断),中断服务结束返回前要使用中断结 束命令:MOV AL,20HOUT 20H,AL中断结束返回DOS时应将IMR对应位置1,以关闭中断。四.实验电路实验电路如图,直接用手动产单脉冲作为中断请求信号,只需连接一根导线。中断实验电路图五.流程图户 计数器为0.中断开始V搭A Y恢复中断掩码恢复中断向量设置TPC卡中断美町10211089结束返回 中断实验流程图五.源程序;386以上微机适用;纯dos下才能使用;tasm4.1或以上编译 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* ;*;*中断*; *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* .个个个个个个个个个个个个个个个个个个个个个;data segmentint_vect EQU 073H中断0-7的向量为:08h-0fh,中断8-15的向量为:70h-77hirq_mask_2_7 equ 11111011b;中断掩码,中断0-7时从低至高相应位为零,中断8-15irq_mask_9_ioport_centcsregdwipregdwirq_timesmsg1dbmsg2dbmsg3db时第2位为零data ends15 equ 11110111bequ 0E800h ;tpcdw;中断0-7时全一,中断8-15时从低至高相应位为零卡中9054芯片的io地址;旧中断向量保存空间00h;中断计数0dh,0ah,'TPC pci card Interrupt',0dh,0ah,'$'0dh,0ah,'Press any key to exit!',0dh,0ah,'$'0dh,0ah,'Press DMC to interrupt 10 times and exit!',0dh,0ah,'$'stack segmentstackdb 100 dup (?) stack ends code segmentassume cs:code,ds:data,ss:stack,es:data start: ;Enable Local Interrupt Input .386climov ax,datamov ds,axmov es,axmov ax,stackmov ss,ax mov dx,ioport_cent+68h ;设置 tpc 卡中 9054 芯片 io 口,使能中断 in ax,dxor ax,0900hout dx,axmov al,int_vect;调用35号功能,保存原中断向量int_vectmov ah,35hint 21hmov ax,esmov csreg,axmov ipreg,bx;ipreg csreg是旧中断向量保存空间mov ax,seg int_proc;调用25号功能设置新中断向量mov ds,ax;中断服务程序的的段基址送DXmov dx,offset int_proc;中断服务程序的的偏移地址送DXmov al,int_vectmov ah,25hint 21hinal, 21h;设置中断掩码andal, irq_mask_2_7;主片端口地址21H,D2允许中断11111011bout21h, alinal, 0a1handal, irq_mask_9_15;从片端口地址A1H,D3允许中断11110111bout0a1h, almov ax,datamov ds,axmov dx,offset msg2mov ah,09h;09 号功能显示'Press any key to exit!,int 21hmov dx,offset msg3;显示'Press DMC to interrupt 10 times andexit!,mov ah,09hint 21hmov irq_times,0ahsti;允许可屏蔽中断请求进入loopl:cmp irq_times,0;等待中断并判断中断10次后退出jz exitmov ah,1;BIOS功能调用int 16h ah=01H检测字符是否准备好int 16h;ZF-0,表示无字符可接收,ZF-1,表示有字符可接收jnz exit;按任意键退出IF-1jmp looplexit:climovbl, irq_mask_2_7;恢复中断掩码notblinal,21horal,blout21h, almovbl,irq_mask_9_15notblinal, 0a1horal, blout0a1h, almov dx,ipregmov ax,csregmov ds,axmov ah,25hmov al,int_vectint 21hmov dx,ioport_cent+68hin ax,dxand ax,0f7ffhout dx,axmov ax,4c00hint 21hint_proc proc farpush axpush dxpush dsdec irq_timesmov ax,datamov ds,axmov dx,offset msg1mov ah,09h;恢复原中断向量int_vect;设置tpc卡中9054芯片io;返回操作系统Interrupt to do口,关闭中断mov al,20h;Send EOIout 0a0h,alout 20h,alpop dspop dxpop axsti;开中断iretint_proc endpcode endsend start六.实验总结这次的实验感觉比较难,首先是中断程序复杂,其次,要在纯DOS环境下运行,但是 我们班的人要比其他班的人做得轻松,主要是由于我们在上课的时候老师给演示过Debug 在DOS下的调试方法和步骤,自己也在研究性学习过程中反复运用过,对DOS的环境性对比 较熟悉。这次实验重点是要理解中断的概念和熟悉中断中8352主片和从片的如何级联工作,具 体包括:知道如何查找中断源、确定中断类型,设置TPC卡中断使能、调用35号功能保护 原中断向量、调用25号功能设置新的中断向量,设置中断屏蔽字等诸多内容。虽然老师已 经给了我们程序,但是要在短时间内彻底地读懂全部程序,并透彻的理解每一句代码的意义 还是比较困难的,尤其是使用微机中断前使能9054的中断功能这一部分的程序令人费解, 特地请教了老师帮我解惑。通过此次试验。我对整个中断服务流程的理解更加清晰,对8352 主片和从片的级联工作用以拓展中断源的工作方式有了进一步的认识。实验四模/数转换器A/DC0所一. 实验目的通过实验了解计算机能直接处理的通常是数字信号,学会利用A/D器件把模拟信号转 换成数字信号,学会A/D芯片如何与计算机连接,掌握有哪些主要参数影响采集的速度和 精度,掌握软件编程实现模拟信号采集,思考如何解决实际多通道数据采集处理问题,思考 数据采集后如何处理等问题,了解模/数转换的基本原理,掌握ADC0809的使用方法。(1)掌握单通道模拟信号采集到数据处理的方法。(2)掌握采集电路和计算机连接的硬件电路。(3)熟悉多通道模拟信号采集到数据处理的方法。二. 实验内容1、基本功能利用ADC0809进行单通道电压数据采集,并将采集的电压值在显示器上显示出来。2、扩展功能(综合实验)利用ADC0809进行多通道电压、温度等数据采集,并将采集的电压值在显示器上显示 出来。三. 实验电路298H29FHA/D转换器电路图10211089四.参考流程图A/D转换流程图五,实验提示1、ADC0809 的 IN0 口地址为 298H, IN1 口地址为 299H。2、IN0单极性输入电压与转换后数字的关系为:"5 32其中Ui为输入电压,UREF为参考电压,这里的参考电压为PC机的+5V电源。3、一次A/D转换的程序可以为MOV DX, 口地址OUT DX,AL ;启动转换;延时IN AL,DX ;读取转换结果放在AL中六.源程序data segmentio0809a equ 0ec18h ;ADC0809 的 IN0 口地址为 298HADC0809 的 IN0 口地址为 298H io0809aa equ 0ec19h ;ADC0809 的 IN1 口地址为 298HADC0809 的 IN0 口地址为 299H data endscode segmentassume ds:data,cs:codestart:mov ax,datamov ds,axmov ah,01h ;从键盘键入一个符号,其ASCII码保存在AL中int 21hcmp al,41h;此符号的ASCII码与'A的ASCII码进行比较ja n2;大于 A',进行通道一的数据采集并显示,否则是通道零;*n1 是通道 0 的采样程序n1: mov dx,io0809a ;启动 A/D 转换器out dx,almov cx,0ffh ;等待转换结束delay:loop delayin al,dx ;从A/D转换器输入数据mov bl,al ;mov cl,4shr al,cl ;将AL右移四位call disp ;调显示子程序显示其高四位mov al,bland al,0fhcall disp ;调显示子程序显示其低四位mov ah,02mov dl,0ah ;回车int 21hmov dl,0dh ;换行int 21hjmp endend;*n1 是通道 1 的采样程序n2: mov dx,io0809aa ;启动 A/D 转换器out dx,almov cx,0ffh ;等待转换结束delayb:loop delaybin al,dx ;从A/D转换器输入数据mov bl,al ;将 AL 保存到 BLmov cl,4shr al,cl ;将AL右移四位call disp ;调显示子程序显示其高四位mov al,bland al,0fhcall disp ;调显示子程序显示其低四位mov ah,02mov dl,0ah ;回车int 21hmov dl,0dh ;换行int 21hjmp endendendend: push dxmov ah,06h ;判断是否有键按下mov dl,0ffhint 21hpop dxje start ;若没有转 STARTmov ah,4ch ;退出int 21hdisp proc near ;显示子程序mov dl,alcmp dl,9 ;比较DL是否9jle ddd ;若不大于则为'0'-'9',加30h为其ASCII码add dl,7 ;否则为'A'-'F',再加 7ddd: add dl,30h ;显示mov ah,02int 21hretdisp endpcode endsend start六、实验总结这次试验是我第一次尝试着去做拓展试验,之前一直觉得扩展实验都很难,不敢尝试, 这次完成基本实验后,时间还很充裕,分析了一下扩展实验的要求后脑中就有了思路,于是 开始尝试着编程,一开始只是将通道零的数据采集程序复制后,将equ 0ec18h改成通道一 的地址equ0ec19h后插入基本实验的程序,但运行结果两通道的数据在屏幕上快速交替显 示,闪烁不清,我又在两个通道的程序之间加了延时,效果仍不理想。在做宏汇编的研究性 学习时,我写过一个程序,从键盘键入字符选择数据是从大到小还是从小到大排,于是,我 决定也可以这样选择通道零或通道一分别显示采集到的电压值。首先是调用01号功能从键 盘键入一个字符,其ASCII码保存在AL中,此符号的ASCII码与 A的ASCII码进行比 较,大于 A,进行通道一的数据采集并显示,否则进行通道零的数据采集并显示。通过这次实现扩展功能,我发现扩展实验其实不像我以前想象的那么难,在扎实掌握 基本知识的基础上,灵活的做一些变动,就可以实现,这让我体会到面对难题,如果你不愿 尝试就一定不会有突破,只要愿意思考,并且举一反三,不断尝试,才会有成功的机遇。五、双机串行通讯一、实验目的1、进一步了解串行通信的基本原理。2、掌握串行接口芯片8250的工作原理和编程方法。3、熟悉PC机串行口的基本连接方法二、实验内容1、PC机RS-232串口自发自收。按照PC机串口自发自收的连接方法连线。编写PC机自发自收串行通信程序,要求:从 键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示, 实现自发自收。2、两台PC机间RS-232串口通信。按照PC机RS-232串口直接互连的方法连接两台PC机。编写PC机直接互连串行通信 程序;要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示在 屏幕上。当键入感叹号“!”,结束收发过程。三、实验原理(1)本实验为异步通信:以字符为单位进行传送,每传送一个字符,以起始位作为开 始标志,以停止位作为结束标志。异步串行通信的工作过程是:传送开始后,接收设备不断地检测传输线是否有起始位到 来,当接收到一系列的“1”(空闲或停止位)之后,检测到第一个“0”,说明起始位出现, 就开始接收所规定的数据位、奇偶校验位及停止位。经过接收器处理,将停止位去掉,把数 据位拼装成一字节数据,并且经奇偶校验无错误,才算是正确地接收到了一个字符。当一个 字符接收完毕,接收设备又继续测试传输线,监视“0”电平的到来(下一个字符的开始)。D0 D1 Dn(2)8250各部分功能说明8250片内有10个寄存器,其中有几个是共用地址的,其识别由线路控制寄存器LCR)的最高位DLAB来决定。各寄存器的地址和格式如下所示:8250寄存器地址DLABA2A1A0I/O地址对应寄存器00003F8H(2F8H)发送端数据寄存器00003F8H(2F8H)接收端数据寄存器10003F8H(2F8H)波特率因子寄存器(低8位)10013F9H(2F9H)波特率因子寄存器(高8位)00013F9H(2F9H)中断允许寄存器(IER)X0103FAH(2FAH)中所识别寄存器 (IIR)X0113FBH(2FBH)线路控制寄存器(LCR)X1003FCH(2FCH)MODEM控制寄存器(MCR)X1013FDH(2FDH)线路状态寄存器(LSR)X1103FEH(2FEH)MODEM状态寄存器X1113FFH(2FFH)保留(3)数据发送和接收:数据发送:(插入起始、校验、停止位后发出)数据接收:四. 源程序1. PC机RS-232串口自发自收。DATA SEGMENTCHL DB 0AH,0DH,'$'换行字符串DATA ENDSSTACK1 SEGMENT STACKDW 100 DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXMOV DX,3FBH ;MOV AL,80H ;DLAB= 1除数寄存器访问允许OUT DX,ALMOV AX,30H ;除