欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 求助一個單片機定時器進行多個倒計時設(shè)計方法? [打印本頁]

作者: dyliuxiang    時間: 2018-10-6 07:50
標題: 求助一個單片機定時器進行多個倒計時設(shè)計方法?
求助怎么設(shè)計用一個定時器制作多路倒計時?
作者: 圍城    時間: 2018-10-6 13:06
不是特別明白樓主的要求
作者: 圍城    時間: 2018-10-6 13:11
按我的理解,樓主要通過一個定時器倒計時同時控制多路,并沒有什么沖突,定時器只能確認當時已經(jīng)走過的時間,具體控制哪個多久由程序邏輯控制,假設(shè)有兩路需要控制一路1s,一路3s時間到執(zhí)行后續(xù)操作,我們用定時器定時50ms一次,累計兩次第一路動作,累計6次第二路動作。
作者: 小貓貓愛吃魚    時間: 2018-10-6 13:35
你好!
1、用的什么單片機
2、顯示用什么?
3、需要幾路倒計時?
4、可以加我 QQ ,代做設(shè)計
作者: sxhwdz    時間: 2018-10-6 15:05
用一個定時器中斷做時基,有幾路倒計時就用幾個倒計時單元,分別置初值,在定時器中斷程序內(nèi)對各個計時單元減1,主程序只要不斷查詢各個計數(shù)單元,哪一個歸零了,就是哪一路倒計時結(jié)束了。
作者: 快樂眼淚    時間: 2018-10-6 18:44
小貓貓愛吃魚 發(fā)表于 2018-10-6 13:35
你好!
1、用的什么單片機
2、顯示用什么?

qq號是多少?
作者: zl2168    時間: 2018-10-7 18:10
以1ms(可根據(jù)需要)作為定時基值,對其計數(shù),10ms、50ms、100ms、~、Nms,計數(shù)值滿,執(zhí)行相應(yīng)認為。
作者: wulin    時間: 2018-10-8 15:53
一個定時器作3路不同時間倒計時

程序+仿真.zip (99.08 KB, 下載次數(shù): 99)






作者: th2009    時間: 2018-10-9 19:50
謝謝,收下來學習學習
作者: Robust_Gao    時間: 2018-11-2 20:50
感謝,感謝,正是我需要的
作者: 飛將軍    時間: 2018-11-7 22:59
樓主描述的還是不太詳細,多個倒計時環(huán)節(jié)的話,可能初始值和開啟時間都不同,可以試試用一個定時器產(chǎn)生1秒鐘脈沖,然后分別用按鍵控制不同工作寄存器讀取1秒鐘脈沖,每讀取一次倒計時-1
作者: ljx8940    時間: 2018-11-8 11:00
可以在中斷函數(shù)中設(shè)置多個變量來實現(xiàn)多路輸出
作者: 一時    時間: 2019-10-29 08:00
受用了,謝謝,很好的思路
作者: zhuyafei    時間: 2019-10-29 09:23
51單片機實現(xiàn)數(shù)碼管99秒倒計時,其實很簡單,就是使用定時器中斷來實現(xiàn)。目的就是學習怎樣用單片機實現(xiàn)倒計時,從而實現(xiàn)一些延時控制類的東西,99秒只是一個例子,你完全可以做出任意倒計時如10秒倒計時程序。定時器定時時間計算公式:初值X=M(最大計時)-計數(shù)值。
初值,換算成十六進制,高位給TH0,低位給TL0,如果用定時器0的話。
M(最大計時)如果是16位的,就是2的16次方,最大定時,65535 微秒,實現(xiàn)1秒定時,可以通過定時10毫秒,然后100次改變一次秒值即可。10*100毫秒=1S
計數(shù)值:你要定時多長時間,如果定時1毫秒,就是1000微秒,(單位為微秒),如果定時10毫秒,就是10000(微秒),當然,最大定時被定時器本身位數(shù)限制了,最大2的16次方(16位定時計數(shù)器),只能定時65.535毫秒。定時1S當然不可能1S定時器中斷。
下面為實現(xiàn)99秒倒計時C語言源程序
/*了解定時器,這樣的話,就可以做一些基本的實驗了,如定時炸彈~~,10秒后打開關(guān)閉繼電器*/
/*數(shù)碼管,12M晶振*/
作者: zhuyafei    時間: 2019-10-29 09:24
#include <reg52.h>
#define uchar unsigned char
sbit p11=P1^1; //連的是繼電器。。
code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar shiwei;
uchar gewei;
void delay(unsigned int cnt)
{
while(--cnt);
}
void main()
{
TMOD|=0x01; /*定時器0 16位定時器 X=65535-10000(10毫秒)=55535=D8F0(十六進制)定時10ms
*/
TH0=0xd8;
TL0=0xf0;
IE=0x82; //這里是中斷優(yōu)先級控制EA=1(開總中斷),ET0=1(定時器0允許中斷),這里用定時器0來定時
TR0=1; //開定時器0
while(1)
{
P0=shiwei; //99的十位
P2=0; //99的個位,
delay(300); //動態(tài)掃描數(shù)碼管延時
P0=gewei;
P2=1;
delay(300);
}
}
void tim(void) interrupt 1 using 1 //定時器0中斷
{
static uchar second=99,count; //99只是一個數(shù),可以任意改,因為這里只學習怎樣實現(xiàn)倒計時
TH0=0xd8; //定時10毫秒
TL0=0xf0;
count++;
if(count==100) //10毫秒定時,10*100=1000(毫秒)=1秒
{
count=0;
second--;
if(second==0)
{
p11=0; //這里讓繼電器動作,當然動作之后,要復(fù)位才能等下次倒定時再動作。
second=99; //回到99再循環(huán)來,當然,可以做其他的控制,
}
shiwei=tab[second/10]; //數(shù)碼管10位
gewei=tab[second%10]; //數(shù)碼管個位
}




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1