单片机实验七-51定时器实验.doc_第1页
单片机实验七-51定时器实验.doc_第2页
单片机实验七-51定时器实验.doc_第3页
单片机实验七-51定时器实验.doc_第4页
单片机实验七-51定时器实验.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子信息工程系实验报告成 绩:课程名称:单片机原理 指导教师(签名):实验项目名称:51定时器实验 实验时间:2013-6-5 班级:通信10 姓名:Microlab_4 学号: 实 验 目 的: 熟悉keil仿真软件、伟福仿真器的使用和C51定时程序的编写。了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理。掌握中断方式处理定时/计数的工作过程,掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。实 验 原 理:一、定时分类及原理1. 软件定时:即让机器执行一个程序段,这段程序本身没有具体的执行目的,只是为了磨时间。执行这段程序所需要的时间就是延时时间。这种程序前面已设计过。这种方法定时占用CPU执行时间,降低了CPU利用率。此次实验使用的是MCS-51系列单片机。2. 数字电路硬件定时:采用小规模集成电路器件如555,外接定时部件(电阻和电容)构成。这样的定时电路简单,但要改变定时范围,必须改变电阻和电容,这种定时电路在硬件连接好以后,修改不方便。3. 可编程定时/计数器:是为方便微型计算机系统的设计和应用而研制的,它是硬件定时,又很容易地通过软件来确定和改变它的定时值,通过初始化编程,能够满足各种不同的定时和计数要求,因而在嵌入式系统的设计和应用中得到广泛的应用。8051型单片机有两个十六位定时/计数器T0、T1,有四种工作方式,跟定时/计数器相关的特殊功能寄存器有这样几个:二、方式控制寄存器TMOD:D7D6D5D4D3D2D1D0GATEC/T M1 M0GATEC/TM1M0M1、M0的状态决定定时器的工作方式,定时和外部事件计数方式选择位C/T,GATE与TR0、TR1配合决定定时/计数器的启停。加法计数寄存器TH0、TH1 (高八位)TL0、TL1(低八位);定时/计数到标志TF0、TF1(中断控制寄存器TCON);定时/计数器启停控制位TR0、TR1(TCON);定时/计数器中断允许位ET0、ET1(中断允许寄存IE);定时/计数器中断优先级控制位PT0、PT1(中断优IP)。三、定时/计数器的工作方式MCS51的定时器有方式0、方式1、方式2和方式2这3种工作方式。1.方式0当M1M0=00时,定时器工作于方式0。 方式 0为13位的计数器,由TL0的低5位和TH0的8位组成,TL0低5位计数溢出时向TH0进位,TH0计数溢出时置位溢出标志TF0。若T0工作于定时方式,设计数初值为a,晶振频率为12MHz,则T0从初值开始计数到溢出的定时时间为 t(213a)1S。2. 方式1当M1M0=01时,定时器工作于方式1。T1工作于方式1时,由TH1作为高8位,TL1作为低8位,构成一个十六位的计数器。若T1工作于定时方式1,计数初值为 a,晶振频率为12MHz,则T1从计数初值计数到溢出的定时时间为t =(216a)S。3. 方式2M1M0=10时,定时器计数器工作于方式2,方式2为自动恢复初值的 8位计数器。TL1作为8位计数器,TH1作为计数初值寄存器。 t =(28a)S。 单片机内部的定时计数模块,在定时时,对工作频率的12分频进行计数,先记入TL后记入TH,直到溢出为止,根据TL、TH内的初值不同可以定出不同的时间;在计数工作方式时,对T0(T1)引脚的输入脉冲进行计数,将计数值记入TL、TH。当定时/计数溢出时,会引起中断。设置合适的计数初值,以产生期望的定时间隔。由于定时/计数器在方式0、方式1和方式2时的最大计数间隔取决于使用的晶振频率fosc,如下表所示,当需要的定时间隔较大时,要采用适当的方法,即将定时间隔分段处理。 计数初值与定时时间的关系为:T = 12(T_all a)/fosc定时间隔为T,计数初值为a。所以有计数初值a =Tfosc/12,THx = a / 256,TLx = a % 256。定时器均有一个最大定时时间,对于长时间的定时需要,可以将定时间隔为固定的较小时间,通过另设一全局变量ah1用于计数,累加固定的较小定时时间来进行。确定定时/计数器工作于查询方式还是中断方式,若工作于中断方式,则在初始化时开放定时/计数器的中断及总中断: ET0 = 1; EA = 1;还需要编写中断服务函数: void T0_srv(void) interrupt 1 using 1 TL0 = a % 256; TH0 = a / 256; 中断服务程序段 4启动定时器:TR0(TR1)= 1。实 验 设 备 与 器 件硬件:微机、WAVE单片机仿真器、单片机实验板、跳帽若干软件:KEIL C51单片机仿真调试软件,伟福V系列仿真调试软件实 验 内 容: 一、任选1位 实现个位秒表的功能0-9 二、任选2位 实现两位秒表功能00-591、打开Proteus,绘制电路图,如图1-1,1-2所示: 图1-1 整体电路图 图1-2整体电路图2、开启keil并在project中选择New Project,新建项目,然后在File中选择New。3、保存为lesson1-1.lesson1-2,选择,选择,点击确定,弹出一个对话框选择“否”。4、在新建的空页中编写程序,并保存为lesson1-1.c,lesson1-2.c。然后编译,加载,运行调试。5、双击Target1出现Source Group 1点击鼠标右键选择Add files to group Source Group 1,选中lesson1-1,lesson1-2点击Add击Close6、点击 如图1-3作图1-3点击运行,如果显示无错误就编译成功7、双击AT89C51点击选择hex文件点击OK点击左下角的运行。实 验 结 果 及 分 析:一、显示09,间隔一秒。代码如下:6#includeunsigned char a,n,i;code char tab10= 0x3f,0x06,0x5b,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f;tr1() interrupt 3TH1=a/256;TL1=a%256;n+;if(n=10)n=0;i+; if (i10) P0=tabi; else i=0;P0=tab0;main() TMOD=0x10;a=-50000;TH1=a/256;TL1=a%256;EA=1;ET1=1; TR1=1; P0=0x3f; while(1); /*等待中断*/ 结果如下图2-1:图2-1二、显示059,间隔一秒。代码如下:#includeunsigned char a,b,n,i,j;void delay(unsigned int i);code char tab10= 0x3f,0x06,0x5b,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f;void tr1() interrupt 3TH1=a/256;TL1=a%256;n+;if(n=10)b+; i=b%10; j=b/10;n=0;if(j=6)i=0;b=0;j=0; main() TMOD=0x10;a=-100000;TH1=a/256;TL1=a%256;EA=1;ET1=1; TR1=1; while(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论