当前位置:文档之家› 北京交通大学微机原理实验报告

北京交通大学微机原理实验报告

微机原理实验报告隋伟08212013自动化0801目录一、I/O地址译码与交通灯控制实验 (3)二、可编程定时器/计数器(8253) (6)三、中断实验(纯DOS) (11)四、模/数转换器…………………………………………………………18五、串行通讯……………………………………………………………16六、课程综合实验(抢答器) ……………………………………………28七、自主设计实验——LED显示 (32)八、参考文献 (35)一、I/O地址译码与交通灯控制实验一.实验目的通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。

二.实验内容如图5-3,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。

编程使六个灯按交通灯变化规律燃灭。

十字路口交通灯的变化规律要求:(1)南北路口的绿灯、东西路口的红灯同时亮3秒左右。

(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。

(3)南北路口的红灯、东西路口的绿灯同时亮3秒左右。

(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。

(5)转(1)重复。

8255动态分配地址: 控制寄存器: 0C40BHA口地址: 0C408HC口地址: 0C40AH三.程序流程图和程序清单DATA SEGMENTX DB ?DATA ENDSSTACK1 SEGMENT STACKDW 100H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATAMOV DS,AX;---------------INIT---------------- MOV DX,0C40BH ;写控制字MOV AL,80HOUT DX,ALL3: MOV DX,0C40AHMOV AL,24H ;南北绿灯,东西红灯亮OUT DX,ALCALL DELAYCALL DELAY ;长延时,3s左右CALL DELAYCALL DELAYCALL DELAYCALL DELAYCALL DELAYMOV BL,8MOV AL,04HL0: XOR AL,40H ;南北黄灯闪,东西红灯亮OUT DX,ALCALL DELAY ;延时CALL DELAYDEC BL ;闪烁几次JNZ L0CALL DELAYMOV AL,81H ;南北红灯亮,东西绿灯亮OUT DX,ALCALL DELAYCALL DELAYCALL DELAY ;长延时,3s左右CALL DELAYCALL DELAYCALL DELAYCALL DELAYMOV BL,9MOV AL,80HL1: XOR AL,02H ;南北红灯亮,东西黄灯闪OUT DX,ALCALL DELAY ;延时CALL DELAYDEC BLJNZ L1 ;闪烁几次CALL DELAYMOV DL,0FFHMOV AH,06HINT 21HJZ L3 ;六号功能判断若无字符输入ZF=1继续循环;------------------------------MOV AH,4CHINT 21H;-----------延时函数------------DELAY : PUSH CXPUSH DXMOV CX,1FFFHLOP1: MOV DX,0FFFFHLOP2: DEC DXJNZ LOP2LOOP LOP1POP DXPOP CXRETCODE ENDSEND START四.实验遇到的问题和解决方法问题:绿灯灭后黄灯没有出现闪烁的效果,一直保持常亮解决方法:修改程序,通过利用异或和循环指令使绿灯灭、红灯亮后,黄灯口的状态从0到1循环变换,并通过调用延迟子程序,从而实现人眼可辨的黄灯闪的效果。

二、可编程定时时钟/计数器(8253)一、实验目的掌握8253的基本工作原理和编程方法。

二、实验内容1.按图5-1虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。

图5-12.按图5-2连接电图,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。

图5-2三.实验原理8253具有3个独立的计数通道,采用减1计数方式。

在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。

当计数脉冲是已知周期的时钟信号时,计数就成为定时。

作计数器时,要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。

8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。

本实验用到的是方式0—计数结束中断。

在写入计数值N之后的第一个CLK的下降沿将N装入计数执行单元,待下一个CLK的下降沿到来且门控信号GATE为高电平时,通道开始启动计数。

在计数过程中,OUT一直保持低电平,直到计数达“0”时,OUT输出由低电平变为高电平,并且保持高电平。

8253动态分配地址: 控制寄存器: 0C403H计数器0地址: 0C400H计数器1地址: 0C401H四.程序流程图和程序清单1)DATA SEGMENTN E QU 0BH ;计数器初值,不大于0FHCHL DB 0AH,0DH,'$' ;换行DATA ENDSSTACK1 SEGMENT STACKDW 100 DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AX;--------------INIT----------------MOV DX,0C403H ;控制寄存器地址MOV AL,10H ;计数器0,低字节,方式0,二进制计数OUT DX,AL ;写入控制字MOV DX,0C400HMOV AL,NOUT DX,AL ;写入计数初值MOV CL,NL0: ;MOV AL,0 ;计数器0锁存;MOV DX,IO8253;OUT DX,ALMOV DX,0C400HIN AL,DX ;读取当前数值CMP AL,CLJNE L0 ;若AL不等于CL,则继续到L0循环DEC CL ;更改CL值MOV DL,ALCMP DL,09H ;是0~9吗?JLE ASCIADD DL,07H ;是A~FASCI: ADD DL,30HMOV AH,02H ;单字符输出计数器当前值INT 21HMOV DX,OFFSET CHL ;输出字符串换行MOV AH,09HINT 21HCMP CL,0JNL L0 ;CL不小于0时,继续循环;------------------------------MOV AH,4CHINT 21HCODE ENDSEND START2)DATA SEGMENTX DB ?DATA ENDSSTACK1 SEGMENT STACKDW 100H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXMOV AL,36HMOV DX,0C403H ;写计数器0控制字OUT DX,ALMOV AX,1000 ;写计数器0初值MOV DX,0C400HOUT DX,AL ;先写低字节后写高字节MOV AL,AHOUT DX,AL;-----------------------------------------------MOV AL,76HMOV DX,0C403HOUT DX,AL ;写计数器1控制字MOV AX,1000 ;写计数器0初值MOV DX,0C401HOUT DX,ALMOV AL,AH ;先写低字节后写高字节OUT DX,ALCODE ENDSEND START五.实验遇到的问题和解决方案问题:计数初值没有显示出来解决方法:进行TD调试,发现逻辑上出现了问题。

修改程序,通过利用CMP AL,CL JNZ L0来实现将所有的计数值都显示出来。

三、中断实验(纯DOS)一、实验目的1、掌握PC机中断处理系统的基本原理。

2、学会编写中断服务程序。

二、实验原理与内容1、实验原理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个中断源:中断源中断类型号中断功能52IRQ8 070H 实时时钟IRQ9 071H 用户中断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芯片的控制寄存器,中断实验需要在纯DOS的环境中才能正常运行。

这里指的纯DOS环境是指微机启动时按F8键进入的DOS环境。

WINDOWS重启进入MSDOS方式由于系统资源被重新规划过,所以也不能正常实验。

2. 由于TPC卡使用PCI总线,所以分配的中断号每台微机可能都不同,编程时需要了解当前的微机使用那个中断号并进行设置,获取方法请参看汇编程序使用方法的介绍。

(也可使用自动获取资源分配的程序取得中断号)3. 在纯DOS环境下,有些微机的BIOS设置中有将资源保留给ISA总线使用的选项,致使在纯DOS环境(WINDOWS环境下不会出现此问题)下PCI总线无法获得系统资源,也就53无法做实验,这时需要将此选项修改为使用即插即用。

相关主题