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

  • 格式:doc
  • 大小:265.00 KB
  • 文档页数:17

微机原理与接口技术实验报告班级:通信0702姓名:刘海帝学号:07211045实验一:可编程定时器/计数器(8253)一、实验目的:掌握8253的基本工作原理和编程方法二、实验内容:1.按下图虚线连接电路,将计数器0设置为方式0,计数初值为N(N<=0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。

流程图为:2、按下图连接电路,将计数器0、计数器1设置为方式3,计数初值为1000,用逻辑笔观察OUT1输出电平的变化(1Hz)。

流程图如下:三、编程提示:8253控制寄存器地址 283H 替换后:C403H计数器0地址 280H 替换后:C400H计数器1地址 281H 替换后:C401HCLK0连接时钟 1MHz四、实验程序:1-1STACK1 SEGMENT STACKDW 100H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK1START:MOV DX,C403HMOV AL,00010000B;计数器0,只读写低字节,工作方式0,二进制计数OUT DX,ALMOV DX,C400HMOV AL,6OUT DX,AL;写初值L0:MOV DX,C400HIN AL,DX;读计数器计数值ADD AL,30H;<9,加30H转换为ASCII码MOV DL,ALMOV AH,02HINT 21H;2号功能调用,显示MOV DL,0DHMOV AH,02HINT 21HCMP AL,0;计数值为0时结束JZ L1MOV AH,06HMOV DL,0FFHINT 21H;判断有无键按下JZ L0;无键按下,继续计数,有键按下,结束L1:MOV AH,4CHINT 21HCODE ENDSEND START1-2CODE SEGMENTASSUME CS:CODESTART:MOV DX,0C403HMOV AL,00110110B;计数器0,依次读写低字节,高字节,方式3OUT DX,ALMOV DX,C400HMOV AX,1000OUT DX,AL;写计数值低字节MOV AL,AHOUT DX,AL;写计数值高字节MOV DX,C403HMOV AL,01110110B;计数器1,依次读写低字节,高字节,方式3OUT DX,ALMOV DX,C401HMOV AX,1000OUT DX,AL;写计数值低字节MOV AL,AHOUT DX,AL;写计数值高字节MOV AH,4CHINT 21HCODE ENDSEND START五、实验现象及分析1.实验1中运行后,逻辑笔代表低电平的绿灯亮,当按下脉冲键后,屏幕上显示出计数值,依次为5,4,3,2,1,0.计数结束后,输出高电平,逻辑笔红灯亮。

2.实验2运行后逻辑笔交替输出高低电平,红灯和绿灯分别闪烁,周期为1Hz。

周期为1Hz的原因是输入的方波为1MHZ,经过计数器0以1000进行分频,计数器1以1000分频,正好为1HZ。

第一次编程,程序运行中遇到了一些意想不到的问题。

比如,忽略了字符串型常数,每个字符在机内以ASCII码存放;还有就是在运行后,屏幕上显示的是一连串的同一个字符,和同学讨论之后,引入一个2号功能调用:MOV DL,0DH ;回车的ASCII码为0DHMOV AH,02HINT 21H此题编程比较简单,原理易懂。

实验二:交通灯控制实验一、实验目的:通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行接口的使用。

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

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

三、编程提示:8255控制寄存器端口地址:28BH 替换后:C40BHA口的地址: 288H 替换后:C408HB口的地址: 28AH 替换后:C40AH流程图:四、实验程序STACK1 SEGMENT STACKDB 200H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK1START:MOV DX,0C40BH;控制端口地址为0C40BHMOV AL,10000000B;A,B,C三个端口设为方式0,输出 OUT DX,ALL0: MOV DX,0C40AH;C口地址为0C40AHMOV AL,00100100B;南北路口绿灯亮,东西路口红灯亮 OUT DX,AL;写入C口CALL DELAY1;调用延时子程序1MOV CX,4;闪烁计数L1: MOV AL,01000100B ;南北黄灯亮,东西红灯亮OUT DX,ALCALL DELAY2;调用延时程序2MOV AL,00000100B ;南北黄灯灭,东西红灯亮OUT DX,ALCALL DELAY2;调用延时子程序2LOOP L1;计数值减一,不为0,转移到L1MOV AL,10000001B ;南北红灯亮,东西绿灯亮OUT DX,ALCALL DELAY1 ;调用延时子程序1MOV CX,4L2: MOV AL,10000010B ;南北红灯亮,东西黄灯亮OUT DX,ALCALL DELAY2;调用延时程序2MOV AL,10000000B ;南北红灯亮,东西黄灯灭OUT DX,ALCALL DELAY2;调用延时程序2LOOP L2 ;计数值减一,不为0,跳至L2MOV DL,0FFHMOV AH,06HINT 21HJZ L0;无键按下,循环,按任意键结束MOV AH,4CH ;退出DOS系统INT 21HDELAY1 PROC ;延时子程序1,长延时PUSH CXPUSH BXPUSH AXMOV CX,0FFFFHT0: MOV BX,0FFFFHT1: DEC BXMOV AX,0FFFFHT2: DEC AXJNZ T2JNZ T1LOOP T0;设置三层嵌套,每一层计数值均为0FFFFH,总计数值FFFF*FFFF*FFFFPOP BXPOP AXPOP CXRETDELAY1 ENDPDELAY2 PROCPUSH CXPUSH AXMOV CX,3000HT3: MOV AX,0FFFFHT4: DEC AXJNZ T4LOOP T3;二层嵌套,外层嵌套为3000H,内层嵌套为0FFFFH,总计数值为A000*FFFFPOP AXPOP CXRETDELAY2 ENDPCODE ENDSEND START五、实验现象及分析:红黄绿灯变化规律如下:南北路口的绿灯、东西路口的红灯同时亮3秒左右;南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮;南北路口的红灯、东西路口的绿灯同时亮3秒左右;南北路口的红灯继续亮,同时东西路口的黄灯闪烁若干次;依次重复。

最开始时延时过短,灯闪烁,而不是一直亮,增加了延时改进了效果,达到了实验的要求。

本题的原理较容易弄懂,最容易出现问题的是在延时中CX和AX 中值得设定上,经过多次试验,最终找到了比较符合题目要求的数值。

此题较大的难点在于将实际观察到的现象转换为编程所需要的逻辑思路,也就是子延时的合理设定,将起到决定性的作用。

实验三:竞赛抢答器一、实验目的:1.了解微机化竞赛抢答器的基本原理2.进一步学习使用并行接口二、实验内容:图5-4为竞赛抢答器(模拟)的原理图,逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下。

在七段数码管上将其组号(0~7)显示出来,并使喇叭响一下。

从键盘上按空格键开始下一轮抢答,按其它键程序退出。

三、编程提示:设置8255为C口输入、A口输出,读取C口数据,若为0表示无人抢答,若不为0则有人抢答。

根据读取数据可判断其组号。

从键盘上按空格键开始下一轮抢答,按其它键程序退出。

响铃的DOS 功能调用:MOV DL, 7 ; 响铃ASCII 码为07 MOV AH ,2 INT 21H流程图:四、实验程序DATA SEGMENTLIST DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H;0-7PORT_A EQU 0C408H;A口地址 PORT_C EQU 0C40AH;C 口地址PORT_CTRL EQU 0C40BH;控制寄存器地址 DATA ENDS STACK1 SEGMENT STACKDB 200H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXMOV AL,10001001B;A口B口方式0输出,C口输入MOV DX,PORT_CTRLOUT DX,ALL1: MOV BX,OFFSET LISTMOV DX,PORT_CIN AL,DXCMP AL,0JZ L1;;读C口开关状态,若全为0,再读MOV CX,-1L2: SHR AL,1;右移一位,最高位补0INC CX;计数器加一CMP AL,0JNZ L2;循环至AL数据全为0,计数器记录第几个开关被按下L3: AND CX,0FH;屏蔽计数器高位ADD BX,CX;确定被按下的开关对应显示代码的偏移地址MOV AL,[BX];将显示代码存入ALMOV DX,PORT_AOUT DX,AL ;将显示代码写入A口输出MOV DL,7MOV AH,2INT 21H;响铃JUST: MOV AH,01HINT 21HCMP AL,20HJZ OFF;键盘输入空格则转至OFFJMP OVEROFF: MOV AL,00HMOV DX,PORT_AOUT DX,ALJMP L1;AL清零,转至L1重新开始抢答OVER: MOV AH,4CHINT 21HCODE ENDSEND START五、实验现象及分析:程序调入后,运行调试,将对应着数字的按键置于高电平,则数码管显示相应的数字,并且计算机发出蜂鸣声。

将按键置于低电平后,按下空格键,开始新一轮抢答。

在编程时应该注意,使用SHR的时候,用该先移位后赋值,或者赋值后在移位的基础上减一,才能保证数码管显示与开关的号码对应,不然则会产生数码管显示数字比开关号码大一的状况。

实验四:PC机串行通讯实验一.实验目的:1.进一步了解串行通信的基本原理。

2.掌握串行接口芯片8250的工作原理和编程方法。

3.熟悉PC机串行口的基本连接方法。

二、实验内容:1.PC机RS-232串口自发自收。

按照PC机串口自发自收的连接方法连线。

编写PC机自发自收串行通信程序,要求:从键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示。