找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2013|回復: 8
打印 上一主題 下一主題
收起左側

簡單的程序不簡單,請問為什么LED不閃爍?51單片機數(shù)據類型計數(shù)延時的問題?

[復制鏈接]
跳轉到指定樓層
樓主
ID:891876 發(fā)表于 2022-12-4 14:35 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
數(shù)據類型計數(shù)延時的問題?

單片機源程序如下:






分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:891876 發(fā)表于 2022-12-4 15:19 | 只看該作者
i=10000 就正常了,不應該啊,請老師解答
回復

使用道具 舉報

板凳
ID:1055594 發(fā)表于 2022-12-4 16:05 | 只看該作者
建議延遲函數(shù)這樣寫,這樣是1s。(uint為unsigned int)你那種不規(guī)范。。。。。。
void delay(uint time)
{
        uint i,j;
        for(i=0;i<time;i++)
                for(j=0;j<155;j++)
                        ;
}
回復

使用道具 舉報

地板
ID:94031 發(fā)表于 2022-12-4 16:09 | 只看該作者
芙蓉焊料 發(fā)表于 2022-12-4 15:19
i=10000 就正常了,不應該啊,請老師解答

i=1000000也是可以的,你得耐心等待。
回復

使用道具 舉報

5#
ID:342822 發(fā)表于 2022-12-4 17:11 | 只看該作者
1個機器周期等于12個振蕩周期,振蕩周期也叫時鐘周期,時鐘周期即晶振的單位時間發(fā)出的脈沖數(shù),
如12MHZ=12×10的6次方,即每秒發(fā)出12000000個脈沖信號,那么發(fā)出一個脈沖的時間就是時鐘周期,
即1/12微秒;如11.0592MHZ=11.0592×10的6次方,即每秒發(fā)出11059200個脈沖信號,
那么發(fā)出一個脈沖的時間就是時鐘周期,即1/11.0592微秒)。

在51單片機中,1個機器周期等于12個振蕩周期,則在計算定時時間t時:

計數(shù)值N乘以機器周期Tcy就是定時時間t 。
回復

使用道具 舉報

6#
ID:883242 發(fā)表于 2022-12-4 17:47 | 只看該作者
long運算時間遠大于1us,所以你的代碼是正確的,但是需要極大地耐心來證明。
回復

使用道具 舉報

7#
ID:891876 發(fā)表于 2022-12-4 18:01 | 只看該作者
Hephaestus 發(fā)表于 2022-12-4 17:47
long運算時間遠大于1us,所以你的代碼是正確的,但是需要極大地耐心來證明。

原來是這樣,呵呵,腦殼昏
回復

使用道具 舉報

8#
ID:77589 發(fā)表于 2022-12-5 10:03 | 只看該作者
xuyaqi 發(fā)表于 2022-12-4 16:09
i=1000000也是可以的,你得耐心等待。

這是正確的
回復

使用道具 舉報

9#
ID:308903 發(fā)表于 2022-12-6 08:47 | 只看該作者
關鍵你這機器周期不是1us一次,可以進入 bebug 單獨看看 delay 這段程序 ,當i = 1000000us,花了多久
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表