当前位置:文档之家› 微机原理与接口技术实验报告

微机原理与接口技术实验报告

微机原理与接口技术实验报告班级:自动化(铁道信号)姓名: *****学号: 1121****授课教师:福恩目录1.实验一 (3)2. 实验二 (8)3.实验三 (13)4.实验四 (22)5.实验五 (26)6.实验六 (33)7.参考文献 (38)实验一交通灯控制实验一.实验目的通过应用接口技术设计十字路口、复杂路口交通灯控制系统,学会应用“微机原理与接口技术”课程所学的X86汇编语言和接口技术掌握可编程并行接口芯片的硬件设计、软件编程,实现十字路口交通灯的模拟控制并思考计算机如何应用在各种控制系统中。

(1)掌握利用X86汇编语言技巧(2)掌握X86微处理器与可编程并行接口芯片8255A硬件电路设计(3)熟悉模拟交通灯控制的实现方法并思考如何应用在实际中。

二.实验容设计一个交通控制系统,该控制系统工作后,交通灯按照如下规律变化:(1)南北路口的绿灯、东西路口的红灯同时亮3秒左右。

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

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

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

(5)返回(1)依次循环。

三.实验电路如下图,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。

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

8255动态分配地址:控制寄存器:0EC0BHA口地址: 0EC08HC口地址: 0EC0AH红黄绿红黄绿图1-1 交通灯实验电路图四.程序流程图五.源程序CODE SEGMENTASSUME CS:CODE;********************************** 工作状态控制字设置START: MOV DX,0EC0BH ;写控制端口,地址0EC0BH MOV AL,10010000B ;C口方式0输出OUT DX,AL;**********************************南北路口绿灯亮,东西路口红灯亮FIRST: MOV DX,0EC0AH ;写PC口,地址0EC0AH MOV AL,00100100B ;南北绿,东西红,PC口写00100100OUT DX,AL;------------------------------两层嵌套实现长延时MOV CX,0 ;外层循环送入初值65536MOV AX,2000H ;层循环送入初值2000HDELAY1: DEC AXJNZ DELAY1LOOP DELAY1;**********************************南北路口黄灯闪烁,东西路口红灯亮MOV BL,5 ;BL控制黄灯亮的次数5次SECOND:MOV DX,0EC0AHMOV AL,01000100BOUT DX,AL ;南北黄,东西红MOV CX,3000HMOV AX,0100HLI1:DEC AXJNZ LI1LOOP LI1MOV DX,0EC0AH ;短延时MOV AL,00000100B ;南北路口黄灯先灭OUT DX,ALMOV CX,3000HMOV AX,0100HWEN1:DEC AXJNZ WEN1 ;短延时LOOP WEN1DEC BLJNZ SECOND ;南北路口黄灯再亮;**********************************南北路口红灯亮,东西路口绿灯亮THIRD: MOV DX,0EC0AH ;写入C口MOV AL,10000001BOUT DX,AL ;南北红,东西绿MOV CX,0 ;长延时MOV AX,2000HDELAY2: DEC AXJNZ DELAY2LOOP DELAY2MOV BL,4 ;控制黄灯亮的次数FORTH: MOV DX,0EC0AH ;写入C口MOV AL,10000010BOUT DX,AL ;南北红,东西黄MOV CX,3000HMOV AX,0100HLI2:DEC AXJNZ LI2 ;短延时LOOP LI2;**********************************南北路口红灯亮,东西路口黄灯闪烁MOV DX,0EC0AHMOV AL,10000000BOUT DX,AL ;东西路口黄灯先灭MOV CX,3000HMOV AX,0100HWEN2:DEC AXJNZ WEN2LOOP WEN2DEC BLJNZ FORTH ;东西路口黄灯再亮MOV DL,0FFH;**********************************检测是否有键按下,调用6号功能MOV AH,06HINT 21H ;执行键盘输入操作JZ FIRSTMOV AH,4CHINT 21H ;返回操作系统CODE ENDSEND START六.实验总结这是我们的首个微机原理实验,对实验箱以及TPC-2003集成开发环境都比较陌生,也没有事先编写好程序,因此时间很紧,今后一定要在实验前做好充分的预习工作,现根据实验指导书上的要求,编写好程序。

这个实验主要是用8255的定时功能来定时,然后使用JZ、JNZ来实现闪烁和红绿灯转换等功能,运用循环进行延时,实验中还使用了6号功能来实现显示的功能。

通过这次实验使我对8255的工作原理、定时功能有了进一步的了解,同时也对汇编的程序结构和调试方法更加熟悉。

一开始,程序编译连接都没有错误,但是有一个红灯一直亮,其他功能均正常,我又去检查程序是否存在逻辑错误,并反调试运行,都不能解决问题,后来在别人的实验箱上就运行成功了,可靠的硬件保障是实验成功的首要条件。

