单片机怎么实现5秒的定时

作者&投稿:前黎 (若有异议请与网页底部的电邮联系)
用单片机实现5秒定时,期间每隔1秒引发一次中断服务程序~

不能,
因为TH0和TLO都是8位的,两个加起来才16位,也就是说最大只能加到65535。
固最多可以达65毫秒。

如果想设置大于定时65毫秒的定时,你可以把它分成几次。比如:把1秒分成20次中断进行。每次中断的时间为50毫秒。

也就是相当在中断函数中加入
if(i==20)//定时1s时间到
{
.. //标语句
}
这时,就是产生20次中断才做一起操作.就相当于1秒做一次操作(或可以认为是1秒一次真正的中断)

加一 是什么意思? 加1s 还是1ms、us?

用定时器做吧 节省资源


补充 :
当然可以不用定时器做,如楼下几位回答的 都可以 定时器的话 选用定时器设置寄存器(即初始化) 然后设定如1ms一次中断,在中断中 做一个计数器(自己定义一个count) 如果这个加到 1000次就是1s 加到5000次 就是5s 然后清零重新计数并在此时bu++ 就可以了

利用定时器 是节省资源的做法,而且还是最精确的做法,其他方法精度肯定不是完全的5s, 同时可以处理其他问题 如果用延时的话这个时候 中间就什么都不能做了

延时函数 例子:
void delay(unsigned char t)
{
int i=0,m=xxx;
for(i;i<t;i++)
{
//xxx,yyy是一个常量值 跟晶振有关 使得 下面的循环能够达到1s
//当然也可以用for循环
while(m--)
{ n =yyy;
while(n--);
}

}
再main函数调用的时候 delay(5) 就是5s

定时之前、定时完毕,都干什么呀?

下面就是定时 5 秒(fosc = 6MHz)的完整程序。

DL5S()
{
unsigned char t = 0;
TMOD = 0X01;
TR0 = 1;
while(t < 200) {

TH0 = (65535 - 50000) / 256;
TL0 = (65535 - 50000) % 256;
while(TF0 == 0);
TF0 = 0;
t++;
}
}
-----
用汇编语言,就很简单了。
下面就是定时 5 秒(fosc = 6MHz)的完整程序。

DL5S:
MOV TMOD, #01H
SETB TR0
MOV R2, #200
D_LOOP:
MOV TH0, #HIGH(65536 - 50000)
MOV TL0, #LOW(65536 - 50000)
JNB TF0, $
CLR TF0
DJNZ R2, D_LOOP
RET

END

unsigned char flag=0;
void main()
{
TMOD=0x01;//定时器0工作方式1
TH0=(65535-25000)/256;
TL0=(65535-25000)%256;//这部分是定时50ms
EA=1;
TR0=1;
if(flag==100)flag=0;
//这部分往下写你其他的程序;
}
void timer0() interrupt 1
{
TH0=(65535-25000)/256;
TL0=(65535-25000)%256;
flag++;
}
这是晶振6MHZ的 50000的都是12MHZ的......

void Timer0_Init (void)
{
unsigned int RCAP0;
AUXR |= 0x80; //开启1T模式
TMOD |= 0x01;
RCAP0 = 65535 -(6000000/1000); //1000Hz中断频率

timer0l = RCAP0 % 256;
timer0h = RCAP0 / 256;
TL0 = timer0l;
TH0 = timer0h;
ET0 = 1; //开启定时器0中断
TR0 = 1;
}

void Timer0_ISR (void) interrupt 1
{
static unsigned int Stimer_cont;
unsigned int temp;
TL0 = timer0l; //
TH0 = timer0h;

if(Stimer_cont++ > 5000) //中断5000次就是5s了!
{
Stimer_cont = 0;
//这里放你要实现的代码……

}}

#include<reg51.h>
#define uchar unsigned char#define uint unsigned int
bit mark;
void init()
{
TMOD=0X01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TR0=1;
ET0=1;
EA=1;
}
void main()
{
init();
while(1)
{
if(mark)
{
mark=0; //此语句后面接你5S定时以后要做的事情
}
}
}

void timer0() interrupt 1
{
static uchar count=0;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
count++;
if(count>=250)
{
count=0;
mark=1;
}
}

#include "reg52.h"
sbit led=P1^0;
unsigned char num;
void main()
{
TMOD=0X01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1);}
void t0_timer() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++;
if(num==10)
{num=0;
led=~led;
}
}


