单片机实验指导书15.docx

上传人:b****3 文档编号:2040560 上传时间:2022-10-26 格式:DOCX 页数:19 大小:116KB
下载 相关 举报
单片机实验指导书15.docx_第1页
第1页 / 共19页
单片机实验指导书15.docx_第2页
第2页 / 共19页
单片机实验指导书15.docx_第3页
第3页 / 共19页
单片机实验指导书15.docx_第4页
第4页 / 共19页
单片机实验指导书15.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

单片机实验指导书15.docx

《单片机实验指导书15.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书15.docx(19页珍藏版)》请在冰豆网上搜索。

单片机实验指导书15.docx

单片机实验指导书15

实验一KEIL软件的使用及P1口控制

一实验目的

1、学习KEIL软件的使用方法及单片机实验平台

2、学习P1口的控制方法

3、学习延时子程序的编写和单片机延时计算方法

二实验原理

1、KEIL软件是德国Keil公司开发的基于Windows平台的单片机集成开发环境软件。

KEIL软件包括编译器、连接器、库管理器和仿真调试器,通过集成开发环境(μVision)将这些部分组合在一起。

2、P1口是一个八位的准双向I/O口,其中一位的内部结构如图所示,输出驱动电路有一只场效应管和一个上拉电阻组成。

每一根口线都可以分别定义成输入或输出线。

做输出线时,写入“1”,则Q’为“0”,T1截止,P1.X输出高电平,写入“0”,则Q’为“1”,T1导通,P1.X输出低电平。

做输入线时,必须先向该口线写“1”,使T1截止。

3、程序延时分析方法:

延时=指令个数X机器周期

机器周期=12÷nMHZn为单片机时钟频率

三实验要求与步骤

实验

(一):

用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。

1、使用单片机最小应用系统1模块。

关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块。

