ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:559.23KB ,
资源ID:7022612      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7022612.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机实验报告交大电信版.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机实验报告交大电信版.docx

1、微机实验报告交大电信版微机原理与接口技术实验报告学院:电子信息工程学院专业:学号:学生:指导教师:黄赞武实验一交通灯控制实验一、实验目的通过并行接口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、程序设计流程图:四、汇编语言程序清单STACK SEGMENT DB 100 DUP(0)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACKSTART: MOV DX,0EC0BH MOV AL,10010000B ;A口方式0输入 OUT DX,ALFIRST: MOV DX,0EC0AH MOV AL,00100100B OUT DX,AL ;南北绿,东西红 MOV

3、 CX,0 MOV AX,0 ;软件延时LO: DEC AX ;延时64K*64K个TCP JNZ LO LOOP LO MOV BL,6SECOND:MOV DX,0EC0AH MOV AL,01000100B OUT DX,AL ;南北黄,东西红 MOV CX,0 MOV AX,1FFFHLP1: LOOP LP1 DEC AX JNZ LP1 MOV DX,0EC0AH ;延时64k*8K个Tcp MOV AL,00000100B ;南北黄灭 OUT DX,AL MOV CX,0 MOV AX,1FFFHLP2: LOOP LP2 DEC AX JNZ LP2 ;延时64k*8K个Tcp

4、 DEC BL JNZ SECOND ;黄灯闪烁6次THIRD: MOV DX,0EC0AH MOV AL,10000001B OUT DX,AL ;南北红,东西绿 MOV CX,0 MOV AX,0 ;软件延时LI: DEC AX ;延时64K*64K个TCP JNZ LI LOOP LI MOV BL,6FORTH: MOV DX,0EC0AH MOV AL,10000010B OUT DX,AL ;南北红,东西黄 MOV CX,0 MOV AX,1FFFHLY1: LOOP LY1 DEC AX JNZ LY1 ;延时64k*8K个Tcp MOV DX,0EC0AH MOV AL,100

5、00000B 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)南北路口的绿灯、东西路口的红灯同时亮三秒;(2)南北路口的黄灯闪烁六次,同时东西路口的红灯继续亮;(3)南北路口的红灯、东西路口的绿灯同时亮三秒;(4)南北路口的红灯继续亮、同时东西

6、路口的黄灯亮闪烁六次;(5)转(1)重复。六、主要问题及解决办法和心得体会在做本实验的编程时,最大的困难是编程部分,对于之前的参考资料,进行学习后我发现,软件延时程序部分要亮三秒钟左右,因此要不断调整延迟的次数,才能保证交通灯点亮的时间满足要求。我们可以知道,发光二极管是共阴极相连,所以若要其发亮应给高电平。黄灯闪烁是让其不断交替亮灭来实现,所以在编程时其亮和灭的时间要比正常点亮时短,因此延时次数要少。通过利用异或和循环指令使绿灯灭、红灯亮后,黄灯口的状态从0到1循环变换,并通过调用延迟子程序,从而实现人眼可辨的黄灯闪的效果。实验二可编程定时器/计数器(8253)一、实验目的掌握8253的基本

7、工作原理和编程方法二、实验内容1、按图虚线连接电路,将计数器0设置为工作方式0,计数器初值为N(N0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0遍高电平)。2、按图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)。三、编程提示1、8253地址分析:控制寄存器地址: 0EC03H计数器0地址: 04EC00H计数器1地址: 04EC01HCLK0连接时钟:1MHz。2、程序参考流程图四、汇编语言程序清单1、实验内容一程序:CODE SEGMENTASS

8、UME CS:CODESTART:MOV DX,0EC03H ;计数器0,方式0 MOV AL,00010000B 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: AD

9、D DL,37H ;大于9,显示ASCII字母 MOV AH,02H INT 21H MOV DL,0DH ;加回车符,只显示一个符号 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,00110110B OUT DX,AL MOV DX,0EC00H MOV AX,100

10、0 ;向计数器0送初值 OUT DX,AL ;先送低字节后送高字节 MOV AL,AH OUT DX,AL MOV DX,0EC03H ;计数器1置控制字为工作方式3 MOV AL,01110110B 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、实验内容一:

11、用手动逐个输入单脉冲,在屏幕上从计数器初值E开始显示,此时逻辑笔显示为低电平,单脉冲每输入一个,计数器值将会减1,同时在屏幕上显示,当计数器值减到0时,逻辑笔显示为高电平。如果键盘上有键按下回到DOS系统。如果没有的话,再输入单脉冲会重复以上现象。2、实验内容二:接通电路后,逻辑笔交替显示高低电平。变化频率约为1Hz。六、主要问题及解决办法和心得体会在做本实验的编程时,首先遇见的第一个问题是对于调用显示的语句MOV DL,0DH;INT 21H的理解,其结果显示的数值不是一个,而是一行一行不停显示。通过现场老师的讲解,这个语句,加回车符,只显示一个符号,问题得以解决。第二个问题就是用tpc20

