单片机原理与接口技术实验三.docx

上传人:b****5 文档编号:6209895 上传时间:2023-01-04 格式:DOCX 页数:12 大小:84.21KB
下载 相关 举报
单片机原理与接口技术实验三.docx_第1页
第1页 / 共12页
单片机原理与接口技术实验三.docx_第2页
第2页 / 共12页
单片机原理与接口技术实验三.docx_第3页
第3页 / 共12页
单片机原理与接口技术实验三.docx_第4页
第4页 / 共12页
单片机原理与接口技术实验三.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

单片机原理与接口技术实验三.docx

《单片机原理与接口技术实验三.docx》由会员分享,可在线阅读,更多相关《单片机原理与接口技术实验三.docx(12页珍藏版)》请在冰豆网上搜索。

单片机原理与接口技术实验三.docx

单片机原理与接口技术实验三

实验三

(1)中断与定时/计数器实验

一、实验目的

1.了解单片机中断与定时器工作原理,掌握中断与定时器程序结构;

2.掌握在µVision环境中调试中断与定时器程序的方法。

二、实验仪器和设备

Keil软件;THKSCM-2综合实验装置;

三、实验原理及实验内容

1.示例及相关设置

(1)建立一个文件夹:

lx51。

(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx51.asm文件名存盘到lx51文件夹中。

ORG0000H

LJMPMAIN

ORG0003H

MOVP2,A

RLA

RETI

ORG0040H

MAIN:

MOVSP,#5FH

MOVA,#0FEH

SETBEA

SETBEX0

SETBIT0

SJMP$

END

(3)在lx51文件夹下建立新工程,以文件名lx51存盘(工程的扩展名系统会自动添加)。

(4)在Project菜单的下拉选项中,单击OptionsforTarget‘Target1’,在弹出的窗口中要完成一下设置:

单片机芯片选择AT89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“CopyStartupCodetoProjectFolderandAddFiletoProject?

”,选择“是”。

晶振频率设为11.0592MHz。

Output标签下的CreateHEXFile前小框中要打钩。

在Debug标签选择UseSimulator(软件模拟)。

(5)在Project菜单的下拉选项中,单击buildTarget选项完成汇编,生成目标文件(.HEX)。

按F5运行程序。

(6)在P3窗口的P3.2位单击鼠标(模拟

引脚信号),观察P2窗口变化。

(7)修改程序,使之适合字节数大于8的中断服务情况。

(8)利用单片机最小系统板演示该程序的运行情况。

2.示例及相关设置

(1)建立一个文件夹:

lx52。

(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx52.asm文件名存盘到lx52文件夹中。

ORG0000H

LJMPMAIN

ORG000BH

MOVP2,A

RLA

RETI

ORG0040H

MAIN:

MOVSP,#5FH

MOVA,#0FEH

MOVTMOD,#06H

MOVTH0,#0FBH;计数值为5

MOVTL0,#0FBH

SETBEA

SETBET0

SETBTR0

SJMP$

END

(3)在lx52文件夹下建立新工程,以文件名lx52存盘(工程的扩展名系统会自动添加)。

(4)在Project菜单的下拉选项中,单击OptionsforTarget‘Target1’,在弹出的窗口中要完成一下设置:

单片机芯片选择AT89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“CopyStartupCodetoProjectFolderandAddFiletoProject?

”,选择“是”。

晶振频率设为11.0592MHz。

Output标签下的CreateHEXFile前小框中要打钩。

在Debug标签选择UseSimulator(软件模拟)。

(5)在Project菜单的下拉选项中,单击buildTarget选项完成汇编,生成目标文件(.HEX)。

按F5运行程序。

(6)在P3窗口的P3.4位单击鼠标(模拟T0引脚信号),观察P2窗口变化。

(7)修改程序,使之适合字节数大于8的中断服务情况。

(8)利用单片机最小系统板演示该程序的运行情况。

四、实验结果和数据分析

问题:

1、完成三中1与2的(5)(6)两步,并写出结果,简要说明程序的功能。

2、完成三中1与2的(7)(8)两步,写出完整程序。

(2)定时/计数器的应用

(一)

一、实验目的

1.了解单片机P0口的功能及使用方法;

2.掌握在µVision环境中设计调试P0口应用程序的方法;

3.学习使用定时/计数器设计延时控制P0口实现P0.0和P0.1之间按1s互相闪烁。

二、实验仪器和设备

Keil软件;Proteus软件;THKSCM-2综合实验装置;

三、实验原理及实验内容

使用定时/计数器设计延时控制时,要求在在两灯P0.0和P0.1之间按1s互相闪烁。

1.硬件设计

在桌面上双击图标

,打开ISIS7Professional窗口。

单击菜单命令“File”→“NewDesign”,新建一个DEFAULT模版,保存文件名为“定时/计数器的应用

(一).DSN”。

在器件选择按钮

中单击“P”按钮,或执行菜单命令“Library”→“PickDevice/Symbol”,添加如表14-1所示的元件。

注意:

在ISIS中,单片机的型号必须与在Keil中选择的型号完全一致。

图14-1定时/计数器的应用

(一)电路图

表14-1定时/计数器的应用

(一)所用的元件

单片机AT89C51

瓷片电容CAP30pF

按钮BUTTON

发光二极管BIGY

电解电容CAP-ELEC

晶振CRYSTAL12MHz

电阻RES

发光二极管BIBY

在ISIS原理图编辑窗口中放置元件,在单击工具箱中的“元件终端”图标

,在对象选择器中单击“POWER”和“GROUND”放置电源和地。

放置好元件后,布好线。

左键双击各元件,设置相应元件参数,完成电路图的设计,如图14-1所示。

2.程序设计

(1)程序流程

定时/计数器的应用

(一)程序流程如图14-2所示。

(2)汇编源程序

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

MOVSP,#60H;初始化堆栈

;给定时器0复制初值

MOVTMOD,#001H;使用16位模式[方式1M1=0M0=1]

MOVTH0,#4CH;初始化定时器0的溢出间隔时间为50ms

MOVTL0,#00H;TH为高位,TL为低位

SETBTR0;启用定时器0

SETBP0.0

CLRP0.1

MOVR7,#00H;用R7计数

LOOP:

JNBTF0,LOOP;当计数溢出时,硬件置位TF0为1,程序向下执行,

;否则调用LOOP

MOVTH0,#4CH;初始化定时器0的溢出间隔时间

MOVTL0,#00H;TH为高位,TL为低位

INCR7

CLRTF0

CJNER7,#14H,LOOP

ACALLLOOP1;20次循环闪烁一次

AJMPLOOP

LOOP1:

MOVR7,#00H

CPLP0.0;让接P0.0的发光二极管按50ms闪烁

CPLP0.1

RET

END

3.调试与仿真

安装VDMServer,使Keil和Protenus能联合调试程序。

打开Keil,执行菜单命令“Project”→“NewProject”创建“定时/计数器的应用

(一)”项目,并选择单片机型号为AT89C51。

执行菜单命令“File”→“New”创建文件,输入汇编源程序,保存为“定时/计数器的应用

(一).ASM”。

在Project菜单的File项目管理窗口中右击文件组,选择“AddFilestoGroup‘SourceGroup1’”将源程序“定时/计数器的应用

(一).ASM”添加到项目中。

执行菜单命令“Project”→“OptionsforTarget‘Target1’”,在弹出的对话框中选择“Output”选项卡,选中“CreateHEXFile”。

在“Debug”选项卡,选中“Use:

ProtenusVSMSimulator”。

执行菜单命令“Project”→“BuildTarget”,编译源程序。

如果编译成功,则在“OutputWindow”窗口中显示没有错误,并创建了“定时/计数器的应用

(一).HEX”文件。

在已绘制好原理图的ProtenusISIS菜单栏中,执行菜单命令“Debug(调试)”→“UseRemoteDebugMonitor(使用远程调试设备)”,将该项选中,使Protenus与Keil真正连接起来,使它们联合调试。

在Keil中执行菜单命令“Debug”→“Start/StopDebugSession”,或直接单击图标

进入Keil调试环境。

同时,在ProtenusISIS窗口中可看出Protenus也进入了程序调试状态。

在Keil代码编辑窗口中设置相应断点,断点的设置方法:

在需要设置断点语句的空白处双击鼠标左键,可设置断点;再次双击,可取消断点。

设置好断点后,在Keil中按F5键运行程序,观察运行结果,可以看出P0.0和P0.1控制两个LED互闪,闪烁间隔时间为1s。

四、实验结果和数据分析

问题:

1、在Keil中按F5键运行程序,观察运行结果?

图14-2定时/计数器的应用

(一)程序流程

(3)中断系统的应用

(二)

一、实验目的

1.了解单片机P0口的功能及使用方法;

2.掌握在µVision环境中设计调试中断系统应用程序的方法;

3.学习使用中断系统控制P0口进行8个LED进行响应状态变换。

二、实验仪器和设备

Keil软件;Proteus软件;THKSCM-2综合实验装置;

三、实验原理及实验内容

P0接8个LED,使8个LED闪烁。

当奇数次按下INT0的按钮时,8个LED每次同时点亮4个,点亮3次,即D0~D3与D4~D7交叉点亮3次。

偶数次按下INT0的按钮时,则D0~D7进行左移和右移2次。

当按下INT1的按钮时,产生报警(INT1优先)。

1.硬件设计

在桌面上双击图标

,打开ISIS7Professional窗口。

单击菜单命令“File”→“NewDesign”,新建一个DEFAULT模版,保存文件名为“中断系统的应用

(二).DSN”。

在器件选择按钮

中单击“P”按钮,或执行菜单命令“Library”→“PickDevice/Symbol”,添加如表17-1所示的元件。

注意:

在ISIS中,单片机的型号必须与在Keil中选择的型号完全一致。

表17-1中断系统的应用

(二)所用的元件

单片机AT89C51

瓷片电容CAP30pF

排阻RESPACK-8

发光二极管LED-YELLOW

按钮BUTTON

电解电容CAP-ELEC

晶振CRYSTAL12MHz

发光二极管LED-BLUE

三极管2N2905

麦克风SOUNDER

发光二极管LED-RED

发光二极管LED-GREEN

电阻RES

在ISIS原理图编辑窗口中放置元件,在单击工具箱中的“元件终端”图标

,在对象选择器中单击“POWER”和“GROUND”放置电源和地。

放置好元件后,布好线。

左键双击各元件,设置相应元件参数,完成电路图的设计,如图17-1所示。

图17-1中断系统的应用

(二)电路图

2.程序设计

本系统中采用了两外部中断

,需考虑这两个中断的优先级等问题。

与开关K2相连,作为报警信号的输入端,因此应将

设为高优先级。

控制广告灯亮的方式,因此需判断

按下的次数为奇数还是偶数。

(1)程序流程

中断系统的应用

(二)程序流程如图17-2所示。

(2)汇编源程序

ORG0000H;主程序起始地址设置

AJMPSTART;跳到主程序入口

ORG0003H;中断矢量地址(K1开关按钮)

AJMPINTR0;中断子程序入口

ORG0013H;中断矢量地址(K2开关按钮)

AJMPINTR1;中断子程序入口

START:

MOVIE,#85H;中断使能

MOVIP,#04H;优先级设置

MOVTCON,#00H;电平触发

MOVSP,#60H

MOVP0,#0FFH

MOVP1,#0FFH

MOVR0,#00H;设置K1开关按钮初始值

MOVA,#00H;设置D0~D7初始状态

LP1:

MOVP0,A;将A送至P0口

LCALLDELAY

CPLA;D0~D7闪烁

SJMPLP1;等待按钮按下中断

INTR0:

PUSHAcc;将A压入堆栈暂时保存

PUSHPSW;将PSW压入堆栈暂时保存

SETBRS0;使用工作寄存器组1

INCR0;K1键值加1

MOVA,#00H

ORLA,R0

JNBPSW.0,DOUBLE;PSW的D0=0,即K1键值为偶数,跳转

SINGLE:

MOVP0,#00H;D0~D3、D4~D7交叉点亮程序

MOVA,#0FH

MOVR4,#03H;设定交叉点亮3次

SINGLE1:

MOVP0,A

LCALLDELAY

SWAPA;A高、低字节交换

DJNZR4,SINGLE1

AJMPLP5;交叉次数到,退出

DOUBLE:

MOVP0,#00H;D0~D7进行左移和右移程序

MOVR1,#02H;设定移动2次

DOUBLE1:

MOVA,#01H

MOVR2,#08H;左移8个灯

SETBC

MOVP0,A

LP2:

RLCA

LCALLDELAY

DJNZR2,LP2

MOVA,#01H

MOVR2,#08H;右移8个灯

CLRC

LP3:

MOVP0,A

LCALLDELAY

RRCA

DJNZR2,LP3

DJNZR1,DOUBLE1;判移动次数是否到达,否,继续

LP5:

NOP;退出INT0中断子程序

POPPSW;取回PSW暂时保存的值

POPAcc;取回A暂时保存的值

RETI

INTR1:

PUSHAcc;按下K2时,执行报警子程序

PUSHPSW

CLRP1.0;报警

LCALLDELAY;延时

SETBP1.0

POPPSW

POPAcc

RETI;中断返回

DELAY:

MOVR7,#20;延时0.2s子程序

DELA1:

MOVR6,#20

DELA2:

MOVR5,#248

DJNZR5,$

DJNZR6,DELA2

DJNZR7,DELA1

RET

END

3.调试与仿真

安装VDMServer,使Keil和Protenus能联合调试程序。

打开Keil,执行菜单命令“Project”→“NewProject”创建“中断系统的应用

(二)”项目,并选择单片机型号为AT89C51。

执行菜单命令“File”→“New”创建文件,输入汇编源程序,保存为“中断系统的应用

(二).ASM”。

在Project菜单的File项目管理窗口中右击文件组,选择“AddFilestoGroup‘SourceGroup1’”将源程序“中断系统的应用

(二).ASM”添加到项目中。

执行菜单命令“Project”→“OptionsforTarget‘Target1’”,在弹出的对话框中选择“Output”选项卡,选中“CreateHEXFile”。

在“Debug”选项卡,选中“Use:

ProtenusVSMSimulator”。

执行菜单命令“Project”→“BuildTarget”,编译源程序。

如果编译成功,则在“OutputWindow”窗口中显示没有错误,并创建了“中断系统的应用

(二).HEX”文件。

在已绘制好原理图的ProtenusISIS菜单栏中,执行菜单命令“Debug(调试)”→“UseRemoteDebugMonitor(使用远程调试设备)”,将该项选中,使Protenus与Keil真正连接起来,使它们联合调试。

在Keil中执行菜单命令“Debug”→“Start/StopDebugSession”,或直接单击图标

进入Keil调试环境。

同时,在ProtenusISIS窗口中可看出Protenus也进入了程序调试状态。

在Keil代码编辑窗口中设置相应断点,断点的设置方法:

在需要设置断点语句的空白处双击鼠标左键,可设置断点;再次双击,可取消断点。

设置好断点后,在Keil中按F5键运行程序,观察运行结果,在没有按下INT0和INT1的按钮时,8个LED闪烁。

当奇数次按下INT0的按钮时,8个LED每次同时点亮4个,点亮3次,即D0~D3与D4~D7交叉点亮3次。

偶数次按下INT0的按钮时,则D0~D7进行左移和右移2次。

当按下INT1的按钮时,产生报警(INT1优先)。

四、实验结果和数据分析

问题:

1、在Keil中按F5键运行程序,观察运行结果?

 

 

图17-2中断系统的应用

(二)程序流程

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

当前位置:首页 > 职业教育 > 职业技术培训

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

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