北京交通大学.docx
- 文档编号:12159583
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:10
- 大小:24.44KB
北京交通大学.docx
《北京交通大学.docx》由会员分享,可在线阅读,更多相关《北京交通大学.docx(10页珍藏版)》请在冰点文库上搜索。
北京交通大学
北京交通大学
微机接口实验实验报告 姓名:
学号:
班级:
1 目录 实验一交通灯控制实验---------------------------------------------------------1 实验二 实验三 实验四 实验五 实验六 可编程定时器/计数器-----------------------------------------5中断--------------------------------------------------------------------------9模/数转换器-------------------------------------------------------------15PC机串行通讯实验----------------------------------------------------18竞赛抢答器--------------------------------------------------------------24 2 实验一交通灯控制实验 一、实验目的 通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。
二、实验内容 如图1,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通灯变化规律燃灭。
L7L6L5L2L1L0PC7PC6PC5 PC2PC1PC0288H—28FHCS 8255图1 十字路口交通灯的变化规律要求:
南北路口的绿灯、东西路口的红灯同时亮3秒左右。
南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。
南北路口的红灯、东西路口的绿灯同时亮3秒左右。
南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。
转重复。
8255动态分配地址:
控制寄存器:
28BH0EC0BHA口地址:
288H0EC08HC口地址:
28AH0EC0AH 三、参考流程 1 开始设置8255A口输出C口输出南北路口绿灯亮,东西路口红灯亮长延时南北路口黄灯闪,东西路口红灯亮南北路口红灯亮,东西路口绿灯亮长延时南北路口红灯亮,东西路口黄灯闪是否有键按下返回DOS图2 四、源程序及注释 源程序:
CODESEGMENT ASSUMECS:
CODE START:
MOVDX,0EC0BH MOVAL,10010000B ;C口方式0输出,A口输入 OUTDX,AL FIRST:
MOVDX,0EC0AH MOVAL,00100100B OUTDX,AL ;南北绿,东西红写入C口 MOVCX,0 ;送入初值65536 MOVAX,4000H ;软件长延时,经验值确定DELAY1:
DECAX JNZDELAY1 LOOPDELAY1 MOVBL,4 ;控制黄灯亮的次数SECOND:
MOVDX,0EC0AH MOVAL,01000100B 2 OUTDX,AL ;南北黄,东西红 MOVCX,3000H MOVAX,0100H LI1:
DECAX JNZLI1 LOOPLI1 MOVDX,0EC0AH ;软件短延时 MOVAL,00000100B ;南北黄灭 OUTDX,AL MOVCX,3000H MOVAX,0100HWEN1:
DECAX JNZWEN1 LOOPWEN1 DECBL JNZSECOND THIRD:
MOVDX,0EC0AH MOVAL,10000001B OUTDX,AL MOVCX,0 MOVAX,4000H DELAY2:
DECAX JNZDELAY2 LOOPDELAY2 MOVBL,4 FORTH:
MOVDX,0EC0AH MOVAL,10000010B OUTDX,AL MOVCX,3000H MOVAX,0100HLI2:
DECAX JNZLI2 LOOPLI2 MOVDX,0EC0AH MOVAL,10000000B OUTDX,AL MOVCX,3000H MOVAX,0100HWEN2:
DECAX JNZWEN2 ;软件短延时;黄灯闪烁4次;写入C口 ;南北红,东西绿;软件长延时;控制黄灯亮的次数;写入C口;南北红,东西黄 ;软件短延时 ;东西黄灭3
LOOPWEN2 DECBL JNZFORTH ;黄灯闪烁4次 MOVDL,0FFH MOVAH,06H INT21H ;执行键盘输入操作 JZFIRST MOVAH,4CH INT21H ;返回操作系统CODEENDSENDSTART 五、总结 在本次实验中,我主要学会了如何控制延时时间,加长延时时间可以是二极管的闪烁是肉眼可见的。
还有就是尽管程序中有键盘输入后可以退出程序的语句,但是必须在程序恰好执行到这个语句时才能有效。
总体上这个程序还是比较简单的,只要按照流程就可以写出程序。
4 实验二可编程定时器/计数器 一、实验目的 掌握8253的基本工作原理和编程方法。
二、实验内容 1.按图3虚线连接电路,将计数器0设置为方式0,计数器初值为N,用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化。
CLK08253280H- GATE0CS OUT0图3 2.按图4连接电图,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化。
OUT18253 GATE1280H- CLK1 CS OUT0 GATE0 CLK01MHZ 图4 5 二、参考流程图 开始开始设计数器0为工作方式0设计数器0为工作方式3送计数器初值读计数器值向计数器0送初值1000先送低字节后送高字节设计数器1为工作方式3N显示计数器有按键按下吗?
Y向计数器1送初值1000先送低字节后送高字节结束结束 图5 图6 四、源程序及注释 源程序1:
CODESEGMENT ASSUMECS:
CODE START:
MOVDX,0EC03H MOVAL,10H ;设置控制字00010000 OUTDX,AL ;对控制寄存器写入控制字 MOVDX,0EC00H MOVAL,0FH ;将0FH存入AL寄存器 OUTDX,AL ;将此时AL的值送入DX端口 LP1:
INAL,DX ;从DX端口读入8位,放在AL寄存器中 CALLDISP ;调用DISP PUSHDX ;将DX内容保存到堆栈段 MOVAH,06H ;将06H存入AH,为了下句调用21中断 MOVDL,0FFH;将0FFH存入DL INT21H ;调用21中断 POPDX ;将DX的内容推出栈段 6 JZLP1 ;如果DX的内容是0,就跳转到LP1 MOVAH,4CH INT21H ;调用中断 DISPPROCNEAR ;定义一个名为DISP的子程序 PUSHDX ;把DX的内容保存到堆栈段中 ANDAL,0FH ;将AL寄存器的内容与0FH进行“与”运算,再把结果存入AL中 MOVDL,AL ;将AL的值送入DL寄存器 CMPDL,9 ;比较DL中的值与9的大小 JLENUM ;如果DL的值小于或等于9时,则跳转到NUM ADDDL,7 ;将DL的值与7进行相加后,再送入DL中NUM:
ADDDL,30H ;将DL的值与30H进行相加后,得到ASCII值 MOVAH,02H ;在屏幕上显示DL INT21H ;调用DOS21中断 MOVDL,0DH ;回车 INT21H ;调用中断指令 MOVDL,0AH ;换行 INT21H ;调用DOS21中断 POPDX ;将DX的内容推出栈段 RET ;子程序在功能完成后返回调用程序继续执行 DISPENDP CODEENDS ENDSTART 源程序2:
CODESEGMENT ASSUMECS:
CODE START:
MOVDX,0EC03H MOVAL,36H;设置控制字00110110 OUTDX,AL MOVAX,1000;向计数器0送初值1000 MOVDX,0EC00H;把计数器0地址放在DX寄存器中 OUTDX,AL ;将AL的低字节送入DX端口 MOVAL,AH OUTDX,AL ;将AX的高字节送入DX端口 MOVDX,0EC03H;把端口地址放在DX寄存器中 MOVAL,76H;设置控制字01110110 OUTDX,AL ;将AL的值送入DX端口 MOVAX,1000;向计数器1送初值1000 MOVDX,0EC01H;把端口地址放在DX寄存器中 OUTDX,AL ;将AL的低字节送入DX端口 MOVAL,AH OUTDX,AL ;将AX的高字节送入DX端口 MOVAH,4CH 7 INT21H ;调用DOS21中断CODEENDS ENDSTART 五、总结 通过本次实验,我更加深入的了解到8253的工作方式。
在实验中我用了计数器0,但是也可以改用计数器1,只需要改写控制字。
在显示数字时,对于0~9,要加上30H,而对于大于9的数字,要加上37H。
8
实验三中断 一、实验目的 1.掌握PC机中断处理系统的基本原理。
2.学会编写中断服务程序。
三、实验内容 PC机用户可使用的硬件中断只有可屏蔽中断,8259中断控制器管理。
中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。
IBMPC、PC/XT机内有一片8259中断控制器对外可以提供8个中断源:
中断源中断类型号中断功能IRQ0 08H 时钟IRQ1 09H 键盘IRQ2 0AH 保留IRQ3 OBH 串行口2IRQ4 0CH 串行口1IRQ5 0DH 硬盘IRQ6 0EH 软盘IRQ7 0FH 并行打印机 8个中断源的中断请求信号线IRQ0~IRQ7在主机的62线ISA总线插座中可以引出,系统已设定中断请求信号为“边沿触发”,普通结束方式。
对于PC/AT及286以上微机内又扩展了一片8259中断控制,IRQ2用于两片8259之间级连,对外可以提供16个中断源:
中断源中断类型号中断功能IRQ8 070H 实时时钟IRQ9 071H 用户中断IRQ10 072H 保留IRQ11 073H 保留IRQ12 074H 保留 9 IRQ13 075H 协处理器IRQ14 076H 硬盘IRQ15 077H 保留 PCI总线中的中断线只有四根,INTA#、INTB#、INTC#、INTD#,它们需要通过P&P的设置来和某一根中断相连接才能进行中断申请。
IRQ+5图7 实验电路如图7,直接用手动产单脉冲作为中断请求信号。
要求每按一次开关产生一次中断,在屏幕上显示一次“TPCpcicardInterrupt”,中断10次后程序退出。
三、参考流程图 10 开始关中断设置TPC卡中断使能保存原中断向量设置新中断向量设置中断掩码显示提示信息开中断Y计数器为0?
N中断开始Y按任意键?
N关中断计数器减一显示提示信息发出EOI结束中断开中断中断返回 恢复中断掩码恢复原中断向量设置TPC卡中断关闭结束返回图8 图9 四、源程序及注释 源程序:
datasegment int_vectEQU073H ;中断0-7的向量为:
08h-0fh,中断8-15的向量为:
70h-77h irq_mask_2_7equ11111011b ;中断掩码,中断0-7时从低至高相应位为零,中断8-15时第 2位为零 11 irq_mask_9_15equ11110111b;中断0-7时全一,中断8-15时从低至高相应位为零ioport_centequ0E800h;tpc卡中9054芯片的io地址csregdw ?
ipregdw ?
;旧中断向量保存空间irq_times dw 00h ;中断计数 msg1 db 0dh,0ah,’TPCpcicardInterrupt’,0dh,0ah,’$’msg2 db 0dh,0ah,’Pressanykeytoexit!
’,0dh,0ah,’$’ msg3 db 0dh,0ah,’PressDMCtointerrupt10timesandexit!
’,0dh,0ah,’$’dataends stacksegmentstack db100dup(?
)stackends codesegmentassumecs:
code,ds:
data,ss:
stack,es:
datastart:
;EnableLocalInterruptInput.386climovax,data movds,axmoves,axmovax,stackmovss,ax movdx,ioport_cent+68h;设置tpc卡中9054芯片io口,使能中断inax,dxorax,0900houtdx,ax moval,int_vect ;保存原中断向量movah,35hint21hmovax,esmovcsreg,axmovipreg,bx movax,segint_proc ;设置新中断向量movds,ax movdx,offsetint_procmoval,int_vectmovah,25hint21h in al,21h ;设置中断掩码 12 and al,irq_mask_2_7out 21h,alin al,0a1h and al,irq_mask_9_15out 0a1h,almovax,datamovds,ax movdx,offsetmsg2movah,09hint21h movdx,offsetmsg3movah,09hint21h movirq_times,0ahsti loop1:
cmpirq_times,0 ;等待中断并判断中断10次后退出 jzexitmovah,1 int16h jnzexit ;按任意键退出jmploop1 exit:
climov bl,irq_mask_2_7 ;恢复中断掩码 not blin al,21hor al,bl out 21h,al mov bl,irq_mask_9_15not bl in al,0a1hor al,blout 0a1h,al movdx,ipreg ;恢复原中断向量movax,csregmovds,axmovah,25hmoval,int_vectint21h 13
movdx,ioport_cent+68h ;设置tpc卡中9054芯片io口,关闭中断inax,dxandax,0f7ffhoutdx,axmovax,4c00hint21h int_procprocfar pushaxpushdxpushds decirq_times movax,data ;Interrupttodomovds,axmovdx,offsetmsg1movah,09hint21h moval,20h ;SendEOIout0a0h,alout20h,alpopdspopdxpopaxsti iret int_procendp codeendsendstart 五、总结 本次实验的程序比较复杂,所以我用的是老师所准备的程序。
但是仍花了很多的时间在程序上。
在程序中,有很多的中断掩码、中断向量的设置和保存,感觉有些糊涂。
但是在看了几遍之后也是可以理解的。
这次实验让我了解到很多程序都是比较复杂的。
我还有很多要去学习。
14 实验四模/数转换器 一、实验目的 了解模/数转换的基本原理,掌握ADC0809的使用方法。
二、实验内容 实验电路原理图如图10。
通过实验台左下角电位器RW1输出0~5V直流电压送入ADC0809通道0(IN0),编程采集IN0输入的电压,在屏幕上显示出转换后的数据。
Ref(+) msb2-1+5VCC 2-2 2-3GND 2-4Ref(-) 2-5 2-6 2-7CLOCK lsb2-8IN-2 ADD-C ADD-BIN-1 ADD-A EOC ALED7D6D5D4D3D2D1D0A2A1A0EOCIOWU8:
A1MHz+5IN1IN0+5 STARTIN-0 ENABLERW110KCSIOR298HU9ADC0809U8:
B74LS02 图10 三、参考流程图 15 开始启动A/D转换延时读入转换后数据所读数据赋给BL将数据右移四位调显示子程序显示其高四位从BL中取出数据和OFH相与调显示子程序显示其低四位有键按下吗?
NY结束图11 四、源程序及注释 源程序:
codesegment assumecs:
code start:
movdx,0ec18h;启动A/D转换器outdx,alnopnopnopnop inal,dx;从A/D转换器输入数据movbl,al;将AL保存到BLmovcl,4 shral,cl;将AL右移四位 calldisp;调显示子程序显示其高四位moval,blandal,0fh 开始将AL赋给DLDL大于9吗?
NYDL加7DL加30H显示ASCII码为DL的字符结束 图12 16 calldisp;调显示子程序显示其低四位movah,02hmovdl,20hint21hmovdl,20hint21hpushdx movah,06h;判断是否有键按下movdl,0ffhint21hpopdx jestart;若没有转STARTmovah,4ch;退出int21h dispprocnear;显示子程序movdl,al cmpdl,9;比较DL是否>9 jleddd;若不大于则为’0’-’9’,加30h为其ASCII码adddl,7;否则为’A’-’F’,再加7ddd:
adddl,30h;显示movah,02int21hret dispendpcodeendsendstart 五、总结 本次实验也不是很难,碰到的问题主要是屏幕的显示。
当我改动movah,02hmovdl,20hint21hmovdl,20h int21h 这一部分的程序时,屏幕显示十分混乱,但仍是正确的。
经过研究,是因为空格的个数改变了导致显示有重叠。
17 实验五PC机串行通讯实验 一、实验目的 1、进一步了解串行通信的基本原理。
2、掌握串行接口芯片8250的工作原理和编程方法。
3、熟悉PC机串行口的基本连接方法 二、实验内容 1、PC机RS-232串口自发自收。
按照PC机串口自发自收的连接方法连线。
编写PC机自发自收串行通信程序,要求:
从键盘输入一个字符,将字符通过串口发送出去,再此串口将字符接收回来并在屏幕上显示,实现自发自收。
2、两台PC机间RS-232串口通信。
按照PC机RS-232串口直接互连的方法连接两台PC机。
编写PC机直接互连串行通信程序;要求:
甲机键盘键入字符经串口发送给乙机,再乙机通过串口接收字符并显示在屏幕上。
当键入感叹号“!
”,结束收发过程。
3、连线图:
图13 图14 18
三、源程序及注释 1、PC机RS-232串口自发自收源程序:
DATASEGMENT CHLDB0AH,0DH,’$’;换行字符串DATAENDS STACK1SEGMENTSTACK DW100DUP(0)STACK1ENDS CODESEGMENT ASSUMECS:
CODE,DS:
DATA,SS:
STACK1START:
MOVAX,DATA MOVDS,AXMOVDX,3FBH;MOVAL,80H;DLAB=1 OUTDX,AL MOVAX,0CH;N=12BAUD=9600bps MOVDX,3F8H;低位 OUTDX,AL MOVAL,AHINCDX OUTDX,AL MOVAL,03H;八位数据,1停止,无校验MOVDX,3FBH;线路控制REG OUTDX,AL MOVAL,0;屏蔽全部中断MOVDX,3F9H OUTDX,AL WAIT1:
MOVDX,3FDH;读线路状态寄存器 INAL,DX TESTAL,1EH;判断是否有错JNZERROR TESTAL,01H;判断是否收到JNZRECEIVE TESTAL,20H;判断发送端是否空JZWAIT1 19 MOVDL,0FFH;六号功能调用读入待发送数据MOVAH,06HINT21HJZWAIT1 MOVDX,3F
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京 交通大学