照相机按五秒才照出相片,怎么可以调出一下照出相片?
相机按5秒钟才能照出照片,是因为设置了延时快门或者设置了低速快门的缘故。因此,如果你想一下子就拍出照片,那就需要从相机参数设置方面进行改变了……或者调整延时快门的设置,或者提高快门速度。这样就可以缩短拍照时间,按下快门之后就能够照出照片了。照相机的拍照操作,从按下快门按键到快门最终释放...

手机怎么延时摄影
相机开启延时摄影的方法:进入相机--滑动至更多--延时摄影--点击 时钟 --设置好需要的倍速、拍摄时长等,即可点击红色按钮开始拍摄。注:该功能仅部分机型支持。相机倒计时的开启方法:进入相机--右上角 齿轮 --(倒计时)--选择秒数(3s\/5s\/10s)--按下快门拍照即可。若有更多疑问,可进入vivo官网-...

服装厂纳片机怎么样使用
1、检查压片机电源是否满足工作条件要求,上下压头是否擦拭干净。并将压片机最大压力调试到压片所需的最大压力,设定好最大压力下的延时时间(一般为5秒钟)。2、在电源满足工作条件要求、上下压头擦拭干净、最大压力调试好延时时间设定好的前提下,用取样勺取适量粉磨好的样品放入压片盒内,并将压片盒准...

手机相机的延时摄影是什么功能
1、延时摄影是以一种将时间压缩的拍摄技术,目前也多叫作缩时录影。其拍摄的是一组照片或是视频,后期通过照片串联或是视频抽帧,把几分钟、几小时甚至是几天几年的过程压缩在一个较短的时间内以视频的方式播放。2、在一段延时摄影视频中,物体或者景物缓慢变化的过程被压缩到一个较短的时间内,呈现...

关于定时导通电路的装置
代替手按了。原理是用单位片机一个IO口控制一个光藕,再写一个程序,设定你要的时间,当到时间后单片机就发一个高电平,光藕就接通了,光藕的端的电平就输出了。单片机可用8PIN封装,内部晶振的,做成一个最小系统,放在一小块PCB上,如用3V单片机,用两节电池供电。搞定。我还有成品哦。

尼康D5300一秒五连拍,怎么做的?
尼康D5300最高连拍速度为每秒5张,当相机在连拍模式下,快门释放按钮完全按下将达到每秒5张的连拍速度。具体操控见说明书68页图:为你找到尼康D5300的说明书:有关内存问题:

如何用五六秒的时间拍出一个悬疑片?
即使只有5、6秒的时间,其实就像广告一样,也足够你来反映你想要表达的中心思想和片子中有趣的创意,这就是所说的一个好的故事的大致发展结构及其内容,也就是所谓的“剧本”。同时,作为悬疑片,建议是悬疑的部分要做到足够吸引观众眼球,即便最后的结果是搞笑的、令人放松的。拍摄地点和演员的设置 选...

我的相机是老胶片机,为什么当我调到1\/1000秒时,它的曝光时间少数很快...
你遇到的情况我看需要先测试一下,才决定是否送修。1、保证电池有电(两节LR44或SR44);2、取下镜头,将相机置于M档,检查各档快门速度(打开后盖,对着光看),此举检查相机的钢片快门是否有油粘连(快门钢片有油时,能看到快门叶片上有油渍)和相机的其他部分是否正常。如不正常,则只能送修了;3...

烤面包片机怎么用?
烤面包机: 首先要把面包右键放砧板上,拿mod里面的刀右键得到6片面包片,将2片面包片右键放面包机里,shift右键启动面包机,烤好之后(就几秒钟吧)面包片自动弹出成掉落物。目前只能烤面包。怎么用烤箱加热面包片 烤箱预热5分钟,直接考就可以了,一般5分钟就行。或者你最好放一片芝士味道更好 烤...

Axure网易云音乐唱片机播放效果原型怎么做?
2.给唱片机添加载入事件,载入事件里处理循环操作 1)判断running是否等于1,如果等于1继续下面的操作 2)顺时针旋转0.1度 3)等待1毫秒 4)触发当前元件的载入事件,实现循环操作 这里每次旋转了很小的角度,并且等待很短的时间,目的是为了让旋转看起来更平滑。3.给唱臂添加单击事件,处理移入和移出...

