MCS_51单片机定时_计数器及应用(基于Proteus仿真)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2012年8月3日星期五1/8MCS-51单片机定时/计数器及应用基于Proteus仿真前言:本文对MCS-51单片机的定时/计数器进行了简明扼要的总结和归纳,并在后面举了三个简单的例子,这样有助于更好地理解与掌握。1、MCS-51单片机有T0和T1两个16位可编程定时/计数器。其中T0由两个特殊功能寄存器TH0和TL0组成,T1由两个特殊功能寄存器TH1和TL1组成。受MCS-51单片机内部工作机制的限制,最高的外部计数脉冲的频率不能超过时钟频率的1/24,并且要求外部脉冲的高电平和低电平的持续时间不能小于一个机器周期。单片机中的定时/计数器不管是用于定时还是计数,本质上都是通过对脉冲的计数实现的,只不过定时功能是对内部固定频率的脉冲信号进行计数,而计数功能是对来自单片机外部引脚T0或T1上的脉冲信号进行计数。定时/计数器的控制主要是通过两个特殊功能寄存器TCON和TMOD实现的。2、定时/计数器T0,T1控制寄存器TCON:中断请求标志都是当CPU检测到有相应中断发生后,由硬件将相应的标志置1,当CPU响应该中断转向相应的中断处理程序时,由硬件自动将相应的标志位清0.系统复位时,TCON每一位都清零。在查询方式时,TF0,TF1可以由程序查询和清“0”。IT0/IT1:外部中断0/1的触发类型控制位,IT0/IT1=1表示下降沿触发,IT0/IT1=0表示低电平触发,可以由软件来设置或清除。IE0/IE1:外部中断0/1的中断请求标志位,当检测到INT0/INT1引脚上出现外部中断信号的下降沿时,由硬件置位,申请中断。进入中断服务程序后被硬件自动清除。TR0/TR1:T0/T1运行控制位,靠软件置位或清零,置位时T0/T1开始工作,清零时停止工作。TF0/TF1:T0/T1中断请求标志位,当T0/T1计数溢出归零时,由内部硬件置1,当CPU响应中断并进入中断服务程序后,TF0/TF1自动清零。3、定时/计数器工作方式寄存器TMOD:TMOD用于确定定时/计数器的工作方式及功能,其中高四位用于控制T1,低四位用于控制T0,2012年8月3日星期五2/84、工作方式0及应用当TMOD中的M1M0=00时,定时/计数器工作在方式0,构成13位的定时/计数器,它由THi的8位和TLi的低5位组成。当TLi的低5位溢出时,向THi进位。THi溢出时,向中断溢出标志Tfi进位,并申请中断。当C/T=0,工作在定时方式时,定时时间t=(213-t初值)×(1/fOSC)×12式中:t为定时时间,fOSC振荡器频率,即系统时钟频率。当fOSC=12MHZ时,方式0最长定时时间为tmax=(213-0)×(1/12)×12=8192us=8.192ms.定时初值t初值=213-t×fOSC/12例:若已知fOSC=12MHZ,要求定时1ms分析:定时初值t初值=213-t×fOSC/12=213-10-3×(12×106)/12=7192=1110000011000B所以定时初值TH0=(213-1000)/32;TL0=(213-1000)%32.当C/T=1,工作在计数方式时,计数脉冲个数为N=213-t初值最大计数脉冲个数为Nmax=213-0=8192同样,如果要改变计数值,可以通过向定时/计数器预先装入初值实现。5、工作方式1及应用当TMOD中的M1M0=01时,定时/计数器工作在方式1,构成16位的定时/计数器,它由THi的8位和TLi的8位组成。用作定时器时,定时时间t=(216-t初值)×(1/fOSC)×12当fOSC=12MHZ时,方式1最长定时时间为tmax=(216-0)×(1/12)×12=65536us=65.536ms.2012年8月3日星期五3/8定时初值t初值=216-t×fOSC/12用作计数器时,计数脉冲个数为N=216-t初值最大计数脉冲个数为Nmax=216-0=65536例:若已知fOSC=12MHZ,要求编程实现在P1^0口输出50HZ方波分析:50HZ方波周期为20ms,因此只需每10ms对P1^0取反一次,定时时间为10ms所以定时初值t初值=216-t×fOSC/12=216-10×10-3×(12×106)/12=55536=0XD8F0所以定时初值TH0=0XD8;TL0=0XF0.C程序如下:#includereg52.hsbitP1_0=P1^0;voidmain(){TMOD=0X01;TH0=0XD8;TL0=0XF0;EA=1;ET0=1;TR0=1;while(1);}voidt0()interrupt1{TH0=0XD8;TL0=0XF0;P1_0=~P1_0;}6、工作方式2及应用当TMOD中的M1M0=10时,定时/计数器工作在方式2,即8位自动重装载方式,它由TLi构成8位计数器,THi仅用来存放时间常数。启动T0/T1前,TLi和THi装入相同的时间常数,当TLi计数溢出时,自动将THi中的初值内容重新装载到TLi中.定时时间t=(28-t初值)×(1/fOSC)×12当fOSC=12MHZ时,方式2最长定时时间为tmax=(28-0)×(1/12)×12=256us.定时初值t初值=28-t×fOSC/12用作计数器时,计数脉冲个数为N=28-t初值最大计数脉冲个数为Nmax=28-0=256例:若已知fOSC=12MHZ,要求编程实现在P1^0口输出5000HZ方波分析:5000HZ方波周期为0.2ms,因此只需每0.1ms对P1^0取反一次,定时时间为0.1ms所以定时初值t初值=28-t×fOSC/12=28-0.1×10-3×(12×106)/12=156=0X9C所以定时初值TH0=TL0=0X9C.C程序如下:#includereg52.hsbitP1_0=P1^0;voidmain(){2012年8月3日星期五4/8TMOD=0X02;TH0=TL0=0X9C;EA=1;ET0=1;TR0=1;while(1);}voidt0()interrupt1{P1_0=~P1_0;}7、工作方式3及应用当TMOD中的M1M0=11时,定时/计数器工作在方式3。需要说明的是,只有T0才具有工作方式3,T1不具有。T0工作在方式3时,TH0和TL0分成2个独立的8位计数器。其中,TL0既可以用作定时器,又可用作计数器,并使用原T0的所有控制位及其溢出中断标志。TH0只能用作定时器,并使用T1的控制位TR1,溢出中断标志TF1.工作方式3是为了使单片机有1个独立的定时/计数器、1个定时器以及一个串行口波特率发生器的应用场合而特地提供的。这时,可把T1用于工作方式2,T0用于工作方式3。8、定时/计数器的简单应用实例(一)如下图所示,程序功能用定时/计数器构成秒闪烁LED灯控制器。在P1^0脚输出周期为2s的方波,实现LED灯循环亮1s,灭1s。T0工作在定时方式1,定时时间为50ms,并且计数20次,这样就达到了定时1s的目的。初值为t初值=216-t×fOSC/12=216-50×10-3×(12×106)/12=15536=0X3CB02012年8月3日星期五5/8所以TH0=0X3C,TL0=0XB0C程序如下:#includereg52.hsbitP1_0=P1^0;unsignedchari;voidmain(){TMOD=0X01;TH0=0X3C;TL0=0XB0;EA=1;ET0=1;TR0=1;while(1);}voidt0()interrupt1{TH0=0X3C;TL0=0XB0;if(++i==20){i=0;P1_0=~P1_0;}}Proteus仿真运行结果如下:2012年8月3日星期五6/89、定时/计数器的简单应用实例(二)如下图所示,本例设计一个简易多频方波信号发生器,由P1^0口经过反相器输出正、反相方波信号。8只按钮开关分别控制输出8种不同频率的方波。这里选择T0工作在定时方式1,即16位定时方式,设振荡器频率为12MHZ。则各频率对应定时初值如下:C程序如下:#includereg51.hsbitoutput=P1^0;sbitk1=P0^0;sbitk2=P0^1;sbitk3=P0^2;sbitk4=P0^3;sbitk5=P0^4;sbitk6=P0^5;sbitk7=P0^6;sbitk8=P0^7;unsignedcharth0,tl0;voidmain(){TMOD=0X01;EA=1;ET0=1;2012年8月3日星期五7/8while(1){if(k1==0){th0=0xff;tl0=0xfb;TR0=1;}elseif(k2==0){th0=0xff;tl0=0xf6;TR0=1;}elseif(k3==0){th0=0xff;tl0=0xce;TR0=1;}elseif(k4==0){th0=0xff;tl0=0x9c;TR0=1;}elseif(k5==0){th0=0xfe;tl0=0x0c;TR0=1;}elseif(k6==0){th0=0xfc;tl0=0x18;TR0=1;}elseif(k7==0){th0=0xec;tl0=0x78;TR0=1;}elseif(k8==0){th0=0xd8;tl0=0xf0;TR0=1;}}}voidt0()interrupt1{output=~output;TH0=th0;TL0=tl0;}Proteus仿真运行结果如下:2012年8月3日星期五8/810、更多内容请访问:、参考文献[1]彭伟.单片机C语言程序设计实训100例.北京:电子工业出版社.2009[2]贾振国,许琳.智能化仪器仪表原理及应用.北京:中国水利水电出版社.2011

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功