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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

10211004 程煜钧 北京交通大学微机原理实验报告.docx

1、10211004 程煜钧 北京交通大学微机原理实验报告微机原理实验报告姓名: 程煜钧 学号: 10211004班级: 通信1001实验一:交通灯控制实验一、 实验目的1、 掌握并行接口8255的基本原理2、 掌握8255的编程方法3、 掌握利用 X86 汇编语言技巧二、 实验内容如图,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律燃灭。十字路口交通灯的变化规律要求:(1) 南北路口的绿灯、东西路口的红灯同时亮3秒左右。(2) 南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。(3

2、) 南北路口的红灯、东西路口的绿灯同时亮3秒左右。(4) 南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。(5) 转(1)重复。各地址分析:8255 控制寄存器端口地址 28BHA 口的地址 288H C 口的地址 28AH三、 实验流程图四、 实验用源程序CODE SEGMENTASSUME CS:CODE START: MOV DX, 0EC0BH ;8255初始化,写控制寄存器 MOV AL,10010000B ; OUT DX,ALFIRST: MOV DX, 0EC0AH ;C口地址 MOV AL,00100100B OUT DX,AL ;南北绿,东西红,写入C口 MOV CX

3、,0 ;送入初值65536(FFFF+1) MOV AX,4000H ;软件长延时DELAY1: DEC AX JNZ DELAY1 LOOP DELAY1 ;双重循环 MOV BL,5 ;黄灯闪5次SECOND:MOV DX, 0EC0AH MOV AL,01000100B OUT DX,AL ;南北黄,东西红,写入C口 MOV CX,3000H ;写入初值 MOV AX,0100H ;延时LI1: DEC AX JNZ LI1 LOOP LI1 ;双循环 MOV DX, 0EC0AH MOV AL,00000100B ;南北黄灭,写入C口 OUT DX,AL MOV CX,3000H ;写

4、入初值 MOV AX,0100H ;延时WEN1: DEC AX JNZ WEN1 ;软件短延时 LOOP WEN1 DEC BL JNZ SECOND ;黄灯闪5次THIRD: MOV DX, 0EC0AH ;写入C口 MOV AL,10000001B OUT DX,AL ;南北红,东西绿,写入C口 MOV CX,0 ;送初值65536 MOV AX,4000H ;软件长延时DELAY2: DEC AX JNZ DELAY2 LOOP DELAY2 MOV BL,5 ;黄灯闪5次FORTH: MOV DX, 0EC0AH ;写入C口 MOV AL,10000010B OUT DX,AL ;南

5、北红,东西黄,写入C口 MOV CX,3000H ;送初值 MOV AX,0100H ;短延时LI2: DEC AX JNZ LI2 ;软件短延时 LOOP LI2 MOV DX, 0EC0AH ;C口MOV AL,10000000B OUT DX,AL ;东西黄灭,写入C口 MOV CX,3000H ;送初值 MOV AX,0100H ;短延时WEN2: DEC AX JNZ WEN2 LOOP WEN2 DEC BL JNZ FORTH ;黄灯闪5次 MOV DL,0FFH MOV AH,06H INT 21H ;执行键盘输入操作 JZ FIRST ;若没有输入,继续循环;若有输入,返回操

6、作系统 MOV AH,4CH INT 21H ;返回操作系统CODE ENDS五、 实验总结这是我们微机实验的第一次实验,以前的实验都是要么是硬件实验,要么是软件实验,这样又要连接电路,又要编写程序的实验这还是我第一次做,因此这次实验对我来说是一次全新的体验。这次实验我更加深入地了解了微机接口和汇编语言,对8255的芯片了解以及编程的学习不仅停留在书本上,自己的动手能力也得到了很大的提升。实验二:可编程定时器计数器一、 实验目的(1)掌握 8253A 与 X86 微处理硬件连接原理(2)掌握 8253A 计数定时应用编程(3)熟悉掌握 8253A 在 PC 机系统中典型应用方法并思考如何应用在

