版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理与接口技术实验报告日 期: 2013年12月18日 实验一交通灯控制实验一、实验目的通过并行接口8255实现交通灯的模拟控制,进一步掌握对并行口的使用。二、实验内容如图所示,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通变化规律燃灭。三、编程提示1、8255地址分析:控制寄存器地址: 0EC0BH A口地址: 04EC08H C口地址: 04EC0AH2、十字路口交通灯的变化规律要求(1) 南北路口的绿灯、东西路口的红灯同时亮三秒;(2) 南北路口的黄灯闪烁三次,同时东西路口的红灯继
2、续亮;(3) 南北路口的红灯、东西路口的绿灯同时亮三秒;(4) 南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁三次;(5) 转(1)重复。3、程序设计流程图:开始返回DOS设置8255C口输出南北路口的绿灯、东西路口的红灯亮长延时南北路口的黄灯闪烁,东西路口红灯亮南北路口的红灯、东西路口的绿灯亮长延时南北路口红灯亮、东西路口黄灯亮闪烁有键按下吗?YN四、汇编程序STACK SEGMENT DB 100 DUP(0)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACKSTART: MOV DX,0EC0BH MOV AL,B ;A口方式0输入 OUT DX
3、,ALFIRST: MOV DX,0EC0AH MOV AL,B OUT DX,AL ;南北绿,东西红 MOV CX,0 MOV AX,0 ;软件延时LO: DEC AX ;延时64K*64K个TCP JNZ LO LOOP LO MOV BL,6SECOND:MOV DX,0EC0AH MOV AL,B OUT DX,AL ;南北黄,东西红 MOV CX,0 MOV AX,1FFFH LP1: LOOP LP1 DEC AX JNZ LP1 MOV DX,0EC0AH ;延时64k*8K个Tcp MOV AL,B ;南北黄灭 OUT DX,AL MOV CX,0 MOV AX,1FFFHLP
4、2: LOOP LP2 DEC AX JNZ LP2 ;延时64k*8K个Tcp DEC BL JNZ SECOND ;黄灯闪烁6次THIRD: MOV DX,0EC0AH MOV AL,B OUT DX,AL ;南北红,东西绿 MOV CX,0 MOV AX,0 ;软件延时LI: DEC AX ;延时64K*64K个TCP JNZ LI LOOP LI MOV BL,6 FORTH: MOV DX,0EC0AH MOV AL,B OUT DX,AL ;南北红,东西黄 MOV CX,0 MOV AX,1FFFHLY1: LOOP LY1 DEC AX JNZ LY1 ;延时64k*8K个Tcp
5、 MOV DX,0EC0AH MOV AL,B OUT DX,AL ;东西黄灭 MOV CX,0 MOV AX,1FFFHLY2: LOOP LY2 DEC AX JNZ LY2 DEC BL JNZ FORTH ;黄灯闪烁6次MOV DL,0FFH ;DOS 6号功能调用,按任意键返回 MOV AH,06H INT 21H JZ FIRST MOV AH,4CH INT 21H ;返回操作系统CODE ENDSEND START五、实验步骤(1)将PC总线接口卡插在任意扩展槽中(已接好)。(2)用50芯线扁平电缆线连接接口卡和实验台。(3)如图1所示连接线路。(4)打开实验箱电源,启动TCP
6、-2003实验系统软件环境。(5)测试8255、LED和串口是否完好。六、实验现象(1)南北路口的绿灯、东西路口的红灯同时亮三秒;(2)南北路口的黄灯闪烁六次,同时东西路口的红灯继续亮;(3)南北路口的红灯、东西路口的绿灯同时亮三秒;(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁六次;(5)转(1)重复。七、实验总结本次实验首先需要我们掌握的是I/O地址译码的相关内容,通过TPC界面的硬件检测工具得到的基址和实验板上的偏移地址得到8255控制寄存器和C口的地址。此外,我们通过本次实验,强化了对8255几种工作方式的人认识,熟悉了8255的相关编程,包括初始化和方式0输出的部分。要注意端口
7、地址的设置,主要是明白相对地址的概念即可。实验中会出现灯不闪的现象,这主要是由于灯亮与灯灭之间的延时太短的原因,就算计数设置到0ffffh仍然还是很短,故采用双重循环。实验二可编程定时器/计数器(8253)一、 实验目的掌握8253的基本工作原理和编程方法 二、 实验内容1、 按图虚线连接电路,将计数器0设置为工作方式0,计数器初值为N(N0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0遍高电平)。2、 按图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1H
8、z)。三、 编程提示1、原理提示:8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。作计数器时, 要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。8253中各通道可有6种可供选择的工作方式, 以完成定时、计数或脉冲发生器等多种功能。本实验用到的是方式0计数结束中断。在写入计数值N之后的第一个CLK的下降沿将N装入计数执行单元,待下一个CLK的下降沿到来且门控信号GATE为高电平时,通道开始启动计数。在计数过程中,OUT一直保持低电平,直到计数达“0”时,OUT输出由低电平变为
9、高电平,并且保持高电平。2、8253地址分析:控制寄存器地址: 0EC03H 计数器0地址: 04EC00H 计数器1地址: 04EC01H CLK0连接时钟:1MHz。3、程序参考流程图开始设置计数器0为工作方式0送计数器初值读计数器值显示计数值结束结束开始设计数器1为工作方式3向计数器1送初值1000先送低字节后送高字节向计数器0送初值1000先送低字节后送高字节计数器0位工作方式3有键按下吗?调用延时子程序YN(1)(2)四、汇编语言程序清单1、实验内容一程序:CODE SEGMENTASSUME CS:CODESTART:MOV DX,0EC03H ;计数器0,方式0 MOV AL,B
10、 OUT DX,AL MOV DX,0EC00H MOV AL,0EH ;送初值E OUT DX,AL MOV CL,1READ: INC CL ;自加1 CMP CL,0 JZ START MOV DX,0EC00H ;读计数器0口 IN AL,DX MOV DL,AL MOV CL,AL CMP AL,9 JG BIG ADD DL,30H ;0到9,显示ASCII数字 MOV AH,02H INT 21H MOV DL,0DH INT 21H JMP JUDGEBIG: ADD DL,37H ;大于9,显示ASCII字母 MOV AH,02H INT 21H MOV DL,0DH ;加回
11、车符,只显示一个符号 INT 21H JMP JUDGEJUDGE:MOV DL,0FFH ;有键按下回DOS MOV AH,06H INT 21H JZ READ MOV AH,4CH INT 21HCODE ENDSEND START2、实验内容二程序:CODE SEGMENTASSUME CS:CODESTART: MOV DX,0EC03H;计数器0置控制字为工作方式3 MOV AL,B OUT DX,AL MOV DX,0EC00H MOV AX,1000;向计数器0送初值 OUT DX,AL;先送低字节后送高字节 MOV AL,AH OUT DX,AL MOV DX,0EC03H;
12、计数器1置控制字为工作方式3 MOV AL,B OUT DX,AL MOV DX,0EC01H;向计数器1送初值 MOV AX,1000;先送低字节后送高字节 OUT DX,AL MOV AL,AH OUT DX,ALNEXT: MOV DL,0FFH;DOS 6号功能调用,按任意键返回 MOV AH,06H INT 21H MOV AH,4CH;返回系统 INT 21HCODE ENDSEND START五、实验现象1、实验内容一:程序运行之后逻辑笔代表低电平的绿灯亮,设定初值为OFH,当按下脉冲按键后,屏幕上会显示数字OFH,每按一下按键数字就会减1,直到为0,且同时指示灯由绿灯变成红灯。
13、计数脉冲由CLK端输入,计数初值写入16位计数初值寄存器,并加载到16位减1计数执行部件。方式0计数工程中,OUT一直保持低电平,直到计数达0,OUT输出由低电平变为高电平。计数器0输入1MHz作为时钟,工作在方式3方波发生器,计数初值为1000,输出1000Hz的方波,此方波作为计数器1的时钟接入,而计数器1也工作在方式3方波发生器,输出1Hz的方波,用逻辑笔观察看到的现象为红、绿灯不停交替闪烁。2、实验内容二:计数器0输入1MHz作为时钟,工作在方式3方波发生器,计数初值为1000,输出1000Hz的方波,此方波作为计数器1的时钟接入,而计数器1也工作在方式3方波发生器,输出1Hz的方波,
14、用逻辑笔观察看到的现象为红、绿灯不停交替闪烁。六、实验总结经过第一次实验的教训后,我在实验前做了充足的预习工作,已经将程序写好,只需要在实验室连接外部电路,调试程序即可,因此实验进行得很顺利。这次实验是针对可编程定时时钟/计数器(8253),8253有六种工作方式,我在实验中主要用到了8253的工作方式0和工作方式3,此外调用了 02号功能单字符输出显示,以及09号功能输出显示字符串,我在做宏汇编研究性学习的时候就已经研究过这两个功能的使用方法,所以这次使用得心应手,要注意的是:执行02号功能必须进行ASSIC码转换,执行09号功能必须在字符串结尾写一个符号$,表示字符串结束。此外,在实验老师
15、的指导下,我进一步熟悉了调试的方法,之前只会F8单步调试,但是在遇到很长的循环程序时,就不能单步调试的了,通过这次实验我学会了如何使用F4让程序进行到任意指定位置,这样就可以跳过循环继续执行代码。实验三中断实验(纯DOS)一、实验目的、掌握PC机中断处理系统的基本原理。、学会编写中断服务程序。二、实验原理与内容1、实验原理PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。IBMPC、PC/XT机内有一片8259中断控制器对外可以提供8个中断源:中断源中断类型号中断功能IRQ0 08H 时钟
16、IRQ1 09H 键盘IRQ2 0AH 保留IRQ3 OBH 串行口2 IRQ4 0CH 串行口1 IRQ5 0DH 硬盘IRQ6 0EH 软盘IRQ7 0FH 并行打印机8个中断源的中断请求信号线IRQ0IRQ7在主机的62线ISA总线插座中可以引出,系统已设定中断请求信号为“边沿触发”,普通结束方式。对于PC/AT及286以上微机内又扩展了一片8259中断控制,IRQ2用于两片8259之间级连,对外可以提供16个中断源:中断源中断类型号中断功能52 IRQ8 070H 实时时钟IRQ9 071H 用户中断IRQ10 072H 保留IRQ11 O73H 保留IRQ12 074H 保留IRQ1
17、3 075H 协处理器IRQ14 076H 硬盘IRQ15 077H 保留PCI总线中的中断线只有四根,INTA#、INTB#、INTC#、INTD#,它们需要通过P&P的设置来和某一根中断相连接才能进行中断申请。2、实验内容实验电路如图31,直接用手动产单脉冲作为中断请求信号(只需连接一根导线)。要求每按一次开关产生一次中断,在屏幕上显示一次“TPC pci card Interrupt”,中断10次后程序退出。三、编程提示1. 由于9054的驱动程序影响直写9054芯片的控制寄存器,中断实验需要在纯DOS的环境中才能正常运行。这里指的纯DOS环境是指微机启动时按F8键进入的DOS环境。WI
18、NDOWS重启进入MSDOS方式由于系统资源被重新规划过,所以也不能正常实验。2. 由于TPC卡使用PCI总线,所以分配的中断号每台微机可能都不同,编程时需要了解当前的微机使用那个中断号并进行设置,获取方法请参看汇编程序使用方法的介绍。(也可使用自动获取资源分配的程序取得中断号)3. 在纯DOS环境下,有些微机的BIOS设置中有将资源保留给ISA总线使用的选项,致使在纯DOS环境(WINDOWS环境下不会出现此问题)下PCI总线无法获得系统资源,也就无法做实验,这时需要将此选项修改为使用即插即用。4. 在纯DOS环境下,有些微机的BIOS设置中有使用即插即用操作系统的选项,如果在使用即插即用操
19、作系统状态下,BIOS将不会给TPC卡分配系统资源,致使在纯DOS环境(WINDOWS环境下不会出现此问题)下PCI总线无法获得系统资源,也就无法做实验,这时需要将此选项修改为不使用即插即用操作系统。5. 由于TPC卡使用9054芯片连接微机,所以在编程使用微机中断前需要使能9054的中断功能,代码如下:mov dx,ioport_cent+68h ;设置tpc卡中9054芯片io口,使能中断in ax,dxor ax,0900h out dx,ax其中IOPORT_CENT是9054芯片寄存器组的I/O起始地址,每台微机可能都不同,编程时需要了解当前的微机使用哪段并进行设置,获取方法请参看本
20、书结尾部分的介绍。(也可使用自动获取资源分配的程序取得),+68H的偏移是关于中断使能的寄存器地址,设置含义如下:程序退出前还要关闭9054的中断,代码如下:mov dx,ioport_cent+68h ;设置tpc卡中9054芯片io口,关闭中断in ax,dxand ax,0f7ffh out dx,ax6. PC机中断控制器8259 的地址为20H、21H,编程时要根据中断类型号设置中断矢量,8259中断屏蔽寄存器IMR对应位要清零(允许中断),中断服务结束返回前要使用中断结束命令:MOV AL,20H OUT 20H,AL 中断结束返回DOS时应将IMR对应位置1,以关闭中断。四、参考
21、流程图四、参考程序程序名:INT.ASM;386以上微机适用;纯dos下才能使用;tasm4.1或以上编译DATA SEGMENT INT_VECT EQU 071H ;中断0-7的向量为:08H-0FH,中断8-15的向量为:70H-77H 55 IRQ_MASK_2_7 EQU B ;中断掩码,中断0-7时从低至高相应位为零,中断8-15时第2位为零IRQ_MASK_9_15 EQU B ;中断0-7时全一,中断8-15时从低至高相应位为零IOPORT_CENT EQU 0D800H ;TPC 卡中9054芯片的IO地址CSREG DW ? IPREG DW ? ;旧中断向量保存空间IRQ
22、_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 DB 100 DUP (?) STACKS ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKS,ES:DATA START: ;E
23、NABLE LOCAL INTERRUPT INPUT .386 CLI MOV AX,DATA 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 ;设置新中断向量56 MOV DS,AX MOV DX,OFFSET INT_P
24、ROC 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 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 E
25、XIT MOV AH,1 INT 16H JNZ EXIT ;按任意键退出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 57 OR AL, BL OUT 0A1H, AL MOV DX,IPREG ;恢复原中断向量MOV AX,CSREG MOV DS,AX MOV AH,25H MOV AL,INT_VECT INT 21H MOV DX,IOPORT_CENT+68H ;设置 TP
26、C 卡中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 ;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 E
27、NDP CODE ENDS五、实验现象每按下一次中断按钮,产生中断并在电脑屏幕上显示一次中断信息,当中断十次后,则结束程序,回到DOS界面。六、实验总结这次的实验感觉比较难,首先是中断程序复杂,其次,要在纯DOS环境下运行,但是我们班的人要比其他班的人做得轻松,主要是由于我们在上课的时候老师给演示过Debug在DOS下的调试方法和步骤,自己也在研究性学习过程中反复运用过,对DOS的环境性对比较熟悉。这次实验重点是要理解中断的概念和熟悉中断中8352主片和从片的如何级联工作,具体包括:知道如何查找中断源、确定中断类型,设置TPC卡中断使能、调用35号功能保护原中断向量、调用25号功能设置新的中断
28、向量,设置中断屏蔽字等诸多内容。虽然老师已经给了我们程序,但是要在短时间内彻底地读懂全部程序,并透彻的理解每一句代码的意义还是比较困难的,尤其是使用微机中断前使能9054的中断功能这一部分的程序令人费解,特地请教了老师帮我解惑。通过此次试验。我对整个中断服务流程的理解更加清晰,对 8352主片和从片的级联工作用以拓展中断源的工作方式有了进一步的认识。实验四模/数转换器一、 实验目的了解模/数转换的基本原理,掌握ADC0809的使用方法。二、实验内容1、实验原理图如下所示。通过实验台左下角电位器RW1输出05V直流电压送入ADC0809通道0(IN0),利用debug的输出命令启动A/D转换器,
29、输入命令读取转换结果,验证输入电压与转换后数字的关系。2、编程采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制数)。三、编程提示1、0809地址分析:IN0口地址: 0EC18H2、IN0单极性输入电压与转换后数字的关系为:3、一次A/D转换的程序可以为:mov dx , 口地址 ;启动转换out dx , al ;延时inal , dx ;读取转换结果放在AL中4、程序设计流程图开始结束启动A/D转换延时读入转换后的数据所读数据赋给BL将AL数据右移4位,显示其高四位将AL数据赋给DLDL加7DL加30H显示ASC码为DL的字符将AL数据赋给DL从BL中取出数据至AL和0FH相与
30、,显示其低四位DL加30HDL加7显示ASC码为DL的字符DL大于9吗?DL大于9吗?有键按下吗?NNN三、 汇编语言程序CODE SEGMENTASSUME CS:CODESTART: MOV AL,0 MOV DX,0EC18H OUT DX,AL ;启动 MOV DX,0FFFH MOV CX,0DELATE: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,并
31、显示 MOV AH,06H INT 21H JMP NEXTBIG: ADD DL,37H ;ASCII码AF,并显示 MOV AH,06H INT 21H JMP NEXTNEXT: MOV DX,0EC18H ;读IN0口 IN AL,DX MOV DL,AL AND DL,B ;屏蔽高4位 CMP DL,9 JG BIGS ADD DL,30H ;ASCII显示09,并显示 MOV AH,06H INT 21H JMP JUDGEBIGS: ADD DL,37H ;ASCII码AF,并显示 MOV AH,06H INT 21H JMP JUDGEJUDGE: MOV DL,0DH ;加回
32、车符,只显示一个两位数字 INT 21H MOV DL,0FFH MOV AH,06H INT 21H JZ START ;有键按下返回DOS MOV AH,4CH INT 21HCODE ENDS END START五、实验现象:调节滑动变阻器,屏幕上显示的数值(00FF)随着电阻的改变而改变,并且是整屏幕显示。六、主要问题及解决办法和心得体会模数转换是很重要的技术,是连通数字领域和模拟领域的桥梁,其原理有很多,本次实验采用的是ADC0809,逐次逼近A/D转换器。这个实验不需要初始化,因此最关键的部分是显示功能的设计,同时也是最难的。开始时我没有想到一种好的方法,通过参考其他同学的程序,我
33、采用了循环移位显示高位,屏蔽高位显示低位的方法。并且忘了区分1-9和A-F在转为ASCII符号时区别,当调高电压时并不显示A-F,后来分情况讨论,改正了这个问题。实验五 PC机串行通讯实验一、实验目的1、进一步了解串行通信的基本原理2、掌握串行接口芯片8250的基本原理和编程方法3、熟悉PC机串行口的基本连接方法二、实验内容1、 PC机RS-232串口自发自收按照PC机串口自发自收的连接方法(将RS232C的DB9的电缆插头第2脚和第3脚短接)连线。编写PC机自发自收串行通信程序,要求:从键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示,实现自发自收。2、2台P
34、C间RS-232串口通信:按照PC机RS-232串口直接互连的方法连接两台PC机。编写PC机直接互连串行通信程序;要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示在屏幕上。当键入感叹号“!”,结束收发过程。三、编程提示1.原理提示(1)本实验为异步通信:以字符为单位进行传送,每传送一个字符,以起始位作为开始标志,以停止位作为结束标志。异步串行通信的工作过程是:传送开始后,接收设备不断地检测传输线是否有起始位到来,当接收到一系列的“1”(空闲或停止位)之后,检测到第一个“0”,说明起始位出现,就开始接收所规定的数据位、奇偶校验位及停止位。经过接收器处理,将停止位去掉,把数
35、据位拼装成一字节数据,并且经奇偶校验无错误,才算是正确地接收到了一个字符。当一个字符接收完毕,接收设备又继续测试传输线,监视“0”电平的到来(下一个字符的开始),直到全部数据接收完毕。(2)8250各部分功能说明8250片内有10个寄存器,其中有几个是共用地址的,其识别由线路控制寄存器(LCR)的最高位DLAB来决定。各寄存器的地址和格式如下所示:. 3)数据发送和接收:2、地址分析:PC机自带两个串口,分别为COM1和COM2,本实验选用COM1,地址为3F8H-3FFH。3、程序设计流程图:自发自收:开始返回DOS初始化8250读线路状态寄存器出错否发送数据就绪否发送数据接收数据显示数据有
36、!按下吗?YN显示?YN双机通信:发送程序:开始返回DOS初始化8250读线路状态寄存器出错否读发送寄存器是否为空读键盘发送有!按下吗?YN显示?YN接收程序:开始返回DOS初始化8250读线路状态寄存器出错否接收数据就绪否接收读接收数据显示接收字符结束显示?YN四、汇编语言程序程序1自发自收:CODE SEGMENTASSUME CS:CODESTART :MOV AL,80H ;初始化 MOV DX,3FBH OUT DX,AL MOV AX,30H MOV DX,3F8H OUT DX,AL ;写入除数低字节 MOV AL,AH MOV DX,3F9H OUT DX,AL ;写入除数高字
37、节 MOV AL,0AH ;7位数据,1位停止,奇数校验 MOV DX,3FBH OUT DX,AL ;写入线路控制寄存器 MOV AL,0FH 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,B ;出错否 JNZ ERROR ;不为零转ERROR TEST AL,B ;接收数据就绪否 JNZ RECEIVE TEST AL,B ;发送寄存器空否,不空,返回等待 JZ WAIT_F
38、OR MOV AH,1 INT 21H ;读键盘 MOV DX,3F8H ;发送 OUT DX,AL JMP WAIT_FOR ;返回等待RECEIVE: MOV DX,3F8H ;读接收数据 IN AL,DX AND AL,B ;保留7位数据 CMP AL,21H ;是否! JNZ CHAR MOV AH,4CH ;返回DOS INT 21HCHAR: PUSH AX MOV DL,AL MOV AH,02H ;显示接收字符 INT 21H POP AX JMP WAIT_FOR ;返回等待ERROR: MOV DX,3FDH ;出错则清除线路状态寄存器 IN AL,DX MOV DL,?
39、;显示? MOV AH,02H INT 21H JMP WAIT_FORCODE ENDSEND START程序2双机通信:发送部分: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 MOV DX,3F9H OUT DX,AL ;写入除数高字节 MOV AL,0AH ;7位数据位,1位停止位,奇校验 MOV DX,3FBH OUT DX,AL ;写入线路控制寄存器 MOV A
40、L,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,B ;出错否 JNZ ERROR TEST AL,B ;发送寄存器空否,不空,返回等待 JZ WAIT_FOR MOV AH,01H ;读键盘的字符 INT 21H MOV DX,3F8H OUT DX,AL ;发送 CMP AL,21H ;是不是叹号 JNZ WAIT_FOR MOV AH,4CH INT 21H ERROR
41、:MOV DX,3FDH IN AL,DX MOV DL,? ;出错则显示问号 MOV AH,02H INT 21H JMP WAIT_FOR CODE ENDS END START接收部分: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 MOV DX,3F9H OUT DX,AL ;写入除数高字节 MOV AL,0AH ;7位数据位,1位停止位,奇校验 MOV DX,3
42、FBH 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,B ;出错否 JNZ ERROR TEST AL,B ;接收数据就绪否 JNZ RECEIVE ;转接收 JMP WAIT_FOR RECEIVE: MOV DX,3F8H IN AL,DX CMP AL,21H ;读接收的数据 JNE CHAR MOV AX,4CH ;返回DOS INT 21H CHAR: PUSH AX MOV DL,AL MOV AH,02H ;显示接受的字符 INT 21H POP AX JMP WAIT_FOR ERROR: MOV DX ,3FDH IN AL,DX MOV DL,? ;出错则显示问号 MOV AH,02H INT 21H JMP WAIT_FORCODE ENDS END START五、实验现象:自发自收:在屏
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 30593-2025外墙内保温复合板系统
- 劳动法基本知识竞赛试题题库三篇
- 市场监督总局 合同范本
- 2025年期货从业投资分析考试真题及答案解析
- 生产车间安全培训课件下载
- 小学语文《桥》教学设计
- 防灾避险安全应急知识培训课件
- 建筑施工现场工安全知识教育考试题(附含答案解析)
- 心得体会反洗钱心得体会范文3篇
- 房地产估价师《理论与方法》试题及答案(卷五)
- 脑机接口技术在康复医学中的应用与展望
- CZ-42船舶航次安全风险评估管理须知 - 副本
- GB/T 9573-2013橡胶和塑料软管及软管组合件软管尺寸和软管组合件长度测量方法
- 劳动争议调解仲裁法知识讲座
- 矮小症诊治指南
- GB 14443-2007涂装作业安全规程涂层烘干室安全技术规定
- 解一元一次方程移项说课稿课件
- 危机管理及风险评估基础知识课件
- 多原子分子的结构和性质
- 中兴视频会议MCU MS9000开局配置
- 江苏股权交易中心章程
评论
0/150
提交评论