您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 电气安装工程 > 实验三定时器实验实验报告
课程名称:单片机实验题目:实验三定时实验学生姓名:专业:电子信息科学与技术班级:学号:指导教师:张涛实验三定时器实验一、实验目的1、掌握单片机系统定时器断的原理及使用方法。二、实验原理(一)、单片机定时器/计数器的结构1.定时器/计数器组成框图8051单片机内部有两个16位的可编程定时器/计数器,称为定时器0(T0)和定时器1(T1),可编程选择其作为定时器用或作为计数器用。此外,工作方式、定时时间、计数值、启动、中断请求等都可以由程序设定,其逻辑结构如图所示。CPU_____INT1(P3.3)_____INT0(P3.2)中断TCON(88H)T1(P3.5)定时器T1定时器T0TH1TL1TH0TL0TMOD(89H)溢出启动(8DH)(8BH)(8CH)(8AH)7070启动内部总线溢出工作方式工作方式T0(P3.4)7700图8051定时器/计数器逻辑结构图由图可知,8051定时器/计数器由定时器T0、定时器T1、定时器方式寄存器TMOD和定时器控制寄存器TCON组成。2.定时/计数器的方式寄存器和控制寄存器定时/计数器的初始化通过定时/计数器的方式寄存器TMOD和控制寄存器TCON完成。1)定时/计数器方式寄存器TMODTMOD为T1、T2的工作方式寄存器,其格式如下:TMODD7D6D5D4D3D2D1D0GATET/CM1M0GATET/CM1M0(89H)定时器1定时器0TMOD的低4位为T0的方式字段,高4位为T1的方式字段,它们的含义完全相同。(1)M1和M0:方式选择位。定义如下:M1M0工作方式功能说明00方式013位计数器01方式116位计数器10方式2自动再装入8位计数器11方式3(2)T/C:功能选择位。0T/C时,设置为定时器工作方式;1T/C时,设置为计数器工作方式。(3)GATE:门控位。当GATE=0时,软件控制位TR0或TR1置1即可启动定时器;当GATE=1时,软件控制位TR0或TR1须置1,同时还须0INT(P3.2)或1INT(P3.3)为高电平方可启动定时器,即允许外中断0INT、1INT启动定时器。TMOD不能位寻址,只能用字节指令设置定时器工作方式,高4位定义T1,低4位定义T0。复位时,TMOD所有位均置0。2)定时器/计数器控制寄存器TCONTCON的作用是控制定时器的启动、停止,标志定时器的溢出和中断情况。定时器控制字TCON的格式如下:TCON(88H)8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1IT1IE0IT0各位含义如下:(1)TCON.7TF1:定时器1溢出标志位。当定时器1计数满产生溢出时,由硬件自动置TF1=1。在中断允许时,向CPU发出定时器1的中断请求,进入中断服务程序后,由硬件自动清0。在中断屏蔽时,TF1可作查询测试用,此时只能由软件清0。(2)TCON.6TR1:定时器1运行控制位。由软件置1或清0来启动或关闭定时器1。当GATE=1,且1INT为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1即可启动定时器1。(3)TCON.5TF0:定时器0溢出标志位。其功能及操作情况同TF1。(4)TCON.4TR0:定时器0运行控制位。其功能及操作情况同TR1。(5)TCON.3IE1:外部中断1(1INT)请求标志位。(6)TCON.2IT1:外部中断1触发方式选择位。(7)TCON.1IE0:外部中断0(0INT)请求标志位。(8)TCON.0IT0:外部中断0触发方式选择位。TCON中的低4位用于控制外部中断,与定时器/计数器无关。TCON的字节地址为88H,可以位寻址,清溢出标志位或启动定时器都可以用位操作指令。3、定时器/计数器的初始化由于定时器/计数器的功能是由软件编程确定的,所以,一般在使用定时器/计数器前都要对其进行初始化。初始化步骤如下:(1)确定工作方式——对TMOD赋值。(2)预置定时或计数的初值——直接将初值写入TH0、TL0或TH1、TL1。定时器/计数器的初值因工作方式的不同而不同。设最大计数值为M,则各种工作方式下的M值如下:方式0:81922M13方式1:655362M16方式2:2562M8因定时器/计数器工作的实质是做“加1”计数,所以,当最大计数值M值已知时,初值X可计算如下:X=M计数值4、启动定时器/计数器工作——将TR0或TR1置“1”。GATE=0时,直接由软件置位启动;GATE=1时,除软件置位外,还必须在外中断引脚处加上相应的电平值才能启动。三、实验内容1、见图一。假设单片机晶振频率设定为12MHz。完成以下要求,且通过虚拟示波器观看波形。A、使用定时器1以方式1产生周期为500us的等宽方波连续脉冲,并由P1.0输出。用中断方式来完成。#includereg51.h#defineuintunsignedint#defineucharunsignedcharsbitP10=P1^0;voidmain()//定时器T1以工作方式1产生周期为500us的等宽连续脉冲{TMOD=0x10;//设置定时器T1为方式1计数P10=0;//给P1^0置0EA=1;//总中断开ET1=1;//允许定时器T1中断TR1=1;//启动定时器T1TH1=(65536-250)/256;//给T1装入初值TL1=(65536-250)%256;//给T1装入初值while(1);//无限循环等待}voidint1()interrupt3{P10=!P10;TH1=(65536-250)/256;TL1=(65536-250)%256;}B、完成A功能,用查询方式来完成#includereg51.hsbitP10=P1^0;voidmain()//用查询方式产生周期为500us的等宽连续脉冲{TMOD=0x10;//设置定时器T1为方式1计数P10=0;//给P1^0置0EA=1;//总中断开ET1=1;//允许定时器T1中断TR1=1;//启动定时器T1TH1=(65536-250)/256;//给T1装入初值TL1=(65536-250)%256;//给T1装入初值while(1){while(TF1==0);//计数溢出标志位TF1=0;//将该计数溢出标志位清“0”P10=!P10;TH1=(65536-250)/256;TL1=(65536-250)%256;}}C、使用定时器0以方式2产生周期为200us的等宽方波连续脉冲,并由P1.1输出。用中断方式来完成。#includereg51.hsbitP11=P1^1;voidmain()//定时器T0以工作方式2产生周期为200us的等宽连续脉冲{TMOD=0x02;//设置定时器T0为方式2P11=0;TH0=TL0=256-100;//装入初值ET0=1;//允许T0定时中断EA=1;//总中断开TR0=1;//开启定时器T0while(1);//无限循环}voidint0()interrupt1{P11=!P11;TH0=TL0=256-100;}D、编程使T0工作于定时工作方式1,产生500us等宽方波从P2.7输出。T1工作于计数工作方式2,其计数外部脉冲由T0产生,即P2.7引脚与P3.5(T1引脚)相连,T1每计数100个,P1.2取反输出一次。#includereg51.hsbitP27=P2^7;sbitP12=P1^2;voidmain(){TMOD=0X61;//设置定时器T0为方式1定时,T1为计数P27=0;TH0=(65536-250)/256;//给定时器T0装入初值TL0=(65536-250)%256;TH1=TL1=100;//给定时器T1装入初值EA=1;//总中断开ET0=1;//允许T0中断ET1=1;//允许T1中断TR0=1;//开启定时器T0TR1=1;//开启定时器T1while(1);//无限循环等待}voidint0()interrupt1{P27=!P27;TH0=(65536-250)/256;TL0=(65536-250)%256;}voidint1()interrupt3{P12=!P12;}图一2、见图二。假设单片机晶振频率设定为12MHz。完成以下功能。(按键元件名称BUTTON)A、通过外部按键(INT1引脚连接)以中断方式控制LED的上移。(利用连接R3的按键实现LED点亮的上移)#includereg51.h#defineuintunsignedint#defineucharunsignedcharsbitLED1=P3^3;uintk;voiddelay(uintk){uinti,j;for(i=0;ik;i++)for(j=0;j125;j++);}voidint1_int()interrupt2{P1=0x7f;delay(500);P1=0xbf;delay(500);P1=0xdf;delay(500);P1=0xef;delay(500);P1=0xf7;delay(500);P1=0xfb;delay(500);P1=0xfd;delay(500);P1=0xfe;delay(500);}voidmain(){uchari,a,b;while(1){P1=0xfe;delay(500);P1=0xfd;delay(500);P1=0xfb;delay(500);P1=0xf7;delay(500);P1=0xef;delay(500);P1=0xdf;delay(500);P1=0xbf;delay(500);P1=0x7f;delay(500);if(P1=0xff)P1=0xfe;delay(500);if(LED1==0){EA=1;EX1=1;IT1=0;}}}B、通过外部按键(T0引脚连接)以中断方式控制LED的下移。(利用连接R2的按键实现LED点亮的下移)#includereg51.h#defineuintunsignedint#defineucharunsignedcharsbitLED1=P3^4;uintk;ucharnum;voiddelay(uintk){uinti,j;for(i=0;ik;i++)for(j=0;j125;j++);}voidint1_int()interrupt1{TH0=1;TL0=1;num++;if(num=200){P1=0x7f;delay(500);P1=0xbf;delay(500);P1=0xdf;delay(500);P1=0xef;delay(500);P1=0xf7;delay(500);P1=0xfb;delay(500);P1=0xfd;delay(500);P1=0xfe;delay(500);}}voidmian(){while(1){P1=0xfe;delay(500);P1=0xfd;delay(500);P1=0xfb;delay(500);P1=0xf7;delay(500);P1=0xef;delay(500);P1=0xdf;delay(500);P1=0xbf;delay(500);P1=0x7f;delay(500);if(P1=0xff)P1=0xfe;delay(500);if(LED1==0){TMOD=0x01;TH0=(65536-500)/256;TL0=(65536-500)%256;EA=1;ET0=1;TR0=1;}}}C、通过INT0引脚外界4输入与门扩展外部中断,编程实现扩展出的四个开关以中断方式,分别实现LED的上移、下移、亮和灭。#includereg51.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintsbitKey=P3^2;ucharcounter,j;//保存按键情况//12M晶振1MS基准延时函数voiddelay1ms(uchari){ucharj;whi
本文标题:实验三定时器实验实验报告
链接地址:https://www.777doc.com/doc-2458233 .html