7、其他系统中。二、 实验内容1、按图虚线连接电路,将计数器0设置为工作方式0,计数器初值为N(N0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0遍高电平)。 2、按图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)。8253 控制寄存器地址 283H 动态分配地址 0EC03H计数器 0 地址 280H 动态分配地址0EC00H计数器 1 地址 281H 动态分配地址0EC01HCLK0 连接时钟 1MHZ。三、 实验流程图四、 实验源代码实验1:DAT

8、A SEGMENT ;定义数据段A DB 0A DATA ENDSSTACK1 SEGMENT STACK ;定义堆栈段DW 100 DUP (?)STACK1 ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE,DS:DATA,SS:STACK1MOV AX, DATAMOV DS, AXMOV AL,10H ;写入控制字MOV DX,0EC03HOUT DX,AL ;初始化,写控制寄存器MOV AL,10 ;写计数器初值MOV DX,0EC00HOUT DX,AL ;写入计数器0Lop1:MOV DX,0EC00HIN AL,DX ;读计数器0中数据CMP AL,A

9、 ;检测数值是否发生变化JA LOP1CMP AL,9 ;转换ASCII码JLE LOP2ADD AL,07H LOP2:ADD AL,30HMOV DL,ALMOV AH,02H ;2号功能,显示计数器0的值INT 21HDEC A ;初值减1,继续循环JNS LOP1MOV AH,4CHINT 21HCODE ENDSEND START实验2:STACK1 SEGMENT STACK ;定义堆栈段STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK1 START: MOV AL,00110110B; 计数器 0,先读写低字节,再读写高字节,方波发

10、生器,工作方式3MOV DX,0EC03H ;控制寄存器地址OUT DX,AL ;写入控制字MOV DX,0EC00H ;计数器0MOV AX,1000 ;计数初值 1000 OUT DX,AL ;写入计数器 0 计数初值的低位MOV AL,AH OUT DX,AL ;写入计数器 0 计数初值的高位MOV AL,01110110B ;计数器 1,先读写低字节,再读写高字节,方波发生器,工作方式3MOV DX,0EC03H ;控制寄存器地址OUT DX,AL ;写入控制字MOV DX,0EC01H MOV AX,1000 ;写入计数器 1 计数初值的低位OUT DX,AL MOV AL,AH O

11、UT DX,AL ;写入计数器 1 计数初值的高位MOV AH,4CH ;返回 DOS 程序INT 21H CODE ENDS END START五、 实验总结通过这次实验,我再一次巩固了8253的初始化、工作方式以及编程的方法等等。在此次实验中我从前一次的实验的什么都不知道的状态中走了出来,能比较熟练地使用该调试软件。而在硬件连接方面,我也能按照电路图熟悉地连接出来。在实验过程中,一开始出现了输入程序,屏幕无反应的情况,之后检查才发现原来是我的程序的入口地址写错了。因此这次实验同时也提醒我无论做什么事情都需要踏实认真,这样才能将事情做好。实验三:可编程中断控制器一、实验目的(1) 掌握 82

12、59A 可编程中断控制器中断基本原理 。(2) 掌握中断源、中断处理过程、中断向量表建立、DOS 的使用。(3) 熟悉主程序、中断服务程序编写,了解中断相应过程 。二、实验原理 PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。IBMPC、PC/XT机内有一片8259中断控制器对外可以提供8个中断源: 中断源 中断类型号 中断功能 IRQ0 08H 时钟 IRQ1 09H 键盘 IRQ2 0AH 保留 IRQ3 OBH 串行口2 IRQ4 0CH 串行口1 IRQ5 0DH 硬盘 IRQ6

13、 0EH 软盘 IRQ7 0FH 并行打印机 而此次实验的内容是利用手动产单脉冲作为中断请求信号,要求每按一次开关产生一次中断在屏幕上显示一次 “TPC pci card Interrupt” 中断 10 次后程序退出 图3-1 IRQ实验电路实验电路如图3-1直接用手动产单脉冲作为中断请求信号,只需连接一根导线,要求每按一次开关产生一次中断。三、实验流程图四、实验源代码data segment int_vect EQU 073H ;IRQ2的中断类型号为073H irq_mask_2_7 equ 11111011b ;中断掩码 irq_mask_9_15 equ 11110111b ;中断0

