问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

单片机的多个延时用定时器如何处理?

发布网友 发布时间:2022-05-02 05:23

我来回答

5个回答

热心网友 时间:2022-06-28 14:42

用定时器,定时1ms,每当到了、中断,就把 n1、n2、n3,分别加一,然后退出中断。

在主函数中,分别检测n1、n2、n3是否到了50、30、60,到了,就该干什么就干什么去。

用一个定时器,基本就可以满足所有的定时需求。追问你好!这种方法,三个延时是同时起步的吧?我想分开起步呢?请问大虾,可以么?本人也是刚起步,问的不妥的地方敬请大虾理解。

追答这种方法,怎么就是同时起步?
n1、n2、n3,这些变量,开始时都是几,不是由你自己随便定吗?
怎样起步,要看你是怎么控制它们的。
你设定成相同的值,就是同时起步。
和这种方法有什么关系?

热心网友 时间:2022-06-28 14:43

那就设置定时器每10ms中断一次。三个命令假设分别为FA、FB、FC,各自的时间计数器是CA、CB、CC。在定时器中断中让每个计数器加1,即:
timer_irq()
{
CA++;
CB++;
CC++;
}
在主程序中不断检查三个计数器是否符合要求,符合要求时就执行,并且将对应的计数器清零
{
if(CA==5) //等到时间
{FA();CA=0;} //执行,并清除CA计数器。
if(CB==3){FB();CB=0;}
if(CC==6){FC();CC=0;}
//如果不满足上述条件,执行其他程序。
。。。。
}追问你好!这种方法,三个延时是同时起步的吧?我想分开起步呢?请问大虾,可以么?本人也是刚起步,问的不妥的地方敬请大虾理解。

热心网友 时间:2022-06-28 14:43

我学的51系列单片机,可以定义多个定时器,分别控制延时
但是程序是顺序执行的,你的要求是多进程同时发展,每个进程有独立程序段和独立的定时器
你要看看你学的单片机是不是支持多进程
然后按照多进程编程,就能实现要求

比如现在的计算机都是多进程,你电影播放器暂停,但是播歌曲的不受影响,上网不受影响

热心网友 时间:2022-06-28 14:44

例子:
/*上电LED处于灭状态,按1次开关,快闪1秒4次;按2次慢闪1秒2次;按3次常亮;按4次灭;功能循环*/

#include<reg51.h>
sbit LED1=P1^2;
sbit LED2=P1^6;
sbit KEY=P3^7;
unsigned int time;
unsigned char program;
void Delayms(unsigned int ms)
{
unsigned int i=1000;
for(;ms>0;ms--)
for(i=500;i>0;i--);

}
void t0()interrupt 1 using 1
{
if(program==0)//mie
{
LED1=LED2=1;
}
else if(program==1)//KUAI
{
time++; //10ms加1
if(time>25) //250ms
{
time=0;
LED1=LED2=!LED1;
}
}
else if(program==2)//man
{
time++;//10ms加1
if(time>50)//500ms
{
time=0;
LED1=LED2=!LED1;
}

}
else if(program==3)//liang
{
LED1=LED2=0;
}

TH0=216;//TH0=(65536-10240)/256 10ms中断1次
}
void main()
{
bit keyflag=0; //标志位 1按下 0放开
TMOD=0X11;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if((KEY==0)&&(keyflag)==0)
{
Delayms(10);
if(program<3)program++;//按下次数
else program=0;
keyflag=1;
}
else if(KEY)
{
keyflag=0;
Delayms(10);
}

}

}

/**************************************************************/
void time1()interrupt 3 using 2
{
TH1=(65536-10000)/256; //10ms
TL1=(65536-10000)%256;
num1++;
num2++;
num3++;
if(num1>=30) //30ms
{
num1=0;
flag2=1;
}
else if(num2>=50) //50ms
{
num2=0;
flag1=1;
}
else if(num3>=60) //60ms
{
num3=0;
flag3=1;
}
}
//执行第1个命令...
if(flag1==1) ...清零num1,num2,num3
//执行第2个命令...
else if(flag2==1) ... 清零num1,num2,num3
//执行第3个命令...
elseif(flag3==1) ...清零num1,num2,num3

热心网友 时间:2022-06-28 14:45

建立一个数组,表示不同步骤里面延时长度参数,
用一个标志变量A表示当前步骤,在定时中断函数中,每次重新设置定时参数时,先判断A的值,选择不同的时间参数设置。类似于有限状态机。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 楼梯的水泥台阶上可以铺地板革吗 手机腾讯会议共享屏幕播放视频没声 腾讯会议共享屏幕没声音怎么办 请问:碳和炭这两个字怎么区分?哪些词中用碳?哪些又用炭? STP 生成树协议 状态机问题 MFC 怎么用 Timer “碳”和“炭”有什么区别? win7,64位系统,远程桌面登录时,安装本地打印机时找不到(TS Port[您的机器名])端口, 怎么让网贷不爆通讯录 单片机中如何实现多线程,多任务? 炭和碳分别 远程桌面客户端win7连接到windows server 2008 r2服务器,客户端打印机不打印? 这些网贷哪个可以不还 不怕被爆通讯录 急急急 炭和碳分别怎么用? win7 Home basic 与XP sp3组建的局域网,如何进行打印机共享与远程桌面登陆? 碳与炭的区别是什么? 2019网贷现在不敢爆通讯录 网贷不还爆通讯录没存电话的号会打吗? 步进电机 单片机控制 按照图中时序来运行 如何实现 申请网贷获取了你的通讯录信息,为了不让打电话我把通讯录的电话删除干净可以? 51单片机 求解:使用定时器消除按键抖动,下面是我的源程序,实际操作时按一次相当于按多次,不知原因。 51定时器的使用 状态机如何设置转换状态停止 碳和炭有什么异同? AVR单片机按键消抖,atmel studio库延迟函数 &quot;碳&quot;和&quot;炭&quot;有什么区别?希望能通俗易懂 什么时候用“碳”,什么时候用“炭” 八字木旺水旺怎么改运 八字含有水和木的女孩名字合 八字木多的女人,做什么行业好? 微信文字长按没反应 八字水多的女孩名字怎么 木命女孩八字里带三重水好吗? 请高人起名:女孩子姓王生于2008年8月5号18:35,八字缺木多和水。 此命五行水旺缺木;日主天干为金,生于秋季;必须有水助,但忌木太多。是什么意思,白话点。女孩子 长按微信文字没出现复制两个字,怎么回事? 女孩八字木多怎么起名 怎么写解除劳动合同证明书? 我女儿 生辰八字 此命五行木旺;日主天干为木;必须有火助,但忌土太多。 (2木 1火 2土 2金 1水,3:5 ) 有 怎么写解除劳动合同证明书求解答 八字缺木,水多怎么办 解除就业合同证明怎么写? 关蛇打狗打一生肖