51单片机计时器在线使用可否分享给我🌝

基于51单片机的倒计时器设计
10:53:04&&&来源:51hei &&
void Displaypro(void)
&&&&&&& StrTab[0]=tab[hour/10];&&&&&&&&&&&& //存储小时
&&&&&&& StrTab[1]=tab[hour%10];
&&&&&&& StrTab[2]=0x40;&&&&&&&&&&&&&&&&&&& //存储"-"
&&&&&&& StrTab[3]=tab[minute/10];&&&&&&&&&&&&&&&& //存储分钟
&&&&&&& StrTab[4]=tab[minute%10];
&&&&&&& StrTab[5]=0x40;&&&&&&&&&&&&&&&&&&&&&&&&&& //存储"-"
&&&&&&& StrTab[6]=tab[second/10];&&&&&&&&&&&&&&&& //存储秒
&&&&&&& StrTab[7]=tab[second%10];
void Print_play_pro(void)&&&&&&&&&&&&&&&& //动态扫描数码管
& D0=1; D1=1; D2=1;&&&&&&&&&&&&&& //显示秒
& P0=StrTab[7];
& delay(3);
& D0=0;D1=1; D2=1;
& P0=StrTab[6];
& delay(3);
& D0=1;D1=0; D2=1;&&&&&&&&&&&&&& //显示"-"
& P0=StrTab[5];
& delay(3);
& D0=0;D1=0;D2=1;&&&&&&&&&&&&&&&&&&& //显示分
& P0=StrTab[4];
& delay(3);&
& D0=1;D1=1;D2=0;
& P0=StrTab[3];
& delay(3);&&&&&&&&
& D0=0;D1=1;D2=0;&&&&&&&&&&&&&&&&&&& //显示"-"
& P0=StrTab[2];&&&&&&
& delay(3);&
& D0=1;D1=0;D2=0;&&&&&&&&&&&&&&&&&&& //显示小时
& P0=StrTab[1];
& delay(3);&
& D0=0;D1=0;D2=0;
& P0=StrTab[0];
& delay(3);&
/*****************************定时器1中断*********************************/
void time1_isr(void) interrupt 3&&&&&&&&&& //定时器1用来处理蜂鸣器
&&&& static uint count = 1;&&&&&&&&& //位置待定
& TH1=0xd8;&&&&&&&&&&&&&& //重入初值定时20ms
&&&& TL1=0xf0;
& //Print_play_pro();&&&&&& //抖动效果&&&&
& count++;
& D3=0;&&&&&&&&& //产生闹钟方波
& if(200==count)
&& count=1;
/***************************定时器0中断**********************************/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
void tim(void) interrupt 1&&&&&& //定时器0用来处理倒计时
&&&&&&&&&&&&&&&&&& //定义内部局部变量
&&&&&&& TH0=0xd8;&&&&&&&&&&&&&& //重新赋值
&&&&&&& TL0=0xf0;
&&&&&&& count++;
&&&&&&& switch (count)
&&&&&&&&&&&&&&& case 80:Displaypro();&&&& //隔一定时间调用显示处理
&&&&&&&&&&&&&&& default:
&&&&&&& if (count==100)
&&&&&&& {&&&
&&& clock_judge_pro();&&& //定时时间判断
&&& count=0;
&&& if((0==minute)&&(second==0)) //倒计时值处理
&&&& if(0==hour)&&& { hour=0;&&& }
&&&& else&&&&&&&&&& { hour--;&&& }
&&&& minute=60;
&&& if(0==second)
&&&& if(0==minute)& { minute=59; }
&&&& else&&&&&&&&&& { minute-=1; }
&&& if(0==second)&&&&& { second=60; }
&&& else&&&&&&&&&&&&&& { second-=1; }
&&&&&& if((0==hour)&&(0==minute)&&(0==second)) //倒计时到00:00:00,结束倒计时
&&&&& { hour=0; minute=0; second=0; Displaypro(); TR0=0; }&&&&&&&
&&&&&&& }&&&
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
51单片机相关资源
倒计时器相关资源
编辑:什么鱼
本文引用地址:
最新视频课程
本周热门资源推荐
EEWORLD独家51单片机的定时器的时间怎么算??_百度知道
51单片机的定时器的时间怎么算??
还有,那个“12Mhz时,单周期指令时间为12/fsoc=1us”。。。12和fsoc分别代表什么意思??...
还有,那个“12Mhz时,单周期指令时间为12/fsoc=1us” 。。。12和fsoc分别代表什么意思??
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
匿名用户知道合伙人
51单片机1个机器周期=12个时钟周期,频率为12MHZ,则一个机器周期为1US,具体到定时器程序就是,假如你想定1MS,那么单片机每次加一个一,就要过1US,那么1MS就要加1000次,所以用=64535;再把64535换成16进制为FC17,把FC付给TH0,17给TLO,即可定时1MS,因为65535他就溢出进入中断。
吕家三少勤龙知道合伙人
吕家三少勤龙
获赞数:14
擅长:暂未定制
fosc表示晶振频率。单周期指令就是一个机器周期。fosc为12MHZ,也就是说时钟周期T=1/12Mhz,机器周期=12倍的时钟周期。所以单周期指令时间就是12/fosc=1us了。
匿名用户知道合伙人
12MHz是工作频率,51单片机是一个机器周期=12个时钟周期工作频率除时钟周期就是12/12=1us=1000ns
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。51单片机的3个定时器_百度知道
51单片机的3个定时器
你好,我用C51编程程序用到了3个定时器。不加T2时,只写用T0,T1的程序正常,而后来加入T2后,就不正常了,在开发板上看到只有T0和T2好使,而T1不好使了。我想要是考虑优先级的话,也...
你好,我用C51编程程序用到了3个定时器。
不加T2时,只写用T0,T1的程序正常,而后来加入T2后,就不正常了,在开发板上看到只有T0和T2好使,而T1不好使了。
我想要是考虑优先级的话,也应该是T0,T1正常,T2不正常。有些想不明白,请大家指教。void tim0_isr (void) interrupt 1 //作为红外解码用{
//用于计数2个下降沿之间的时间} void Timer1_isr(void) interrupt 3 //18b20温度采集用{staTH1=()/256;
//重新赋值 2msTL1=()%256;num++;if(num==100)
//
ReadTempFlag=1; //读标志位置1
}}void Timer2_isr(void) interrupt 5 //自编的PWM调速用{static
RCAP2H = ()/256;//晶振12M 10ms 16bit 自动重载
RCAP2L = ()%256;if (count==pwm_grade)
//如果定时等于on的时间,
//说明作用时间结束,输出低电平
count++;if(count ==5)
//反之低电平时间结束后返回高电平
if(pwm_grade!=0)
//如果开启时间是0 保持原来状态
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
smile默白知道合伙人
采纳数:1324
获赞数:6955
51单片机只有T0,T1。52才有T2的。定时器设置方法做定时用一般采用16位模式,也就是TMOD=0x11(10或01单独一个定时器的话),初值的计算是这样的:
假设时间是X毫秒,晶振为YMhz,那么:
THn=(*X*Y/12)/256
TLn=(*X*Y/12)%256之后就是TRn=1(开启定时器)
ETn=1(开启定时器中断
EA=1资料来源:吴鉴鹰吧
JINZHOU002知道合伙人
JINZHOU002
采纳数:22
获赞数:35
擅长:暂未定制
你只用一个定时器就够了,所有需要计时的事件都参照这一个定时器触发。
我不是很理解。有的只是计数,有的是采集数据,能放到一起用嘛
能啊, 比如计时器0.05秒触发一次,1, 计时 :
if(++a&20){Miao++;a=0;}2,
采集假设半秒1次
if(++b&10){Caiji=0b=0;}主循环
if(Caiji=0xff){Caiji=0x00;Caiji1();}
明白谢谢,我改了下试试有点效果,但是还不太理想,有时会影响采集的数据
这样做是最效率最合理,最节约单片机速度的,影响采集数据肯定是其他原因。
本回答被提问者采纳
lylxy1965知道合伙人
采纳数:273
获赞数:1800
我感觉和你采用的static型变量有关,尤其是针对“想要是考虑优先级的话,也应该是T0,T1正常,T2不正常。”,很有可能。建议你打开编译后的工程文件的.M51文件,查看一下你的两个静态变量分配的RAM地址是否有重叠,是否和其它变量分配的地址有重叠。看一下就能理解。举例:.M51中的这一段:。。。。SYMBOL TABLE OF MODULE:
TEMP (MAIN1)
----------------------------------
//源程序模块MAIN1.C
//D:dtat,地址90H
//D:data全局变量iCount ,起始地址09H D:0006H
//D:data局部变量i,起始地址
//B:bdata,地址A8.H。。。。。。。。。。 如果是这样请反馈,我也想确认一下。
irtime我看了是这样的
还有一个可能。比如现在:void tim0_isr (void) interrupt 1void Timer1_isr(void) interrupt 3 void Timer2_isr(void) interrupt 5 改为void tim0_isr (void) interrupt 1
1void Timer1_isr(void) interrupt 3
2 void Timer2_isr(void) interrupt 5
3中断服务程序均未分配工作寄存器区。没看编译结果,不知是否有此原因。
irtime按你说的完后的结果,还是这样。
void Timer2_isr(void) interrupt 5中断产生的间隔时间很短,我仿真执行了一下只有20几us,主程序被此中断打断的频率极高(另外中断里前两句对RCAP2H及RCAP2L的赋值语句可以不要);TIME1中的标志位被置1后,主程序中需要去执行获取AD转换的结果,这个过程是否会受到影响?你试试调用ReadTemperature()前TR2=0,执行完后TR2=1;这样是否可恢复正常。如果这样还要想别的办法去处理TIMR2的PWM输出。邮箱:lylxy@vip.sohu.com。
独小林知道合伙人
采纳数:27
获赞数:134
擅长:暂未定制
51单片机只有T0,T1。52才有T2的,你把你程序发出来我才可以找问题呀
我已经发出来了
就你给的程序段而言,是没有问题的,除了你的第一行多打了个\
你看下中断处理程序呢
airshou知道合伙人
擅长:暂未定制
高人速速现身,我也想知道答案!
其他2条回答
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Go the f🌝ck to sleep - BabyCenter
Please click
if you are not redirected within a few seconds.
This site requires Javascript enabled on the web browser.
advertisement
advertisement
Go the f🌝ck to sleep
Posted 06/26/2014
It's 4:33am here and my LO
(little one) has been up all. night. long. Okay, I lied. She's fallen asleep a few times but had probably woken up close to12 times.
Here are my theories:
1) she is teething hardcore, although she doesn't seem like she's in pain. When she wakes up it's never a painful cry, just more uncomfortable and bored
2) she has a cold, as yesterday she was very sneezy and runny nosed
3) she is constipated. yesterday she had no appetite at all and did not poo, yet she kept farting so hard and often I was sure they were sharts.
I took her to the doc yesterday as she has had reoccurring ear infections, so maybe they was bothering her. Nope, healthy as can be. The ped wasn't concerned at all about the constipation and said she could feel any signs of teeth.
What gives? Mama just wants sleep :(
<div class="reaction_count_value reaction_count_position1" id="reaction_hug_total_
Posted 06/26/2014
She's just a baby. All of the above could be reasons. Good luck mama. I've never been blessed with good sleepers- my body has adjusted to living off a mere 3/4hours interrupted sleep a night.
J+J(05)=K(06), R(13), L(16)Sacrificing the child batteries for adult toys helps make for less stressed parents. --ParaLi
Posted 06/26/2014
I would change the title.
You sound like a super caring mother.
Posted 06/26/2014
I love that book. Particularly the rendition by Samuel l Jackson.
Has anything changed recently in the environment? Temperature for example? Or has she started to learn a new skill?
Posted 06/26/2014
mine did a similar thing all day yesterday , hardly napped at all. Luckily he still slept through the night. Almost dreading what today will be like though. Good luck!
Posted 06/26/2014
I wish we could understand babies better! I had a similar night last night and still have no idea what was wrong. In the middle of the crankiness I want to fix her problems but all the usual helps didn't help. I even started crying as well but I think it was because I kept getting woken up just after I fell asleep so my sleep cycle was consistently shallow. Who knows! I never know what the night brings with my little girl- 8 hours or 2 hour intervals are still normal.
rodriguez8481
Posted 06/26/2014
If she's sick with a cold that must be it. Sick babies sing usually sleep well. Hope lo gets better and you get some rest soon.
Last edited 06/26/2014
My lo and my nephew a mth younger just went thru the same thing. They had colds and belly aches..I guess the drainage of the mucous was causing them belly aches and after farting and sharting they started having major blow outs for almost 2 wks. Gas drops helped w/ belly aches..and you might want to get some saline nose spray for babies and a snot sucker. Hope your lo gets better! Poor thing
In Reply to FunMoonMoon
To reply to All, click the X.
Add a comment
Uploading...
advertisement
Learn more
Look how far your child has come.
Review your child's growth milestones.
Read about .
Your growing child
Learn more
What's next for your growing child?
Get a glimpse of what's to come.
Read about .
advertisement
Related Photo Clubs
Related Groups
Badge nomination
The nominee
Please choose a badge
Tell us why
Why are you nominating this member for a badge? Please explain briefly or provide a link to support your nomination.
Please tell us why
Your nomination has been submitted.
Please be patient. It can take a week to work through the nominations and assign badges.
BabyCenter Shortcuts
BabyCenter Mobile
Our U.S. Sites
Our International Sites
Connect with us
Please sign in
Email address:
This field is required.
This field is required.
Keep me logged in.51单片机计时器和中断
13:54:11编辑:什么鱼 关键字:&&&&
############################
EX0(IE.0),外部中断0允许位;
ET0(IE.1),定时/计数器T0中断允许位;&
EX1(IE.2),外部中断0允许位;
ET1(IE.3),定时/计数器T1中断允许位;
ES(IE.4),串行口中断允许位;
EA (IE.7), CPU中断允许(总允许)位。
初始化对定时计数器操作:
第一步:&对TMOD赋值,以确定T0,T1的工作方式
第二部:&计算初值,写入TH0,TL0或者TH1,TL1
第三步:&中断方式,对IE赋值开放中断
第四步:&使TR0或者TR1置位,启动定时计数器工作方式是定时或者计数
TMOD:&低4位控制T0& 高4位控制T1
GATE& C/T&M1&M0&GATE&C/T&M1&M0
M1M0&& 设置工作方式
0 0&& 方式0&& 13位定时计数器
0 1&& 方式1&& 16位定时计数器
1 0&& 方式2&& 8位自动重装定时计数器
1 1&& 方式3&& T0分成独立两个8位定时计数器,T1停止计数
C/T&& 0为定时模式&1为计数模式
GATE:门控位。
GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;
GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件
工作方式1的初始化 ,定时器用T0
则M1M0=01&C/T=0 (定时模式)&GATE=0
所以TMOD=x01
TCON 高四位控制定时计数器的启动和中断申请
高四位: TF1,TR1,TF0,TR0
TR0开关&& 其他的固定
这里只举例方式1
计数是16位 ,&& 由TL0 作为低8位, TH0作为高8位 组成加1计数器
个数与初值关系:& X=2^16-N
如,计算50000 (50毫秒)
TH0=()/256&&& 放入高4位
TL0=()%256&&& 放入低4位
####################################################################################
#define uint unsigned int&
#define uchar unsigned char&
sbit dula=P2^6;
sbit wela=P2^7;
sbit d1=P1^0;
uchar num,num1;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void main()
&TMOD=0x11;//设置定时器0为工作方式1
&TH0=()/256;
&TL0=()%256;
&TH1=()/256;
&TL1=()%256;
//&EA=1;//开总中断
&ET0=1;//开定时器0中断
&TR0=1;//启动定时器0
&wela=1;//
&&if(num1==25)
&&&&num1=0;
&&&&P1=~P1;
&&if(tt==100)
&&&&num++;
&&&&if(num==16)
&&&&num=0;
&&&&dula=1;
&&&&P0=table[num];
&&&&dula=0;&
void delay(uint z)
&uint x,y;
&for(x=z;x>0;x--)
&&for(y=110;y>0;y--);&
void time0() interrupt 1
&TH0=()/256;
&TL0=()%256;
void time1() interrupt 3
&TH1=()/256;
&TL1=()%256;
关键字:&&&&
来源: eefocus
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
关注eeworld公众号快捷获取更多信息
关注eeworld服务号享受更多官方福利
/*&名称:51单片机实现LED流水灯(数组方式和位运算方式)说明:今天又重新开始系统的学习51了,LED就算个开端吧。&要注意两点:&1、sfr和sbit是C语言扩展出来的关键字。其中sfr用于对特殊功能寄存器进行声明,sbit用于对某些特殊功能寄存器的某位进行声明。这里和宏定义很相似,但是不能用宏定义进行替换,对于前者是因为51单片机的寄存器存在于内部空间0x80-0xFF,这空间属于直接寻址,51特殊功能寄存只能直接寻址,不能间接寻址。如果用宏定义的话,在翻译成汇编时就会认为是通过总线访问对应的外部地址了。对于后者,sbit是定义一个标志位,也叫位变量。而类似于#define key1 P3
/*&名称:51单片机之按键实验&说明:键盘是计算机最基础、最重要的输入设备之一。对于键盘来说,其工作任务大体可以分为以下三项:&(1)、按键识别。即判断有无按键按下。&(2)、求键值。判断哪个键被按下。&(3)、执行相应的操作。&在这里,实验所用到的键盘为独立键盘和矩阵键盘。对于独立键盘,它的每个按键需要占用一个IO口。一般来说,按键一端接地,另一端接IO口。当按键按下时,线路被导通,IO口被拉低,即状态为‘0’。所以在使用是我们一般把对应IO口置成高电平,然后不断检测此IO口是否被拉低,从而判断按键是否按下。&对于矩阵键盘来说,它用较少的IO口完成较多个按键
/*&名称:51单片机之数码管显示实验&说明:对于数码管来说,其本质上可以理解为按照一定规则组合的多个二极管。其使用只需按照特定规则显示对应的二极管即可。要稍微注意一点的就是多个数码管的显示分为静态显示和动态显示。静态显示就是每个二极管显示的内容是一样的,通过片选信号来决定是哪个二极管该显示。动态数码管,即利用人眼的视觉停留效果,快速扫描,快速显示每个数码管的内容,使得每个数码管看起来好像是一起显示的一样。&本实验编写了几个数码管显示的简单程序。在此不做赘述了。*/#include &reg52.h&#define uchar unsigned char//共阳极段码(a在高位,dp在低位
最近的一个项目中测试系统的高低温实验,结果意外的发现经过高低温实验后(80℃到-20摄氏度)单片机有些已经死机了,所以不得不着手研究一下这个问题,在网上查阅资料后,基本上可以归结于以下几个问题:1. 意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象&2. 中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。&&3. 地址溢出,常见错误为指针操作
51单片机的外部中断有两种模式:电平触发模式和跳变沿触发模式第一,选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。第二,选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。&区别:电平触发模式时,中断标志寄存器不锁存电平中断请求信号。单片机把每个周期的S5P2采样外部中断口的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换言之,就是要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行
最近看了一下80C51单片机的中断部分的实验,做一些笔记,方便以后学习查找。&首先说一下什么是中断吧,中断是指CPU在执行当前程序的过程中,由于某种随机出现的外设(外部设备)请求或CPU内部的异常事件,使CPU暂停正在执行的程序而转去执行相应的服务处理程序;当服务处理程序运行完毕之后,CPU再返回到暂停处继续执行原来的程序。那什么是中断嵌套呢?简单点说就是低优先级的中断可以被高优先级的中断源所中断,等高优先级中断服务程序结束后,再返回去执行被中断的的低优先级的中断服务程序。举个简单的栗子吧(之前写过但不知道怎么删了,,又让我重新编辑):比如我们就是一个CPU,我们当前在洗衣服(当前程序),突然电话铃声响了(中断来了
热门资源推荐
最新单片机文章
最新视频课程
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。
相关热搜器件

我要回帖

更多关于 单片机计时器 的文章

 

随机推荐