51单片机怎样用1个定时器定时多个事件

作者&投稿:兆樊 (若有异议请与网页底部的电邮联系)
51单片机 用一个定时器实现两个功能~

随便举个例子:
//定时器中断 10mS中断一次
void timer0_isr(void) interrupt 1
{

if(flag == 0)
{
//这里是第一件事情
flag = 1;//在主程序处理完第一件事,将此标记清除
}

if (++ucCount == 100) //累加100次达到1秒
{
ucCount = 0; //复位计数
ioLED = !ioLED;//这是第二件事情,实现LED闪烁
}

}

51单片机只有T0,T1。52才有T2的。
定时器设置方法:
做定时用一般采用16位模式,也就是TMOD=0x11(10或01单独一个定时器的话),初值的计算是这样的:
假设时间是X毫秒,晶振为YMhz,那么:THn=(65536-1000*X*Y/12)/256
TLn=(65536-1000*X*Y/12)%256
之后就是TRn=1(开启定时器)
ETn=1(开启定时器中断)
EA=1

在interrupt里面定义多个计时变量,t1,t2,t3 然后就和以前一样用

通过各事件的标志和定时时间判断,如,让LED灯亮,就让Flag等于1,然后,开启定时器,通过判断定时器中断的标志Flag是否为1来判断是不是Led灯的定时事件,来设置定时时间和执行事件的响应函数

在时间的循环里,不断的判断每个事件发生的标志。


单片机中只用一个开关控制8个LED轮流亮灭,按一下第一个亮,再按一下第...
单片机中只用一个开关控制8个LED轮流亮灭,这很容易实现,也是最简单的控制方法,只要识别了按键按下了,就可以控制。轮流点亮更容易,用移位函数_crol_或_cror_就行了。是要仿真吗,给你个仿真图。

单片机用一个按键随意切换控制三种状态,1、半小时后关灯;2、1小时后...
可以按一下按键,切换一种状态,也可以用短按,长按和双击来区分3种状态。

怎样用单片机的一个IO口识别三种电平状态并分别执行不同输出:(1)高...
缺少条件,信号没有格式则无法检测到正确数据。假设:每个数据周期为2S,自电平变化后开始计时,0.2S采样一次,5次后记录电平类型。高电平为1,低电平为0。每两次采样为一组,若组数据为11则为高电平,00为低电平,其他为脉冲。此方法,接收特定数据时会出现错误。自己完善吧。

如何用单片机一个按钮开关控制3个灯3种效果。流水。闪烁。还有一直亮...
下面是用C51编写的简单程序:include <reg51.h> include <intrins.h> sbit io_Key = P1 ^ 1;sbit led1 = P1 ^ 2;sbit led2 = P1 ^ 3;sbit led3 = P1 ^ 4;unsigned char ucCount = 0;bit flag05s = 0;\/\/--- void delay125us(void) \/\/@12.000MHz { unsigned char i;i...

51单片机中怎样位选一个端口出来单独使用,而不受其它端口的影响?_百度...
sbit P1_1=P1^1;选择p1.1出来。

如何同时在一个单片机C语言中同时使用外部中断0和1?
(51单片机)如果没有特别需要,可以不设置优先级,则按自然优先级执行,自然优先级顺序为:INT0 T0 INT1 T1 串口 。void init() \/\/中断初始化 { EA=1;EX0=1;EX1=1; \/\/开中断 IT0=1;IT1=1; \/\/设为下降沿触发 } void ex0() interrupt 0 {} void ex1 interrupt 2 {} ...

如何同时正确使用一个单片机的定时器1和计数器1
其实,定时器和计数器都 是一个,只不过是两种叫法而已。实质上是计数器,只是对机器周期计数时,可以作为定时器用,对外部脉冲计数时,就是纯粹是计数器了。所以,要看做什么用,叫什么都行的。

如何同时在一个单片机C语言中同时使用外部中断0和1
这个是可以一起使用的,对应的P口是不一样的,按照中断使用的规则去设置就可以了

单片机怎么用两个或两个以上控制一个二极管,也就是说先后按下两个开关...
{ P1^0=1;P1^1=1;if(P1^0==0 && P1^1==0) P1^2=1;else P1^2=0;} } P1^0,P1^1是连到开关的引脚,P1^2连到LED正端,LED另一端接地。当P1^0,P1^1都接地,即两个开关都按下时,P1^2输出高电平,点亮LED(上拉电阻可以用1~2K可直接接LED并点亮),可以把上述引脚改成...

51单片机怎么用一个按键控制P0,P2顺序输出高电平
下面这个程序里面有你要的东西,自己找找。include"reg51.h"void delay(int n);sbit K1=P3^3; \/\/LED左移按键 sbit K2=P3^5; \/\/LED右移按键 sbit K3=P3^6; \/\/开启手动按键 sbit K4=P3^7; \/\/开启自动按键 bit mark1=0;bit mark2=0;unsigned char a,b,c,d;int x;v...