黔东南苗族侗族自治州13463706505: 单片机定时5秒长按按键有效进入执行程序否则不足5秒或者没有按键则执行另一程序 -
夙柴辰利: 在检测到按键以后开一个定时器,计时,如果到达5秒则跳转,如果中间出现检测到松手,则清空定时器计数,跳到另外一边

黔东南苗族侗族自治州13463706505: 51单片机IO口关5秒亮5秒 4个数码管显示次数的程序 谢谢大家咯 -
夙柴辰利: 你的电路图只有3个数码管,而且没有“位”控电路(开关),你是想继电器通5秒断5秒吗?给你一个软件思路:1、设定一个定时器,在定时中断服务程序中加上LOOP循环(每个中断实行一次,不是死循环)获得一个5秒的定时.2、每次定时5秒后对端口NOT就可以了.

黔东南苗族侗族自治州13463706505: 单片机定时器 计数器的工作原理,及如何实现定时 计数功能 -
夙柴辰利: 原理: 16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换. 当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止. 显然,定时器...

黔东南苗族侗族自治州13463706505: 设Ф =12MHz,试编写80C51单片机定时器T0定时5ms的初始化程序和中断服务子程序.要 -
夙柴辰利: 定时初值:65536-5000=60536=EC78H 工作模式设置:TMOD=00000001B=01H(T0定时方式1) ORG 0000H LJMP MAIN ORG 000BH MOV TH0,#0ECH MOV TL0,#78H MOV C,P1.0 MOV P1.7,C RETI ORG 0100H MAIN:MOV TMOD,#01H MOV TH0,#0ECH MOV TL0,#78H SETB ET0 SETB EA SETB TR0 SJMP $ END

黔东南苗族侗族自治州13463706505: 使用单片机定时工作方式二实现秒定时的汇编语言程序? -
夙柴辰利: 解:选用定时计数器T1工作与定时方式2,定时250us(fosc=12MHz)机器周期为 1us:定时器初值TC=6 所以:TH1=6,TL1=6 ORG 00H...

黔东南苗族侗族自治州13463706505: 单片机计时 -
夙柴辰利: 按你的要求给你写了个简单程序,可用定时器写.下边是不用定时器写的.如按你的要求,按键接P1.0另一边接地,低电平说明按键按下.LED灯我习惯用低电平来点亮.程序如: #include<reg51.h> #define uchar unsigned charsbit start=P1^0...

黔东南苗族侗族自治州13463706505: 怎么利用单片机定时器实现定时的编程过程? -
夙柴辰利: 定时器其实就是单片机的一个内部自身时钟的计数器,每一个周期计数器加1,所以使用定时器功能时候先要给定时器付初值,就是先写TH0TL0的值(如下),写完初值后就等着定时器功能的那个计数器记满了数后也就是到了65536后就溢出了...

黔东南苗族侗族自治州13463706505: 单片机定时程序 -
夙柴辰利: 定时要考虑时钟周期,让单片机运行循环,计算一次循环一次用多长时间,可以得到循环次数.好像用定时器不能直接计时1小时吧~~(是多少位的计数器啊??) 汇编一定要了解,才能学c,不过c要简单许多,所以建议学c.计时过程cpu是在运作的,也是一个子程序的说.也就有高低电平的交换.不能说高低电平的时间长短问题

黔东南苗族侗族自治州13463706505: 单片机上的计时器是如何实现的? -
夙柴辰利: 这是数字电路的知识,如果要得到根本的回答可能要涉及到比较广的范围,那我就从逻辑门电路开始说起吧,逻辑门电路是一种半导体材料做成的电子器件,其工作原理可以参考模拟电路这一本书.它可以通过输入不同的高低电平来输出高\低电...

黔东南苗族侗族自治州13463706505: 如何利用51单片机实现一个计时器? -
夙柴辰利: 方法一:用定时器中断计时模式循环计时.方法二:用CPU消耗时钟周期指令计时(浪费资源).思路:用定时器中断计时,溢出时形成中断信号,标识为一个基本周期t,所定时间T/t=n...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网