北京交通大学
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京交通大学
微机接口实验实验报告姓名:学号:班级: 1 目录实验一交通灯控制实验---------------------------------------------------------1 实验二实验三实验四实验五实验六可编程定时器/计数器-----------------------------------------5 中断--------------------------------------------------------------------------9 模/数转换器-------------------------------------------------------------15 PC机串行通讯实验----------------------------------------------------18 竞赛抢答器--------------------------------------------------------------24 2 实验一交通灯控制实验一、实验目的通过并行接口8255实现十字路
口交通灯的模拟控制,进一步掌握对并行口的使用。二、实验内容如图1,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律燃灭。L7L6L5L2L1L0 PC7 PC6 PC5PC2 PC1 PC0 288H—28FHCS8255 图 1 十字路口交通灯的变化规律要求:南北路口的绿灯、东西路口的红灯同时亮3秒左右。南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。南北路口的红灯、东西路口的绿灯同时亮3秒左右。南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。转重复。8255动态分配地址:控制寄存器:28BH 0EC0BH A口地址:288H 0EC08H C口地址:28AH 0EC0AH三、参考流程1 开始设置8255A口输出C口输出南北路口绿灯亮,东西路口红
灯亮长延时南北路口黄灯闪,东西路口红灯亮南北路口红灯亮,东西路口绿灯亮长延时南北路口红灯亮,东西路口黄灯闪是否有键按下返回DOS图 2 四、源程序及注释源程序:CODE SEGMENT ASSUME CS:CODE START: MOV DX,0EC0BH MOV AL,10010000B;C口方式0输出,A 口输入OUT DX,AL FIRST: MOV DX,0EC0AH MOV AL,00100100B OUT DX,AL;南北绿,东西红写入C口MOV CX,0;送入初值65536 MOV AX,4000H;软件长延时,经验值确定DELAY1:DEC AX JNZ DELAY1LOOP DELAY1 MOV BL,4;控制黄灯亮的次数SECOND:MOV DX,0EC0AH MOV AL,01000100B 2 OUT DX,AL;南北黄,东西红MOV CX,3000H MOV AX,0100H
LI1: DEC AX JNZ LI1 LOOP LI1 MOV DX,0EC0AH;软件短延时MOV AL,00000100B;南北黄灭OUT DX,AL MOV CX,3000H MOV AX,0100H WEN1: DEC AX JNZ WEN1LOOP WEN1 DEC BL JNZ SECOND THIRD: MOV DX,0EC0AH MOV AL,10000001B OUT DX,AL MOV CX,0 MOV AX,4000H DELAY2:DEC AX JNZ DELAY2 LOOP DELAY2MOV BL,4FORTH: MOV DX,0EC0AH MOV AL,10000010B OUT DX,AL MOV CX,3000H MOV AX,0100H LI2:DEC AX JNZ LI2 LOOP LI2MOV DX,0EC0AH MOV AL,10000000B OUT DX,AL MOV CX,3000H MOV AX,0100H WEN2:DEC AX JNZ WEN2 ;软件短延时;黄灯
闪烁4次;写入C口;南北红,东西绿;软件长延时;控制黄灯亮的次数;写入C口;南北红,东西黄;软件短延时;东西黄灭 3
LOOP WEN2 DEC BL JNZ FORTH;黄灯闪烁4次MOV DL,0FFH MOV AH,06H INT 21H;执行键盘输入操作JZ FIRST MOV AH,4CH INT 21H;返回操作系统CODE ENDS END START 五、总结在本次实验中,我主要学会了如何控制延时时间,加长延时时间可以是二极管的闪烁是肉眼可见的。还有就是尽管程序中有键盘输入后可以退出程序的语句,但是必须在程序恰好执行到这个语句时才能有效。总体上这个程序还是比较简单的,只要按照流程就可以写出程序。 4 实验二可编程定时器/计数器一、实验目的掌握8253的基本工作原
理和编程方法。二、实验内容1.按图3虚线连接电路,将计数器0设置为方式0,计数器初值为N,用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化。CLK0 8253280H-GATE0CS OUT0 图3 2.按图4连接电图,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化。OUT1 8253 GATE1280H-CLK1CS OUT0GATE0CLK01MHZ 图4 5 二、参考流程图开始开始设计数器0为工作方式0设计数器0为工作方式3送计数器初值读计数器值向计数器0送初值1000先送低字节后送高字节设计数器1为工作方式3N显示计数器有按键按下吗?Y向计数器1送初值1000先送低字节后送高字节结束结束图5图6 四、源程序及注释源程
序1:CODE SEGMENT ASSUME CS:CODE START:MOV DX,0EC03H MOV AL,10H;设置控制字00010000 OUT DX,AL;对控制寄存器写入控制字MOV DX,0EC00H MOV AL,0FH;将0FH存入AL寄存器OUT DX,AL;将此时AL的值送入DX端口LP1: IN AL,DX;从DX端口读入8位,放在AL寄存器中CALL DISP;调用DISP PUSH DX;将DX内容保存到堆栈段MOV AH,06H;将06H存入AH,为了下句调用21中断MOV DL,0FFH ;将0FFH存入DL INT 21H;调用21中断POP DX;将DX的内容推出栈段 6 JZ LP1;如果DX的内容是0,就跳转到LP1MOV AH,4CH INT 21H;调用中断DISP PROC NEAR;定义一个名为DISP的子程