12、03在编译的时候,在黑屏后无法出来结果,我们查看了程序发现程序修改无误,最后在老师的帮助下,我们进入td界面进行底层调试,用F9运行,最后出现了所需要的结果。经过此次上机实验,我掌握了上机调试的初步经验,编程能力也得到了一次验证,此外还加深了对课本理论知识的理解。这为下面的实验打下了初步的基础。实验三中断实验一、实验目的1、掌握PC机中断处理系统的基本原理。2、学会编写中断服务程序。二、实验原理与内容1、实验原理PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。IBMPC、PC/XT机内有

13、一片8259中断控制器对外可以提供8个中断源:中断源中断类型号中断功能IRQ0 08H 时钟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 用

14、户中断IRQ10 072H 保留IRQ11 O73H 保留IRQ12 074H 保留IRQ13 075H 协处理器IRQ14 076H 硬盘IRQ15 077H 保留PCI总线中的中断线只有四根,INTA#、INTB#、INTC#、INTD#,它们需要通过P&P的设置来和某一根中断相连接才能进行中断申请。2、实验内容实验电路如图31,直接用手动产单脉冲作为中断请求信号(只需连接一根导线)。要求每按一次开关产生一次中断,在屏幕上显示一次“TPC pci card Interrupt”,中断10次后程序退出。三、编程提示1. 由于9054的驱动程序影响直写9054芯片的控制寄存器,中断实验需要在纯

15、DOS的环境中才能正常运行。这里指的纯DOS环境是指微机启动时按F8键进入的DOS环境。WINDOWS重启进入MSDOS方式由于系统资源被重新规划过,所以也不能正常实验。2. 由于TPC卡使用PCI总线,所以分配的中断号每台微机可能都不同,编程时需要了解当前的微机使用那个中断号并进行设置,获取方法请参看汇编程序使用方法的介绍。(也可使用自动获取资源分配的程序取得中断号)3. 在纯DOS环境下,有些微机的BIOS设置中有将资源保留给ISA总线使用的选项,致使在纯DOS环境(WINDOWS环境下不会出现此问题)下PCI总线无法获得系统资源,也就53 无法做实验,这时需要将此选项修改为使用即插即用。

16、4. 在纯DOS环境下,有些微机的BIOS设置中有使用即插即用操作系统的选项,如果在使用即插即用操作系统状态下,BIOS将不会给TPC卡分配系统资源,致使在纯DOS环境(WINDOWS环境下不会出现此问题)下PCI总线无法获得系统资源,也就无法做实验,这时需要将此选项修改为不使用即插即用操作系统。5. 由于TPC卡使用9054芯片连接微机,所以在编程使用微机中断前需要使能9054的中断功能,代码如下:mov dx,ioport_cent+68h ;设置tpc卡中9054芯片io口,使能中断inax,dxor ax,0900h outdx,ax其中IOPORT_CENT是9054芯片寄存器组的I

17、/O起始地址,每台微机可能都不同,编程时需要了解当前的微机使用哪段并进行设置,获取方法请参看本书结尾部分的介绍。(也可使用自动获取资源分配的程序取得),+68H的偏移是关于中断使能的寄存器地址,设置含义如下:程序退出前还要关闭9054的中断,代码如下:mov dx,ioport_cent+68h ;设置tpc卡中9054芯片io口,关闭中断inax,dxand ax,0f7ffh outdx,ax6. PC机中断控制器8259 的地址为20H、21H,编程时要根据中断类型号设置中断矢量,8259中断屏蔽寄存器IMR对应位要清零(允许中断),中断服务结束返回前要使用中断结束命令:MOV AL,2

18、0H OUT 20H,AL 中断结束返回DOS时应将IMR对应位置1,以关闭中断。四、参考流程图1、参考程序程序名: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 011111011B ;中断掩码,中断0-7时从低至高相应位为零,中断8-15时第2位为零IRQ_MASK_9_15 EQU 011111101B ;中断0-7时全一,中断8-15时从低至高相应位为零IOPORT_CENT E

19、QU 0D800H ;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 STACKS SEGMENT DB 100 DUP (?)STACKS ENDS CO

20、DE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKS,ES:DATASTART: ;ENABLE LOCAL INTERRUPT INPUT .386 CLI MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKSMOV SS,AXMOV DX,IOPORT_CENT+68H ;设置 TPC 卡中9054芯片IO口,使能中断IN AX,DXOR AX,0900HOUT DX,AXMOV AL,INT_VECT ;保存原中断向量MOV AH,35HINT 21H MOV AX,ESMOV CSREG,AXMOV IPREG,BXMO

21、V AX,CS ;设置新中断向量56 MOV DS,AXMOV DX,OFFSET INT_PROC MOV AL,INT_VECT MOV AH,25HINT 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,DATAMOV DS,AXMOV DX,OFFSET MSG2 MOV AH,09HINT 21H MOV DX,OFFSET MSG3 MOV AH,09HINT 21H MOV IRQ_TIMES,0AHSTI LO

