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

標(biāo)題: 不用延時(shí)實(shí)現(xiàn)LED燈閃爍的單片機(jī)程序問題 [打印本頁]

作者: 無限飛翔    時(shí)間: 2020-11-4 08:21
標(biāo)題: 不用延時(shí)實(shí)現(xiàn)LED燈閃爍的單片機(jī)程序問題
高手們 總說  不用延時(shí)函數(shù) 或少用延時(shí)函數(shù),想了半天,能不能這樣搞,掉去while循環(huán),放在主程 序里跟著一遍一遍跑,是不是就可以實(shí)現(xiàn),加外還有沒有別的思路?void main()
                {
                        
                        while(1)
                                {
                                          vv++;        
                                          if(vv<20000)   
                                                        {
                                                                P0=0xff;   //供陽極LED,P0口高電壓全滅
                                                        }
                                        if(vv>20001)
                                                        {
                                                                P0=0x00;   //P0口低電壓全亮
                                                        
                                                                if(vv==40000)
                                                                        {
                                                                                vv=0;
                                                                        }
                                
                                }



作者: 心有浮生    時(shí)間: 2020-11-4 09:07
去掉while(1)好像程序只跑一次吧。你可以開個(gè)看門狗,然后不喂狗,自動(dòng)重啟。
作者: k9702    時(shí)間: 2020-11-4 09:15
你貼出來的程序和延時(shí)函數(shù)無關(guān)啊
作者: zhai1995    時(shí)間: 2020-11-4 09:33
放定時(shí)器里呀
作者: 天風(fēng)情    時(shí)間: 2020-11-4 09:54
放定時(shí)器中
作者: hhdsdy    時(shí)間: 2020-11-4 10:01
不用延時(shí)就用計(jì)數(shù)啊,程序跑一趟記一次數(shù),判斷是否到達(dá)設(shè)定值

作者: wulin    時(shí)間: 2020-11-4 10:07
樓主的想法是正確的,已經(jīng)實(shí)現(xiàn)了入門道路上的跨越。如下寫法邏輯更嚴(yán)密。
void main()
{
        unsigned int vv;
        while(1)
        {
                if(vv<20000)   
                        P0=0xff;    //供陽極LED,P0口高電壓全滅
                else P0=0x00;   //P0口低電壓全亮
                vv++;        
                if(vv>=40000)
                        vv=0;                       
        }
}
作者: 無限飛翔    時(shí)間: 2020-11-4 12:33
zhai1995 發(fā)表于 2020-11-4 09:33
放定時(shí)器里呀

定時(shí)器  被別的任務(wù)占用了!!!
作者: 無限飛翔    時(shí)間: 2020-11-4 12:34
wulin 發(fā)表于 2020-11-4 10:07
樓主的想法是正確的,已經(jīng)實(shí)現(xiàn)了入門道路上的跨越。如下寫法邏輯更嚴(yán)密。
void main()
{

謝啦!
作者: leaph    時(shí)間: 2020-11-4 16:28
每個(gè)程序都要一個(gè)定時(shí)器用來跑系統(tǒng)的,把時(shí)間分成很多點(diǎn),這個(gè)想要多長的時(shí)候都行
作者: zmc419    時(shí)間: 2020-11-4 17:24
看高級(jí)一些的書,里面有,主循環(huán)加標(biāo)志變量,利用變量延時(shí)。利用定時(shí)器延時(shí)。
作者: 無限飛翔    時(shí)間: 2020-11-4 19:42
zmc419 發(fā)表于 2020-11-4 17:24
看高級(jí)一些的書,里面有,主循環(huán)加標(biāo)志變量,利用變量延時(shí)。利用定時(shí)器延時(shí)。

有啊,沒看過,自己瞎琢磨。
作者: robinsonlin    時(shí)間: 2020-11-4 20:53
這個(gè)vv變量的累加和歸零,放到定時(shí)器中執(zhí)行,這樣控制精度更高,可移植性更大。 不會(huì)隨主程序的單次循環(huán)周期變化而發(fā)生閃爍頻率的變化。  不過說回來, 如果只是一個(gè)端口的的變化,放到定時(shí)器中,不會(huì)對(duì)定時(shí)器中斷有太大的影響。  如果是液晶屏幕刷新控制,可以通過這樣方法,在定時(shí)器中刷新標(biāo)志位。在主程序中判斷標(biāo)志位來控制是否要運(yùn)行的函數(shù)。
作者: comeon劉    時(shí)間: 2020-11-4 21:16
不懂你在干什么,延時(shí)函數(shù)本來就是通過變量循環(huán)自增自減來占用cpu實(shí)現(xiàn)的,不用延時(shí)就用定時(shí)器
作者: 無限飛翔    時(shí)間: 2020-11-5 15:26
robinsonlin 發(fā)表于 2020-11-4 20:53
這個(gè)vv變量的累加和歸零,放到定時(shí)器中執(zhí)行,這樣控制精度更高,可移植性更大。 不會(huì)隨主程序的單次循環(huán)周 ...

學(xué)習(xí)了,
作者: fj51hei    時(shí)間: 2020-11-5 16:14
robinsonlin 發(fā)表于 2020-11-4 20:53
這個(gè)vv變量的累加和歸零,放到定時(shí)器中執(zhí)行,這樣控制精度更高,可移植性更大。 不會(huì)隨主程序的單次循環(huán)周 ...

問下  在中斷設(shè)置標(biāo)志  主程序運(yùn)行  這樣精度能保證?
作者: csswin666    時(shí)間: 2020-11-5 16:37
這個(gè)代碼寫的可讀性不強(qiáng),延時(shí)單獨(dú)寫一個(gè)函數(shù)。另外不用循環(huán)就得用定時(shí)器。
作者: robinsonlin    時(shí)間: 2020-11-6 15:52
fj51hei 發(fā)表于 2020-11-5 16:14
問下  在中斷設(shè)置標(biāo)志  主程序運(yùn)行  這樣精度能保證?

呵呵。 這個(gè)要自己理解咯。  單次誤差和累積誤差的區(qū)別。
作者: Hooligian    時(shí)間: 2020-12-17 21:26
如果不用延時(shí)函數(shù)的話那就只能用定時(shí)器控制




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