free性丰满hd毛多多,久久综合给合久久狠狠狠97色69 ,欧美成人乱码一区二区三区,国产美女久久久亚洲综合,7777久久亚洲中文字幕

0
問(wèn)答首頁(yè) 最新問(wèn)題 熱門(mén)問(wèn)題 等待回答標(biāo)簽廣場(chǎng)
我要提問(wèn)

單片機(jī)

如何達(dá)到延時(shí)目的而不影響單片機(jī)的其他功能

我編程的水平比較菜,最近碰到一個(gè)問(wèn)題:用電容觸摸來(lái)觸發(fā)一個(gè)子程序。在這個(gè)子程序中,有幾段100ms的延時(shí)。

現(xiàn)在發(fā)現(xiàn)這個(gè)子程序運(yùn)行時(shí)會(huì)導(dǎo)致電容觸摸子程序異常(出錯(cuò),實(shí)際摸一次,程序卻檢測(cè)到摸了好多次)。想過(guò)用中斷來(lái)做延時(shí),但是只要進(jìn)入子程序就必須要延時(shí)正好到100ms。否則,如果進(jìn)入子程序后,延時(shí)還沒(méi)到100ms,跳出子程序后,就沒(méi)有辦法在延時(shí)到100ms時(shí)回到該子程序的這個(gè)延時(shí)的地方了。不知道有沒(méi)有一個(gè)好的程序結(jié)構(gòu)可以解決這個(gè)問(wèn)題?多謝!

提問(wèn)者:wywrtswe 地點(diǎn):- 瀏覽次數(shù):2924 提問(wèn)時(shí)間:10-19 09:51
我有更好的答案
提 交
6條回答
ll1589179925 05-18 15:48
定義一個(gè)全局變量,用來(lái)指示狀態(tài)。條件滿足時(shí)觸發(fā)中斷,在中斷中改變這一變量的值。
在主程序不斷循環(huán)判斷,根據(jù)不同的值執(zhí)行不同的操作。
當(dāng)然,如果判斷的東西多了,有可能一次循環(huán)下來(lái),有多個(gè)狀態(tài)滿足條件,那下次循環(huán)的時(shí)候,還是該按順序一個(gè)一個(gè)來(lái),有可能時(shí)間就又難控制了。這時(shí)就需要更復(fù)雜一些的機(jī)制了。
殺戮之神 05-12 12:48
需要延時(shí)的子程序結(jié)構(gòu)是這樣的:
void Function()
{
??uchar i;
??A();
??B();??
__delay_ms(50);
??for(i=0;i<6;i++)
??{
? ? buf[i]=DATA[i];? ? ? ?
??}? ? ? ?
??Send(buf,6);
??__delay_ms(100);
??C();? ?? ?
__delay_ms(100);
??D();
}
由于該驅(qū)動(dòng)的時(shí)序要求,必須要有這些延時(shí)才能達(dá)到相應(yīng)功能。而且只有A,B,C,D四個(gè)函數(shù)按照該順序連續(xù)執(zhí)行,才是有效命令。
現(xiàn)在問(wèn)題是,如果我在執(zhí)行到該子程序的中間時(shí)(比如到了B函數(shù)),如果延時(shí)沒(méi)有到位,MCU就會(huì)跳出該子程序。等到我下次進(jìn)入該子程序時(shí),又是從頭開(kāi)始執(zhí)行(A函數(shù))。這樣就沒(méi)法跳過(guò)已經(jīng)運(yùn)行的A,B函數(shù),直接運(yùn)行C函數(shù)了。
yqyuqy 05-15 14:51


所有延時(shí)用定時(shí)中斷,在定時(shí)中斷里做一個(gè)公共時(shí)標(biāo),在各個(gè)子程序里對(duì)時(shí)標(biāo)計(jì)數(shù)判斷,完成各自的動(dòng)作. 這樣再多的延時(shí)也不會(huì)相互影響.
時(shí)標(biāo)取多小要統(tǒng)籌兼顧.原則是滿足最小定時(shí)分辯率的前提下盡可能大點(diǎn),以便讓定時(shí)中斷程序有足夠時(shí)間處理.
ickey007 05-10 18:42
那你設(shè)個(gè)全局變量,執(zhí)行B了,就設(shè)定一個(gè)值,下次進(jìn)入函數(shù)時(shí),首先判斷這個(gè)變量,再執(zhí)行相應(yīng)操作。程序大概是這樣
uchar is_A_executed;
uchar is_B_executed;
....
void Function()
{
??uchar i;
if(! is_A_executed)
{
? ? A();
? ? is_A_executed=1;
}
if(! is_B_executed)
{
??B();??
? ? is_B_executed=1;
}
__delay_ms(50);
...
zhujiecheng 05-19 03:05
這是我們的教材惹的禍.
光教人家 LoopDelay() 式的延時(shí).
定時(shí)時(shí)標(biāo)這種真正實(shí)用的定時(shí)方法, 卻從來(lái)不見(jiàn)正規(guī)的教材介紹!
piaoxuedtian 05-11 19:15
用好定時(shí)器和中斷,裸奔也基本沒(méi)什么問(wèn)題了
撰寫(xiě)答案
提 交
1 / 3
1 / 3
相關(guān)單片機(jī)
具有音調(diào)控制的單片機(jī)立體聲前置放大器
用于單片機(jī)與電子裝置中的開(kāi)關(guān)電源
單片機(jī)軟硬件復(fù)位的條件都有啥
電動(dòng)機(jī)的單片機(jī)控制
單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航