久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 請教大家,51單片機10us中斷一次,能來得及執(zhí)行其它程序嗎 [打印本頁]

作者: rebios    時間: 2024-3-27 10:01
標題: 請教大家,51單片機10us中斷一次,能來得及執(zhí)行其它程序嗎
C51單片機,晶振用12M

void init()     //初始化函數(shù)
{
        TMOD=0X01;  //工作模式選擇
        TH0=(65535-10)/256;   //高位裝載初始值
        TL0=(65535-10)%256;   //低位裝載初始值
        EA=1;                 //開總中斷
        ET0=1;                //開定時器0中斷
        TR0=1;                                 //啟動定時器0



作者: rebios    時間: 2024-3-27 10:28
我做了個PWM控制LED的亮度,想讓燈慢慢亮下來
作者: xiaobendan001    時間: 2024-3-27 10:29
12M,12T,10US?應(yīng)該干不了啥了吧,主頻提到22M,改為1T,興許還能干點
作者: xiaobendan001    時間: 2024-3-27 10:45
rebios 發(fā)表于 2024-3-27 10:28
我做了個PWM控制LED的亮度,想讓燈慢慢亮下來

硬件PWM還是軟件的?頻率不需要那么高啊
作者: wulin    時間: 2024-3-27 11:09
PWM占空比0-100,100-200us中斷就行,10us中斷基本玩不轉(zhuǎn)。
作者: 明日之星8    時間: 2024-3-27 12:33
那就要看你的程序怎么寫了,你想玩PWM放著高級定時器不用非要用T0完成
PWM的任務(wù)。T0只能軟件模擬,這樣要花費很多的CPU的時間,而且最窄
脈沖做不到1個時鐘。
如果用高級定時器來做那就不同了,10uS就是120個時鐘,CPU只需要在“更新”
中斷里寫一下下個周期的脈寬值就好了,120個時鐘里面還有大部分的時間CPU
還可以做其它的任務(wù)。
作者: Y_G_G    時間: 2024-3-27 12:43
10uS一次中斷,如果中斷執(zhí)行時間再有個10uS的話,效率就慢一半了,影響很大的,它不是說做不了什么事,而是慢,而且是慢到“一卡一卡”的那種情況
比如你按鍵按一下就開燈,10uS中斷可能就是按下按鍵之后,好幾秒才能開燈的那種
如果是要用到PWM,可以用片上的PWM
實在沒有或者是非得用定時器不可的話,可以把燈的頻率調(diào)到200HZ,感覺上有一點點閃頻,但也能接受
定時器PWM只做10級的占空比調(diào)節(jié),那就可以了
作者: fosu頑童    時間: 2024-3-27 13:46
Y_G_G 發(fā)表于 2024-3-27 12:43
10uS一次中斷,如果中斷執(zhí)行時間再有個10uS的話,效率就慢一半了,影響很大的,它不是說做不了什么事,而是 ...

我最近一次項目也遇到過這個情況:電機驅(qū)動芯片建議10K以上的PWM頻率,10KHZ對應(yīng)是100us的PWM周期,然后在調(diào)試電機功能時發(fā)現(xiàn)調(diào)速有卡頓。后面排查問題就定位到是主程序跟中斷服務(wù)程序有沖突導(dǎo)致的異常。

當初做MCU選型的時候沒考慮到這一點,所以沒選帶有PWM功能的型號,嗐。
吃一塹長一智,下一批次就準備用STC8H系列來調(diào)試。
作者: coody_sz    時間: 2024-3-27 21:59
可以執(zhí)行幾個us的程序。
作者: 祥子陳    時間: 2024-3-27 23:08
10u的話,完全沒有問題,不過你要是玩pwm,10u周期,100可調(diào),這1ms了,相當于1k的頻率.這種pwm使用有限吧,最好用硬件pwm,現(xiàn)在基本都有,寄存器一設(shè)置,自動發(fā)指定頻率,指定占空比,方便的一批
作者: 1600277881    時間: 2024-3-28 00:04
10us 中斷間隔是否可行,取決于你的中斷程序,你不貼中斷程式只貼初始化的代碼是啥意思?

作者: TTQ001    時間: 2024-3-28 06:26
這取決于其他任務(wù)是否嚴重依賴于時間。
作者: rebios    時間: 2024-3-29 09:58
謝謝樓上各位的回復(fù)
采用的是STC15W104,沒有硬件PWM,用軟件來模擬,我試了,燈可以慢慢亮下來或暗下來

void  Time0() interrupt 1 //中斷函數(shù)
{
        TH0=(65536-10)/256;   //裝載初值
        TL0=(65536-10)%256;   //裝載初值
        num++;                //10us中斷一次 num 加1
        if(num==100)          //判斷num 值  是否等于100 如果等于100 說明1ms時間到 也就相當于定時為1KHZ頻率
        {
                num=0;            //將num值清零
        }
        pwm_print();           //調(diào)用PWM函數(shù)
        pwm_print1();           //調(diào)用PWM函數(shù)
}
作者: rebios    時間: 2024-3-29 10:10
祥子陳 發(fā)表于 2024-3-27 23:08
10u的話,完全沒有問題,不過你要是玩pwm,10u周期,100可調(diào),這1ms了,相當于1k的頻率.這種pwm使用有限吧,最好用 ...

謝謝
程序就是這樣設(shè)計的,10us周期,100可調(diào),工作頻率1K,依靠延時程序,燈能一級一級亮下來。
但是有個問題,LED的亮度是非線性,一開始亮度變化特別大,后來就基本感覺不出來了。
作者: rebios    時間: 2024-3-29 10:16
感謝各位,程序就是拷貝自本壇的。
程序可以正常運行,后來我嫌100級調(diào)光,檔位還是太少,改成1000級調(diào)光,芯片用STC15W104,控制BP2838 LED電源。晶體還是12M默認。仍能正常工作,程序改成下面這樣。
我現(xiàn)在魚缸就正在用這個燈照明,每天從不亮到最亮,將近要一個小時,模擬自然光。

void  Time0() interrupt 1 //中斷函數(shù)
{
        TH0=(65536-1)/256;   //裝載初值
        TL0=(65536-1)%256;   //裝載初值
        num++;                //1us中斷一次 num 加1
        if(num==1000)          //1KHZ頻率
        {
                num=0;            //將num值清零
        }
        pwm_print();           //調(diào)用PWM函數(shù)
        pwm_print1();           //調(diào)用PWM函數(shù)
}
作者: zgrfox110    時間: 2024-3-29 10:36
燈慢慢亮下來?眼睛看?需要那么快的頻率?1毫秒調(diào)一次,眼睛能分辨出來?你知道變得很快和看出來變不一樣。能看出來就行,那么快有啥用?
作者: 1600277881    時間: 2024-3-29 20:41
以你貼出來的中斷程序,估計CPU是12T, 加上這種寫法10us肯定是不夠的,不用想了





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日本国产视频 | 2025国产精品 | 日韩一区二区视频在线观看 | 亚洲欧美日韩一区 | 久久久成人网 | 久久天天躁狠狠躁夜夜躁2014 | 日韩欧美影院 | 日韩欧美在线看 | 五月婷婷综合网 | 欧美性猛交99久久久久99按摩 | 91久久久久国产一区二区 | 天天干天天操 | 日韩 欧美 亚洲 | h视频在线播放 | 精品国产区一区二 | 4虎最新网址 | 亚洲成人毛片 | av不卡在线 | 欧美日韩国 | 999成人网 | 精品国产99久久久久久宅男i | 色一情一乱一乱一区91av | 香蕉视频国产 | 91在线亚洲| 谁有毛片网址 | 一级片免费 | 日本黄色录像 | av网站在线免费观看 | 少妇搡bbbb搡bbb搡澳门 | 精品久久久久久久 | 欧美日韩在线一区二区 | 黄色1级视频 | 久久国产欧美 | 一级做a爰片久久毛片潮喷 亚洲黄色天堂 | 成人精品三级av在线看 | 日韩 欧美 亚洲 | 久久国产热 | 亚洲精品视频一区 | 日本黄色免费看 | 国产一区二区视频在线播放 | 亚洲免费在线 |