51单片机定时器方式一12M和11
- 格式:doc
- 大小:20.50 KB
- 文档页数:1
151单片机定时器/计时器的使用步骤:1、 打开中断允许位:对IE 寄存器进行控制,IE 寄存器各位的信息如下图所示:EA : 为0时关所有中断;为1时开所有中断ET2:为0时关T2中断;为1时开T2中断,只有8032、8052、8752才有此中断 ES : 为0时关串口中断;为1时开串口中断 ET1:为0时关T1中断;为1时开T1中断 EX1:为0时关1时开 ET0:为0时关T0中断;为1时开T0中断 EX0:为0时关1时开2、 选择定时器/计时器的工作方式:定时器TMOD 格式CPU 在每个机器周期内对T0/T1检测一次,但只有在前一次检测为1和后一次检测为0时才会使计数器加1。
因此,计数器不是由外部时钟负边沿触发,而是在两次检测到负跳变存在时才进行计数的。
由于两次检测需要24个时钟脉冲,故T0/T1线上输入的0或1的持续时间不能少于一个机器周期。
通常,T0或T1输入线上的计数脉冲频率总小于100kHz 。
方式0:定时器/计时器按13位加1计数,这13位由TH 中的高8位和TL 中的低5位组成,其中TL 中的高3位弃之不用(与MCS-48兼容)。
13位计数器按加1计数器计数,计满为0时能自动向CPU 发出溢出中断请求,但要它再次计数,CPU 必须在其中断服务程序中为它重装初值。
方式1:16位加1计数器,由TH 和TL 组成,在方式1的工作情况和方式0的相同,只是计数器值是方式0的8倍。
2方式2:计数器被拆成一个8位寄存器TH 和一个8位计数器TL ,CPU 对它们初始化时必须送相同的定时初值。
当计数器启动后,TL 按8位加1计数,当它计满回零时,一方面向CPU 发送溢出中断请求,另一方面从TH 中重新获得初值并启动计数。
方式3:T0和T1工作方式不同,TH0和TL0按两个独立的8位计数器工作,T1只能按不需要中断的方式2工作。
在方式3下的TH0和TL0是有区别的:TL0可以设定为定时器/计时器或计数器模式工作,仍由TR0控制,并采用TF0作为溢出中断标志;TH0只能按定时器/计时器模式工作,它借用TR1和TF1来控制并存放溢出中断标志。
51单片机定时器初值计算公式
51单片机定时器初值计算公式是一项重要的技能,对于嵌入式系统的开发非常有用。
定时器是一种计时器,可用于实现周期性操作和延时功能。
以下是51单片机定时器初值计算公式的详细介绍。
在51单片机中,定时器有两个,分别是定时器0和定时器1。
他们都是基于晶振的时钟,可以用于计算CPU的执行时间和控制外设的操作。
要计算定时器的初值,需要知道以下参数:
1.晶振频率(Fosc):晶振的频率通常为12MHz或11.0592MHz,可以在程序中进行定义。
2.定时器的工作模式(mode):定时器可以工作在多种不同的模式下,包括计数模式、定时模式、事件计数模式等。
每种模式下,定时器的计数方式不同。
3.所需的定时时间(T):定时器可以用来进行延时操作,需要计算所需的时间。
根据以上参数,我们可以使用以下公式来计算定时器的初值:
TH0 = (65536 - (T × Fosc)) / (12 × mode)
其中,TH0表示定时器0的初值,T表示所需的定时时间(单位为秒),Fosc为晶振频率,mode为定时器的工作模式。
在计算的过程中,需要将结果取整,然后将TH0的值写入到TH0寄存器中即可。
这就是51单片机定时器初值计算公式的详细介绍。
掌握这项技能可以帮助开发者更好地使用定时器来实现各种功能,提高嵌入式系统的性能和稳定性。
晶振12M任意占空比方波输出如果是占空比任意,现在考虑12M晶振,所以机器周期Tcy为1 μs。
定时器工作方式1最长定时为65536×1×10-6=65.536ms如果要输出周期为1s的任意占空比的方波。
那可以把1s分为100份,每份中断一次。
然后在中断里面计数(比如全局变量num)加一。
加到100之后,表示一个周期结束。
这样就可以控制每一份的电平的高低了。
如果,占空比为30%,那么也就是num小于等于100×30%=30的时候,输出高电平,其余输出低电平就可以了。
如果占空比为a(百分号的形式),那么也就是num小于等于100×a的时候输出高电平,其余输出低电平就可以了。
现在考虑定时器的初值如何设定,由于定时器需要在1s/100也就是10ms的时候进入一次中断进行判断。
如果采用方式1,那么因为(216 −X) ⨯ 1 ⨯ 10−6 = 10 ⨯ 10−3,所以定时器的初值为X=65536 – 1000.#include<reg52.h> //头文件sbit output=P1^1; //输出端unsigned char num=1; //辅助计时unsigned int a = 0.3;占空比a可以任意设定void Init(void) //初始化函数{//对于定时器一般初始化需要六步TMOD=0x01;TH0=(65536-1000)/256; //(65536-1000)为定时器初值,定时10msTL0=(65536-1000)%256;EA=1;ET0=1;TR0=1;}main(){Init();while(1){if(num<=100*a)output=1; //使占空比为aelse output=0;}}void Timer_0(void) interrupt 1 //中断函数{TH0=(65536-1000)/256; //TL0=(65536-1000)%256;num++;if(num>100) num=1;}。
基于51单片机的厨房定时器设计报告学院:信息光电子科技学院专业:光电信息科学与工程年级:姓名:学号:一、设计报告概述日常生活中熬个汤、煮个蛋……都需要预定一定的时间,设计一个厨房定时器,用户预设倒计时的时长,启动后系统开始倒计时,当时间为0后,启动蜂鸣器报警。
本设计报告中的厨房定时器,是以单片机(STC89C52),四位七段数码管、按键开关和蜂鸣器等组成的综合设计系统电路。
上电,电源指示灯点亮,数码管显示为0000,用户可以通过按键开关预设定时时间,启动后系统开始倒计时,当时间为0后,蜂鸣器报警。
数码管显示分、秒,计时时间上限为99分钟,按键开关以10分钟或1分钟单位调整时间。
图1 系统设计结构图本系统组成如图1 系统设计结构图所示,主要由五个部分组成。
报警电路 (蜂鸣器)1.AT89C52单片机——控制芯片AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。
AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。
图2 AT98C52引脚图2.时钟震荡电路AT89C52中有一个用于构成内部振荡器的高增益反相放大器,与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
如果使用石英晶体,电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10pF,可以使系统更稳定,避免噪音干扰而死机。
此设计采用的是12MHz的石英晶振。
-第 1 页 共 15 页-一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
每小题2分,共10分)1.若MCS-51单片机采用6MHz 的晶振,其复位高电平脉冲时间应该超过( )。
A. 2S μB. 4S μC. 2mSD. 4mS 2.MCS-51单片机的4个并行I/O 口作为通用I/O 口使用时,( )口应该加上拉电阻。
A. P0 B. P1C. P2D. P33.在片外扩展一片8K 的EPROM 2764需要( )根地址线。
A. 11B. 12C. 13D. 144.程序状态字PSW 的( )位为1时,表示带符号数加减运算中,A 产生了溢出。
A. CyB. AcC. OvD. P5.若PSW.4=0,PSW.3=1,现在需要保存R1的内容,可执行( )指令。
A. PUSH R1B. PUSH @R1C. PUSH 01HD. PUSH 09H二、填空题(每空1分,共10分)1.MCS -51单片机片内共有________字节单元的RAM ,________字节单元的ROM 。
2.若MCS -51单片机采用6MHz 的晶振,ALE 引脚输出正脉冲频率为________。
3.MCS -51单片机的一个机器周期的宽度为________状态。
4.一个10位D/A 转换器,其分辨率为________。
5.要使MCS-51单片机从片内的地址0000H 开始执行程序。
那么EA 应________。
6.串行中断ES 的中断人口地址为________。
7.CHMOS 型80C51有________二种低功耗方式。
8.单片机需要把助记符指令(或汇编指令)转换成________。
9.外部中断请求有两种信号方式即________。
三、名词解释(每小题2分,共8分)1.立即寻址2.地址总线3.波特率4.单片机四、简答题(每小题4分,共20分)1.ALU 具有哪几个运算功能?2.简述MCS -51串行通信的工作方式。
1.MCS-51单片机的片内都集成了哪些功能部件?各个功能部件的最主要的功能是什么?答:功能部件:微处理器(CPU);数据存储器(RAM);程序存储器(ROM/EPROM),4个8位并行I/O口(P0口、P1口、P2口、P3口);1个全双工的串行口(TXD、RXD);2个16位定时器/计数器;中断系统(INT0、INT1);21个特殊功能寄存器(SFR)。
各部件功能:CPU(微处理器)包括了运算器和控制器两大部分,还增加了面向控制的处理功能,不仅可处理字节数据,还可以进行位变量的处理;数据存储器(RAM)来存储单片机运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等;程序存储器(ROM/EPROM)用来存储程序;中断系统具有5个中断源,2级中断优先权;定时器/计数器用作精确的定时,或对外部事件进行计数;串行口可用来进行串行通信,扩展并行I/O口,还可以与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广;特殊功能寄存器用于CPU对片内各功能部件进行管理、控制、监视。
2.MCS-51单片机的引脚EA的作用,该引脚接高电平和接低电平时各有何功能?答:E\A\允许访问片外程序存储器。
为高电平时,单片机访问片内程序存储器。
为低电平时,单片机则只访问外部程序存储器。
3.MCS?51单片机设有4个8位并行端口,实际应用中8位数据信息由哪个端口传送?16位地址线怎样形成?答:由P0口传送8位数据信息。
P0口为低8位地址线,P2口为高8位地址线。
4.MCS?51单片机内部RAM区的功能结构如何分配?位寻址区域的字节范围是多少?答:51系列单片机内部数据存储器:00H-7FH单元组成的低128字节地址空间的RAM区,又分为工作寄存区(00H-1FH)位寻址区(20H-2FH)和数据缓冲区。
80H-FFH单元组成的高128字节地址空间的特殊功能寄存器。
位寻址范围(20H-2FH)5.位地址7FH与字节地址7FH有何区别?位地址7FH具体在内存中的什么位置?答:二者存储的数据位数不一样。
51单片机12M和11.0592M晶振定时器初值TL0和TH0的计算#include<stdio.h>#include<reg51.h>void timer0_init(){TMOD=0x01;//方式1TL0=0xb0;TH0=0x3c;TR0=1;ET0=1;}void timer0_ISR(void) interrupt 1{TL0=0xb0;TH0=0x3c;//50ms中断一次single++;if(single==20){ kk++;single=0;}}void main(){int kk=0;//计数器int single=0;timer0_init();}TL0=0xb0;TH0=0x3c;这两个是怎么算出来得,如果晶振不是12Mhz ,是11.0592 MHz 怎么算12M的晶振每秒可产生1M个机器周期,50ms就需要50000个机器周期,定时器在方式1工作,是16位计数器,最大值为65536,所以需设置初值15536,即3CB0H(10进制15536转换成16进制数3CB0),所以TH0=0x3c,TL0=0xb0。
(65536-50000周期=初值15536)高位就是TH0的值,低位为TL0的值11.0592M的晶振每秒可产生0.9216M个机器周期,50ms就需要46080个机器周期,定时器在方式1工作,是16位计数器,最大值为65536,所以需设置初值19456,即4C00H,所以TH0=0x4c,TL0=0x00。
其实很简单,不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期机器周期=12/n(n指晶振频率),假设你要定时的时间为M那么定时的初值为:M/机器周期=初值;TH0=(65536-初值)%256;TL0=(65536-初值)/256;将(65536-初值)所得的值化成16进制,其高位就是TH0的值,低位为TL0的值例如用12M晶振做1ms定时计算如下:机器周期=12/12*10^6=1us(微秒)定时初值=(1*10^-3)/(1*10^-6)=1000;所以:TH0=(65536-1000)%256;TL0=(65536-1000)/256;将65536-1000=64536化为16进制为:0xFC18 TH0=0xFC;TL0=0X18;。