鹰手营子矿区18898584724: 51单片机怎样用1个定时器定时多个事件 -
赧烟锡类: 通过各事件的标志和定时时间判断,如,让LED灯亮,就让Flag等于1,然后,开启定时器,通过判断定时器中断的标志Flag是否为1来判断是不是Led灯的定时事件,来设置定时时间和执行事件的响应函数

鹰手营子矿区18898584724: 51单片机如何用一个定时器当多个延时电路用, 就是按下开关一,灯泡亮三秒. 按下开关二,灯泡亮五秒. -
赧烟锡类: 可以的,定时器先定时出一个秒周期,然后对秒进行计数,得变量M.这个M,可以从1计数到一万、一百万等,也可以循环计数,即计数到100就又从1开始;然后按下开关一时,就取当前的M值=K1,并且使灯泡亮,当M=K1+3时,使灯泡灭就是了.同理,按下开关二时,就取当前的M值=K2,并使灯泡亮,当M=K2+5时,使灯泡灭就是了.

鹰手营子矿区18898584724: 51单片机如何用一个定时器当多个延时电路用, 就是按下开关,一,灯泡,一,亮三秒. 按下开关,二, -
赧烟锡类: 没想法就不会有创新,你的想法就很好.像这种亮灯的程序,对时间要求不是那么严格(如果极其严格就没法实现),那么可以采用如下方法实现你的要求://假设晶振12MHZ,按键输入P1.0,P1.1,P1.2;LED控制P2.0,P2.1,P2.2,都是低电平有...

鹰手营子矿区18898584724: 51单片机 用一个定时器实现两个功能 -
赧烟锡类: 随便举个例子://定时器中断 10mS中断一次 void timer0_isr(void) interrupt 1 { if(flag == 0) { //这里是第一件事情 flag = 1;//在主程序处理完第一件事,将此标记清除 } if (++ucCount == 100) //累加100次达到1秒{ ucCount = 0; //复位计数ioLED = !ioLED; //这是第二件事情,实现LED闪烁} }

鹰手营子矿区18898584724: 怎样使一个定时器定时另一个同时在计数,高手赶快出现帮忙解决啊 -
赧烟锡类: 我不知道你用的是什么单片机,我就以51单片机为例讲解.两个定时/计数器都开,一个设置为定时,一个设置为计数,在特殊功能寄存器TMOD中的C/T中可以设置,TMOD左边四位控定时/计数器1,右边四位控定时/计数器0.C/T为1,表示counter计数器,C/T为0表示timer定时器.定时/计数器1和定时/计数器0设置的方法一样.

鹰手营子矿区18898584724: 用单片机实现多个定时 -
赧烟锡类: 设一次定时会吧!那就设1分钟定时吧!时间到了就转去执行1分钟定时到的子程序,在这个1分钟定时到子程序里设3个或多个累减寄存器,每次进入这个子程序它们就减一,只要它减为0就报警.所以你可以扩充很多个,每个定时最大256分钟.

鹰手营子矿区18898584724: 单片机如何用一个定时器为时基,作出几十个定时精度为1毫秒的? -
赧烟锡类: 51系列的单机基为实现不了1毫秒的定时输出,我看你的题目,应该是做某种信号的编码吧.如果单片机有PWM,那就用PWM输出口输出电平的翻转,用这个普通的IO口连接PWM输出口去一个与门芯片,这样就可以用IO口控制输出了,减少了CPU 的负单的同时,也减少的开发工作.如果没有PWM输那,那就做555芯片,或者用有源晶振做一个方波输出端吧

鹰手营子矿区18898584724: 单片机c语言里怎么用2个定时器?怎么设置优先级? -
赧烟锡类: 是51单片机吗?如果是51单片机,你可以使用TMOD设置两个定时器,然后使用TR0、TR1分别启动两个定时器.PT0置为“1”,就可以中断定时器1的服务函数,相反,如果PT1置为“1”就可以中断定时器0的服务函数. 如果不设置PT的值,默认为“0”,这样的话,T0和T1谁也不能中断谁.

鹰手营子矿区18898584724: 单片机中使用定时器实现多个定时?比如我先定时200us,定时到了之后再定时168us. -
赧烟锡类: 定时中断设为8us 设两个变量,一个到21就调用168us那个程序,并清零 一个到25就调用200us那个程序,并清零

鹰手营子矿区18898584724: 51单片机一个定时器怎样控制两个超声波 -
赧烟锡类: 同时去控制是不可能的,51单片机的定时器不像STM32的定时器分四个通道,最好的办法就是先控制一个再控制另一个

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