单片机实验报告2.docx

上传人:b****4 文档编号:12032634 上传时间:2023-04-16 格式:DOCX 页数:16 大小:1.09MB
下载 相关 举报
单片机实验报告2.docx_第1页
第1页 / 共16页
单片机实验报告2.docx_第2页
第2页 / 共16页
单片机实验报告2.docx_第3页
第3页 / 共16页
单片机实验报告2.docx_第4页
第4页 / 共16页
单片机实验报告2.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

单片机实验报告2.docx

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

单片机实验报告2.docx

单片机实验报告2

单片机实验报告二

 

姓名:

班级:

学号:

指导老师:

目录

1、新建项目新建源文件2

2、输入源代码、做语法错误的排查、编译2

3、调试环节(监视窗口的使用、外围设备的应用)3

4、定时器查询和中断定时10

5、软件仿真13

6、感想14

 

在第一次单片机实验的基础上,通过软件仿真及对程序的下载来实现单片机的定时。

主要分为延时程序,定时器定时和中断定时。

1、新建项目新建源文件

新建项目:

单击主菜单“Project”——项目命令菜单,单击“NewProject”——创建新项目。

设定保存文件夹名test1,文件名也为test1。

点击Atmel后出现很多项目

找到我们的AT89C51

点击“ok”

 

点击“确定”后,页面的变化如下:

点击“是”,如下:

至此,项目文件夹已存在,上图左上角标题栏左侧已出现创建的项目名称“test1”,目前文件夹中没有任何文件。

点击菜单中的“File”——主菜单中的文件菜单,单击“New”——新建文件

直接点击快捷键

,如下图:

修改C语言源文件的保存位置、文件名和拓展名。

拓展名必须是.c,假设将文件名修改为test.c,保存在test1项目文件夹下。

点击“保存”之后,窗口变化如下:

将新创建的C语言源文件添加到项目里。

单击左侧窗口中“Target1”前面的“+”号,然后在“SourceGroup1”——选择源文件上单击右键

出现“AddFilestoGroup‘SourceGroup1’”,单击之后出现如下界面:

选中“test.c”文件,单击Add按钮,再点击Close按钮,出现如下界面:

即在左侧“SourceGroup1”中多了一个子项test.c,表示成功将新建的C语言源文件关联到项目中,故可在右侧的test.c中输入C语言程序。

3、输入源代码、做语法错误的排查、编译

C语言程序输入完成后,就需要对项目进行编译,排查程序中可能存在的语法或结构错误,生成十六进制格式的机器指令文件。

在对程序进行编译之前,需要对项目进行设置,即右击左侧窗口处“Target1”,弹出如下页面:

点击上图中的“OptionsforTarget‘Target1’”,出现如下页面:

注意在设置项目晶振频率时,应将其中的24.0MHZ改成12.0MHZ。

点击“Output”,设置编译时是否生成十六进制的机器指令文件“HEXFile”。

选择“ok”结束设置

项目设置完毕后,就可以对编写的程序进行编译。

输入程序后,点击

按钮,对程序进行编译。

源程序:

#include

#defineucharunsignedchar

sbitP17=P1^7;或者P17=0x97

main()

{

TMOD=0x01;//T0工作方式1

TH0=0x3C;//T0定时50ms初值

TL0=0xB0;

TR0=1;//打开定时器T0

while

(1)

{if(TF0)//判断T0是否溢出

{TF0=0;//清溢出标志位

P17=~P17;//P1.7口输出状态取反

TH0=0x3C;//T0定时50ms初值

TL0=0xB0;

}}

}

没有出现错误,可以继续进行。

4、调试环节(监视窗口的使用、外围设备的应用)

程序编译完成后,可以进行调试仿真,测试程序能否满足要求。

点击如下图所示的“Start/StopDebugSession”按钮,或者点击快捷键

,进入调试页面

出现了如上图所示的提示

4、定时器查询和中断定时

在完成上一个测试之后,只需要将其中的程序换以需要的程序,就可以实现定时器查询和中断定时的功能。

(1)定时器查询

源程序:

#include

main()

{unsignedcharnum;//定时次数

TMOD=0x01;//T0工作方式1

TH0=0x3C;//T0定时50ms初值

TL0=0xB0;

TR0=1;//打开定时器T0

num=0;

P1=0x01;

while

(1)

{if(TF0)//判断T0是否溢出

{TF0=0;//清溢出标志位

TH0=0x3C;//T0定时50ms初值

TL0=0xB0;

num++;

if(num==20)

{if(P1==0x80)P1=1;

elseP1=(P1<<1);//左移一个单位

num=0;//重置定时次数

}}}}

(2)中断定时

源程序:

#include

#defineucharunsignedchar

unsignedcharnum;

main()

{//定时次数

TMOD=0x01;//T0工作方式1

TH0=0x3C;//T0定时50ms初值

TL0=0xB0;

TR0=1;

ET0=1;

EA=1;//打开定时器T0

num=0;

P1=0x01;

while

(1);

}

voidtimer0(void)interrupt1

//中断入口地址000BH

{//if(TF0)//判断T0是否溢出

{//TF0=0;//清溢出标志位

TH0=0x3C;//T0定时50ms初值

TL0=0xB0;

num++;

if(num==20)

{if(P1==0x80)P1=1;

elseP1=(P1<<1);//左移一个单位

num=0;//重置定时次数

}}}

5、软件仿真

以中断程序为例:

当把程序下载到单片机时,需要停止程序运行,单击Target1,然后点右键,选择OptionsforTarget‘Target1’,点调试,出现下图:

选择wave系列mcs-51单片机,点击“ok”,当外部连接好硬件之后,点击

,即可在硬件上实现定时。

我们从外在的观察上可以看到的是,LED灯依次亮起,且每次只亮一个,时间间隔随我们设置而改变。

6、感想

通过这次实验,让我明白了单片机的结构系统是什么样的。

自己将程序下载到单片机中,连接调试和不断的改变纠正,把LED调整到需要的状态,使我们得到了满足。

虽然遇到了困难但还是开阔了思维学习到了知识。

 

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

当前位置:首页 > 经管营销 > 经济市场

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

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