找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2693|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

這個(gè)單片機(jī)程序delayms處延時(shí)時(shí)間為啥是5x50ms

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:595380 發(fā)表于 2020-10-15 20:57 來(lái)自手機(jī) | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
前兩位59s循環(huán),在delayms處為什么延時(shí)5x50ms?

16027665322945117623004583252803.jpg (660.94 KB, 下載次數(shù): 111)

16027665322945117623004583252803.jpg

16027665694567552653980595665865.jpg (842.39 KB, 下載次數(shù): 98)

16027665694567552653980595665865.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:414556 發(fā)表于 2020-10-15 23:00 | 只看該作者
看定義自程序是MS,參數(shù)是幾就是幾MS。

前兩位59s循環(huán)是在定時(shí)器完成的,你的書寫得很明白。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:595380 發(fā)表于 2020-10-16 07:33 來(lái)自手機(jī) | 只看該作者
amandv 發(fā)表于 2020-10-15 23:00
看定義自程序是MS,參數(shù)是幾就是幾MS。

前兩位59s循環(huán)是在定時(shí)器完成的,你的書寫得很明白。

不是5x50ms,是5ms,前面理解錯(cuò)了,謝謝。那這個(gè)消影時(shí)間為什么是5ms而不是其他的數(shù)呢?
回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 2020-10-16 14:02 | 只看該作者
樓主理解錯(cuò)誤,delay(5);不是消影時(shí)間,是維持當(dāng)前顯示狀態(tài)的時(shí)間。書中消隱代碼也是錯(cuò)的,達(dá)不到消隱目的。正確寫法如下:
void display(uchar shi, uchar ge)
{
        P0=0x00;                        //送段消隱
        dula=1;                                //段碼鎖存
        dula=0;       
        P0=0xfe;                        //送位碼
        wela=0;                                //位碼鎖存
        wela=1;
        P0=table[shi];                //送十位段碼
        dula=1;                                //段碼鎖存
        dula=0;       
        delay(5);                        //延時(shí)5ms,維持當(dāng)前顯示狀態(tài)
       
        P0=0x00;                        //送段消隱
        dula=1;                                //段碼鎖存
        dula=0;       
        P0=0xfd;                        //送位碼
        wela=1;                                //位碼鎖存
        wela=0;
        P0=table[ge];                //送個(gè)位段碼
        dula=1;                                //位碼鎖存
        dula=0;       
        delay(5);                        //延時(shí)5ms,維持當(dāng)前顯示狀態(tài)
}
回復(fù)

使用道具 舉報(bào)

5#
ID:595380 發(fā)表于 2020-10-17 08:04 | 只看該作者
wulin 發(fā)表于 2020-10-16 14:02
樓主理解錯(cuò)誤,delay(5);不是消影時(shí)間,是維持當(dāng)前顯示狀態(tài)的時(shí)間。書中消隱代碼也是錯(cuò)的,達(dá)不到消隱目的 ...

知道了,謝謝你
回復(fù)

使用道具 舉報(bào)

6#
ID:390416 發(fā)表于 2021-3-27 09:22 | 只看該作者
1、假設(shè)在同一個(gè)硬件上做測(cè)試,單片機(jī)CPU指令周期是一致的。那么 變量i、K,存放在data跟存放在XDATA,讀寫速度能一樣?精確計(jì)算有意義嗎?
2、假設(shè)都存放在data,延遲1ms只需要char類型的變量即可完成,但是,延遲100ms必須16位變量,那么執(zhí)行時(shí)間還能照著公式去套算?
3、假設(shè)上述條件都一樣,計(jì)算好的延遲時(shí)間是1ms并且誤差1%,打開(kāi)中斷之后,延遲時(shí)間變成了5毫秒了。誤差500%了,精確計(jì)算有意義嗎?
4、假設(shè)上述條件不影響延遲時(shí)間,那么,編譯器呢?誰(shuí)敢說(shuō)編譯器不同的優(yōu)化等級(jí)不影響delay的延遲時(shí)間?
5、還有硬件不同的情況,就需要重新計(jì)算了。比如晶振頻率不同,CPU內(nèi)核速度不同,STC8H單片機(jī)就比STC15快了很多了比89系列快了十幾倍了。

所以,不要去精確的計(jì)算delay 延遲了多少時(shí)間,畢竟單片機(jī)的運(yùn)行情況有很多變數(shù)。學(xué)會(huì)提高CPU的代碼執(zhí)行效率,是很有必要的!
“什么是單片機(jī)?咱玩的就是時(shí)間!”
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表