22、OP1: CMP IRQ_TIMES,0 ;等待中断并判断中断10次后退出JZ EXIT MOV AH,1INT 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,CSREGMOV DS,AXMOV AH,25HMOV AL,INT_VECT

23、INT 21H MOV DX,IOPORT_CENT+68H ;设置 TPC 卡中9054芯片IO口,关闭中断IN AX,DXAND AX,0F7FFHOUT DX,AXMOV AX,4C00HINT 21H INT_PROC PROC FAR ;中断处理程序CLI PUSH AX PUSH DX PUSH DS DEC IRQ_TIMES MOV AX,DATA ;INTERRUPT TO DO MOV DS,AXMOV DX,OFFSET MSG1 MOV AH,09HINT 21H MOV AL,20H ;SEND EOI OUT 0A0H,ALOUT 20H,ALPOP DS POP

24、DX POP AX STI IRET INT_PROC ENDP CODE ENDS六、主要问题及解决办法和心得体会本次实验的程序在实验电脑中已经写好,我们所需要做的工作是理解弄懂他们,在看过程序后,我们主要发现了几个问题,一个是在开头就有的关于两个端口的设置,因为前四位是没有要求的,但是最后还是有了四个1。在咨询了老师之后我们发现,如此是为了在后面与两个字处理进行相与和相或,使其保持原来的一致性,最后我们不得不佩服设计程序者的聪明的头脑了。实验四模/数转换器一、实验目的了解模/数转换的基本原理,掌握ADC0809的使用方法。二、实验内容1、实验原理图如下所示。通过实验台左下角电位器RW1输出

25、05V直流电压送入ADC0809通道0(IN0),利用debug的输出命令启动A/D转换器,输入命令读取转换结果,验证输入电压与转换后数字的关系。2、编程采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制数)。三、编程提示1、0809地址分析:IN0口地址: 0EC18H2、IN0单极性输入电压与转换后数字的关系为:3、一次A/D转换的程序可以为:mov dx , 口地址 ;启动转换out dx , al ;延时inal , dx ;读取转换结果放在AL中4、程序设计流程图四、汇编语言程序CODE SEGMENTASSUME CS:CODESTART: MOV AL,0 MOV DX

26、,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,并显示 MOV AH,06H INT 21H JMP NEXTBIG: ADD DL,37H ;ASCII码AF,并显示 MOV AH,06H INT 21H JMP NEXTNEXT: MOV DX,0EC18H ;读

27、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 JUDGEBIGS: ADD DL,37H ;ASCII码AF,并显示 MOV AH,06H INT 21H JMP JUDGEJUDGE: MOV DL,0DH ;加回车符,只显示一个两位数字 INT 21H MOV DL,0FFH MOV AH,06H INT 21H JZ START ;有键按下返回DOS MOV AH,4CH INT 21HCODE ENDS E

28、ND START五、实验现象:敲入:DEBUG-0 EC18 0-I EC18显示读取的结果,两位16进制数。启动程序,转动实验台左下角电位器RW1,计算机屏幕上显示连续的两位十六进制码,这就是输入IN0口的模拟电压转换的数字量。六、主要问题及解决办法和心得体会这个实验不需要初始化,因此最关键的部分是显示功能的设计,同时也是最难的。开始时我没有想到一种好的方法,通过参考其他同学的程序,我采用了循环移位显示高位,屏蔽高位显示低位的方法。并且忘了区分1-9和A-F在转为ASCII符号时区别,当调高电压时并不显示A-F,后来分情况讨论,改正了这个问题。但是在调试过程中,出现了精度不准,采样速度过于满

29、等问题,我们通过调整延时,改变了精度,调用换行符实现了数据保存后显示。实验五 PC机串行通讯实验一、实验目的1、进一步了解串行通信的基本原理2、掌握串行接口芯片8250的基本原理和编程方法3、熟悉PC机串行口的基本连接方法二、实验内容1、 PC机RS-232串口自发自收按照PC机串口自发自收的连接方法(将RS232C的DB9的电缆插头第2脚和第3脚短接)连线。编写PC机自发自收串行通信程序,要求:从键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示,实现自发自收。2、2台PC间RS-232串口通信:按照PC机RS-232串口直接互连的方法连接两台PC机。编写PC机直接互连串行通信程序;要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示在屏幕上。当键入感叹号“!”,结束收发过程。三、编程提示1、地址分析:PC机自带两个串口,分别为COM1和COM2,本实验选用COM1,地址为3F8H-3FFH。2、程序设计流程图:自发自收:双机通信:发送程序:接收程序:四、汇编语言程序程序1自发自收:CODE SEGMENTASSUME CS:CODESTART :MOV AL,80H ;初始化 MOV DX,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1