(并口线与右侧的8个插孔是串联等效的。

2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:

缺口朝上。

3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加P1_A.ASM源程序,进行编译,直到编译无误。

4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。

5、(先接通仿真器电源再开启试验箱电源)打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。

发光二极管单只从右到左轮流循环点亮。

注:

软件具体操作见附录

实验

(二):

用P1.0、P1.1作输入接两个置位开关,P1.2、P1.3作输出接两个发光二极管。

程序读取开关状态,并在发光二极管上显示出来。

1、用导线分别连接P1.0、P1.1到两个置位开关,P1.2、P1.3到两个发光二极管。

2、添加P1_B.ASM源程序,编译无误后,运行程序,拨动置位开关,观察发光二极管的亮灭情况。

四实验参考程序

实验

(一):

ORG0000H

LJMPSTART

ORG0030H

START:

MOVA,#0FEH

MOVR2,#8

OUTPUT:

MOVP1,A

RLA

ACALLDELAY

DJNZR2,OUTPUT

LJMPSTART

DELAY:

MOVR6,#0

MOVR7,#0

DELAYLOOP:

;延时程序

DJNZR6,DELAYLOOP

DJNZR7,DELAYLOOP

RET

END

(二)实验二仅供参考,需修正

KEYLEFTBITP1.0;定义

KEYRIGHTBITP1.1

LEDLEFTBITP1.2

LEDRIGHTBITP1.3

ORG0000H

LJMPSTART

ORG0030H

START:

MOVC,KEYLEFT

MOVLEDLEFT,C

MOVC,KEYRIGHT

MOVLEDRIGHT,C

LJMPSTART

END

五、附加要求

改变程序,使LED从左至右循环显示,并且使实验一中每个LED灯闪烁的间隔时间大约为5s左右。

六、实验报告要求

1对实验

(一)程序抄写并注释

2画出实验

(一)程序流程图

3找出实验

(一)中延时子程序,并根据实验箱情况计算具体延时。

 

实验二外部中断实验

一、实验目的

1.掌握外部中断技术的基本使用方法

2.掌握中断处理程序的编写方法

二、实验原理

1.外部中断的初始化设置的三项内容:

中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。

中断方式设置一般有两种方式:

电平方式和脉冲方式.

2.中断服务的关键:

(1)保护进入中断时的状态。

堆栈有保护断点和保护现场的功能使用PUSH,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。

注:

中断程序自动保护PC,对其做入栈操作

(2)用POP指令恢复中断时的现场。

(先进后出)

3.中断控制原理:

中断控制是提供给用户使用的中断控制手段。

实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:

TCON、IE、SCON及IP。

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

TCON格式(中断控制字)

TF1、TF0:

定时器/计数器T的溢出中断请求标志位;

TR1、TR0:

计数器控制位TR1(TR0)=1启动定时器TR1(TR0)=0停止计数器

IE1:

外部中断请求1标志位;

IT1:

选择外部请求1;

IE0:

外部中断请求0标志位;

IT0:

IT0=0为低电平触发IT0=1为负跳变有效;

复位后TCON被清零,中断请求被禁止。

SCON格式(触发方式中断控制字)

TI:

串行口的发送中断请求标志位。

发送1帧串行数据后,硬件自动为TI置1。

注:

CPU不会为T1清零,需要在中断程序中用软件为TI清零

RI:

串行口接受中断请求标志位。

接收完1帧串行数据后,硬件自动为RI置1。

注:

CPU不会为R1清零,需要在中断程序中用软件为RI清零

三、实验内容

参考实验程序(主程序为P1口输出跑马灯程序),编写中断子程序使得发生外部中断0,且为下降沿触发时,LED灯全亮。

中断结束后LED继续接上次状态进行跑马灯闪烁。

注:

注意保护现场。

且编译器不支持工作组寄存器名(R0-R7)入栈,需要对栈地址操作。

例:

PUSH06H(累加器支持左移右移不支持压栈出栈;工作组寄存器不支持左移右移支持压栈出栈);把R6入栈等同PHSHUR6

四、实验步骤

1.使用单片机最小应用系统1模块,P1接发光二极管,INTO接单次脉冲输出端。

2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:

缺口朝上。

3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加**.ASM源程序,进行编译,直到编译无误。

4.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。

五、参考程序

ORG0000H

LJMPSTART

ORG0003H

LJMPINT

ORG0030H

INT:

PUSH05H

PUSH06H

PUSH07H

MOVP1,#00H

ACALLDELAY

POP07H

POP06H

POP05H

RETI

START:

MOVIE,#81H

MOVTCON,#01H

MOVA,#0FEH

OUTPUT:

MOVP1,A

RLA

ACALLDELAY

LJMPOUTPUT

DELAY:

MOVR6,#0

MOVR7,#0

MOVR5,#5

DELAYLOOP:

;延时程序

DJNZR6,DELAYLOOP

DJNZR7,DELAYLOOP

DJNZR5,DELAYLOOP

RET

END

六、附加要求:

将中断内容变为前五个灯进行一次跑马灯,然后中断结束。

 

实验三定时器/计数器

一实验目的

1学习定时器/计数器的工作原理

2掌握定时器/计数器的控制方法

3掌握定时器/计数器各种工作模式和工作方式下的编程方法

二实验原理

MCS-51单片机内有两个可编程的定时器/计数器T0、T1,可分别工作在定时器或计数器模式下。

每种工作模式下有四种工作方式。

1、计数器工作模式:

外部脉冲进行计数,输入引脚(T0、T1即P3.4和P3.5)产生负跳变脉冲则计数器加1

2、定时器工作模式:

内部脉冲计数,每个机器周期产生一个计数脉冲,如外接12MHZ时钟则每隔1μs计数器加1

3、工作方式控制寄存器TMOD

D7

D6

D5

D4

D3

D2

D1

D0

GATE

C/T

M1

M0

GATE

C/T

M1

M0

T1方式字段T0方式字段

当INTX为高电平且RTRX为1时启动定时器/计数器

GATE

只要TR0(或TR1)置1,定时器/计数器就被选通

0为定时器模式

C/T

1为计数器模式

M1M0工作方式选择控制

4、定时器/计数器控制寄存器TCON

D7

D6

D5

D4

D3

D2

D1

D0

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

ITX外部中断请求触发方式选择0为电平触发1为负跳沿触发

IEX外部中断请求标志位

TFX定时器/计数器溢出标志位

1启动相应的定时器/计数器

TRX

0停止相应的定时器/计数器

注:

上述X代表1或0

5、定时器/计数器控制寄存器IE

D7

D6

D5

D4

D3

D2

D1

D0

位标志

EA

ET2

ES

ET1

EX1

ET0

EX0

 其中与中断有关的控制位共7位:

EA:

     中断允许总控制位。

EA=0时,中断总禁止,禁止一切中断;

EA=1时,中断总允许,而每个中断源允许与禁止,分别由各自的允许位确定。

EX0和EX1:

外部中断允许控制位。

EX0(或EX1)=0,禁止外部中断(或);

EX0(或EX1)=1,允许外部中断(或)。

ET0和ET1:

定时器中断允许控制位。

ET0(ET1)=0,禁止定时器0(或定时器1)中断;

ET0(ET1)=1,允许定时器0(或定时器1)中断。

ES:

     串行中断允许控制位。

ES=0,禁止串行(TI或RI)中断;

ES=1,允许串行(TI或RI)中断。

ET2:

    定时器2中断允许控制位。

ET2=0,禁止定时器2(TF2或EXF2)中断;

ET2=0,禁止定时器2(TF2或EXF2)中断;

在单片机复位后,IE各位被复位成“0”状态,CPU处于关闭所有中断的状态。

所以,在单片机复位以后,用户必须通过程序中的指令来开放所需中断。

6、各种工作方式最大定时时间(以6MHZ外接时钟频率计算)

方式0最长定时16.384ms

方式1最长定时131.072ms

方式2最长定时512μs

方式3最长定时512μs

7、定时初始值计算

n为不同工作方式计数器计数位数,A为机器周期所占时间,M为所需定时时间,X为对定时器/计数器所需设置的初始值

例:

工作方式1下外接6MHZ晶振,要定时100ms则初始值X为:

X=15536=3CBOHTH0=3CHTL0=0B0H

三实验内容

1、编程实现以定时器/计数器T0做为定时器,使得P1.0每隔一秒钟取反一次,并用LED灯显示。

可参考实验程序

(一)

2、在内容1的基础上实现以T1做计数器,当P1.0取反20次后关闭所有中断,并点亮8个LED灯。

四实验步骤

内容一,P1口连接8位逻辑电平输出.

内容二,P1口连接8位逻辑电平输出,P1.0连接T1即P3.5.

五参考程序

说明:

本程序以工作方式1定时50ms,定时中断20次为一秒为例。

程序省略部分需补充才可完成实验要求。

ORG0000H

LJMP

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1