实验二可编程定时器/计数器一.实验目的通过实验了解可编程定时器/计数器的本质是计数,学会再设计应用系统中如何用接口芯片实现计数和定时功能,通过实验思考并比较标准TTL集成电路实现计数和可编程定时器/计数器有什么不同,各有哪些特点?思考计数器可以用哪些场合。

(1)掌握8253A与X86微机处理硬件连接原理。

(2)掌握8253A计数定时应用编程。

(3)熟悉掌握8253A在PC机系统中典型应用方法并思考如何应用在其他系统中。

二.实验容(1)利用单脉冲发生器作为8253A可编程计数定时器时钟信号,实现N个脉冲后产生输出高电平信号。

(2)利用8253A可编程计数定时器实现产生1S钟定时输出程序设计,输入1MHZ。

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

图2.1 可编程计时器/计数器电路图一2.按图2.2连接电路图,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率为1MHz)。

图2.2 可编程定时器/计数器电路图二四.实验原理8253具有3个独立的计数通道,采用减1计数方式。

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

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

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

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

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

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

方式3—方波发生器:OUT输出低电平,装入计数值后,OUT立即跳变为高电平。

如果当GATE为高电平,则立即开始减“1”计数,OUT保持为高电平,若n为偶数,则当计数值减到n/2时,OUT跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值n,实现循环计数。

这时OUT端输出的周期为n×CLKi周期,占空比为1:1的方波序列;若n为奇数,则OUTi端输出周期为n×CLK周期,占空比为((n+1)/2)/((n-1)/2)的近似方波序列。

8253动态分配地址:控制寄存器: 0EC03H计数器0地址: 0EC00H计数器1地址: 0EC01HCLK0连接时钟: 1MHZ五.程序流程图图2.3 可编程定时器/计数器流程图六.源程序(1)DATA SEGMENTN EQU 0BH ;定义计数器初值N,初值N在0到F之,便于字符显示简单STRING DB 0AH,0DH,'$' ;定义STRING用来换行,0DH回车,0AH换行,$是字符串的结尾标志DATA ENDSSTACK1 SEGMENT STACKDW 100 DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AX;*************************************************8253的初始化MOV DX,0EC03H ;控制寄存器地址0EC03HMOV AL,10H ;计数器0:00,只读/写计数器的低字节:01,方式0:000,;二进制计数:0, 所以控制字写00010000BOUT DX,AL ;写入控制字MOV DX,0EC00H ;计数器0地址0EC00HMOV AL,NOUT DX,AL ;写入计数初值为N,即0BH,11MOV CL,N ;用CL控制计数N次L00P: MOV DX,0EC00HIN AL,DX ;读取当前数值CMP AL,CLJNE L00P ;若AL不等于CL,则继续到L00P循环DEC CL ;更改CL值;*****************************************************单字符输出程序,先转换成ASIICMOV DL,ALCMP DL,09H ;转换为ASIIC,0~9的数字加30,A到F加37JLE ADD30ADD DL,07H ; A~F先加7,下一步再加30ADD30: ADD DL,30HMOV AH,02H ;02号功能是单字符输出显示,显示计数器当前值INT 21H;******************************************************MOV DX,OFFSET STRING ;换行MOV AH,09H ;,INT 21HCMP CL,0JNL L00P ;循环至CL等于0,即N次MOV AH,4CHINT 21HCODE ENDSEND START(2)DA TA SEGMENTN DB 07HDA TA ENDSSTACK1 SEGMENT PARA STACKDB 20 DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS: CODESTART: MOV AL, 36H ;设置8253计数器0为工作方式3,十进制计数MOV DX,0EC03HOUT DX, AL ;送方式控制字到控制口MOV DX, 0EC00HMOV AX, 1000 ;计数初值为1000OUT DX, AL ;送计数初值的低字节到计数器0的端口MOV AL, AHOUT DX, AL ;送计数初值的高字节到计数器0的端口MOV AL, 76H ;设置8253计数器1为工作方式3,十进制计数MOV DX, 0EC03HOUT DX, AL ;送方式控制字到控制口MOV DX, 0EC01HMOV AX, 1000 ;计数初值为1000OUT DX, AL ;送计数初值的低字节到计数器1的端口MOV AL, AHOUT DX, AL ;送计数初值的高字节到计数器1的端口MOV AH, 4CH ;返回DOSINT 21HCODE ENDSEND START七.实验总结经过第一次实验的教训后,我在实验前做了充足的预习工作,已经将程序写好,只需要在实验室连接外部电路,调试程序即可,因此实验进行得很顺利。

相关主题