14、-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 andexit!,0dh,0ah,$data endsstack

15、segment stack ;定义堆栈段db 100 dup (?)stack endscode segmentassume cs:code,ds:data,ss:stack,es:datastart:;Enable Local Interrupt Input .386 cli ;中断标志置0,IF=0,关中断 mov ax,data mov ds,ax mov es,ax ;ES指向AX mov ax,stack ;装入堆栈 mov ss,ax mov dx,ioport_cent+68h ;设置 tpc 卡中9054芯片io口,使能中断 in ax,dx or ax,0900h out d

16、x,ax mov al,int_vect ;保存原中断向量,送AL mov ah,35h ;DOS 35号功能调用 int 21h mov ax,es mov csreg,ax ;存入旧中断向量 mov ipreg,bx mov ax,seg int_proc ;设置新中断向量 mov ds,ax ;中断服务程序入口段基址送DS mov dx,offset int_proc ;中断服务程序入口偏移地址送DX mov al,int_vect ;(AL)=073H,IRQ2的中断类型号送AL mov ah,25h ;DOS 25号功能调用 int 21h in al, 21h ;设置中断掩码 an

17、d al, irq_mask_2_7 ;主片OCW1,主片IMR的D2置0 out 21h, al in al, 0a1h and al, irq_mask_9_15;从片OCW1,从片IMR的D3置0 out 0a1h, al mov ax,data mov ds,ax mov dx,offset msg2 mov ah,09h ;DOS 9号功能调用,字符串输出 int 21h mov dx,offset msg3 mov ah,09h ;DOS 9号功能调用,字符串输出 int 21h mov irq_times,0ah ;设置中断次数为10次 sti ;IF=1,开中断loop1: c

18、mp irq_times,0 ;等待中断并判断中断10次后退出 jz exit mov ah,1 ; int 16h ; jnz exit ;按任意键退出 jmp loop1exit: cli ;中断标志置0,IF=0,关中断 mov bl, irq_mask_2_7 ;恢复中断掩码 not bl in al, 21h or al, bl ;恢复al out 21h, al ;写主片OCW1 mov bl, irq_mask_9_15 not bl ; in al, 0a1h or al, bl ; out 0a1h, al ;写从片OCW1 mov dx,ipreg ;恢复原中断向量 mov

19、 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 ;返回dos int 21hint_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

20、 int 21h mov al,20h ;Send EOI,写OCW2 out 0a0h,al ;写从片 out 20h,al ;写主片 pop ds ;恢复现场 pop dx pop ax sti ;开中断 iret ;中断返回int_proc endpcode ends end start五、总结此次中断的实验,这次实验是在纯DOS的环境下操作的,因此这次实验我学会了可编程中断控制器8259 的结构、中断申请、中断响应、中断处理、中断返回等中断原理,还学习到了一些在DOS操作系统下的指令和操作方法。这次实验老师说比较难因此给了我们源程序,虽然一开始对这个很长的程序感到很头疼,不过最后还是硬

21、着头皮把这段程序看完了,之中也请过助教学长学姐,也对程序的理解更深地理解了一层。实验四:模/数转换器 ADC0809实验一、实验目的(1) 掌握单通道模拟信号采集到数据处理方法(2) 掌握采集电路和计算机连接的硬件电路设计(3) 熟悉多通道模拟信号采集到数据处理方法(4) 了解模/数转换的基本原理,掌握ADC0809的使用方法。二、实验内容1.硬件电路原理实验电路原理图如图。通过实验台左下角电位器 RW1 输出 05直流电压送入ADC0809 通道 0(IN0), 编程采集 IN0 输入的电压,在屏幕上显示出转换后的数据(用 16 进制数) 2.软件设计(1)ADC0809 的 IN0 口地址

22、为 298H,IN1 口地址为 299H。(2)IN0 单极性输入电压与转换后数字的关系为:其中 Ui 为输入电压,UREF 为参考电压,这里参考电压为的机电源。(3)一次 A/D 转换的程序可以为MOV DX, 口地址 ;启动转换OUT DX, AL;延时IN AL,DX ;读取转换结果放在 AL 中三、实验流程图四、实验源代码code segment assume cs:code start:mov dx,0EC18H ;启动A/D转换器 ,写入A/D转换器out dx,al mov cx,0 ;双重嵌套,起延时作用MOV AX,4000H delay:DEC AXJNZ DELAYloo

23、p delay in al,dx ;从A/D转换器读数据 mov bl,al ;将AL保存到BL mov cl,4 shr al,cl ;将AL右移四位 call disp ;调显示子程序显示其高四位 mov al,bl ;重新赋予aland al,0fh ;消除高四位call disp ;调显示子程序显示其低四位 mov ah,02 ;显示回车符mov dl,20h ;加回车符 int 21h mov ah,06h ;判断是否有键按下 mov dl,0ffh int 21h JZ start ;若没有转START mov ah,4ch ;若有,退出 int 21h disp proc nea

24、r ;显示子程序 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五、总结有了前几次实验的经验,这次实验对我来说变得容易了很多。这次数模转换实验硬件连接并不算难,程序也不算难,不过数模转换在实际的应用中是十分广泛的。通过本次的AD实验,我学会了如何让A/D转换器与计算机连接,以及如何初始化等等。实验五:双机串行通讯一、实验目的(1) 了解串

25、行通信的基本原理、掌握异步通信协议(2) 掌握串行接口芯片 8250 的工作原理和编程方法。(3) 熟悉 PC 机串行口的基本连接方法二、实验内容1、PC机RS-232串口自发自收。按照PC机串口自发自收的连接方法连线。编写PC机自发自收串行通信程序,要求:从键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示,实现自发自收。2、 两台PC机间RS-232串口通信。按照PC机RS-232串口直接互连的方法连接两台PC机。 编写PC机直接互连串行通信程序;要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示在屏幕上。当键入感叹号“!”,结束收发过程

26、。三、实验源代码自发自收程序:DATA SEGMENTCHL DB 0AH,0DH,$ ;换行字符串DATA ENDSSTACK1 SEGMENT STACK ;定义堆栈段 DW 100 DUP(0)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX;-INIT- MOV DX,3FBH ;8250初始化 MOV AL,80H ;DLAB=1 OUT DX,AL MOV AX,0CH ;N=12 BAUD=9600bps MOV DX,3F8H ;写除数寄存器,低位 OUT D

27、X,AL MOV AL,AH;写除数寄存器,高位 INC DX OUT DX,AL MOV AL,03H ;八位数据,1停止,无校验 MOV DX,3FBH ;线路控制REG OUT DX,AL MOV AL,0 ;屏蔽全部中断 MOV DX,3F9H OUT DX,ALWAIT1: 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

28、,06H INT 21H JZ WAIT1 MOV DX,3F8H ;写发送REG OUT DX,AL JMP WAIT1 ;返回 WAIT1CHAR: PUSH AX MOV DL,AL ;显示接收 MOV AH,02H INT 21H POP AX JMP WAIT1ERROR: MOV DX,3FDH IN AL,DX MOV DL,? ;对于错误显示? MOV AH,02H INT 21H JMP WAIT1RECEIVE:MOV DX,3F8H IN AL,DX ;读数据接收寄存器 CMP AL,! ;判断是否结束 JNE CHAR;- MOV AH,4CH INT 21HCODE

29、ENDS END START双机通信发送端: CODE SEGMENT ASSUME CS:CODESTART: 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 ;写入除数高字节 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 ;写中断允许寄存器,屏蔽所有中断 WAIT1: MOV DX,3FDH ;读线路状态寄存器 IN AL,DX TEST AL,1EH ;出错否 JNZ ERROR TEST AL,01H ;接收数据就绪否 JNZ SEND ;发送 TEST A

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

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