找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1070|回復: 6
打印 上一主題 下一主題
收起左側(cè)

求教STC單片機軟件延時問題

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:483407 發(fā)表于 2024-12-12 16:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在使用1602液晶延時函數(shù)時,發(fā)現(xiàn)了這個STC8F2K6S2,在使用延時函數(shù)的時候,修改毫秒、50毫秒、秒這3個函數(shù)的循環(huán)次數(shù),都可以改變延時的結(jié)果,但是對于50微秒這個函數(shù)中,將i改為100,50,20,最后的延時都沒有改變!搞不明白這是為什么?
void delay_50us(uchar us50){        //@12.000MHz
        uchar  i;
        i = 198;                  //i=198:STC軟件中查到的12M時鐘數(shù)據(jù)
        while(us50--)while (--i);
}
void delay_ms(unsigned char ms){
        while(ms--)delay_50us(20);          //100
}
void delay_50ms(uchar i){
        while(i--)delay_ms(50);
}
void delay_s(unsigned char s){
        while(s--)delay_50ms(20);
}


clock.rar

137.18 KB, 下載次數(shù): 0

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

使用道具 舉報

沙發(fā)
ID:92781 發(fā)表于 2024-12-13 10:47 | 只看該作者
重新看了一下,樓下是對的,void delay_50us(uchar us50)的局部變量i在第一次循環(huán)到0之后沒有重新賦值,后面相當于都是while(0),直接跳過了
回復

使用道具 舉報

板凳
ID:161164 發(fā)表于 2024-12-13 11:47 | 只看該作者
因為i沒有重裝
  1. void delay_50us(uchar us50)         //@12.000MHz
  2. {
  3.         uchar  i;
  4.         while(us50--)
  5.         {
  6.                 i = 198;                  //i=198:STC軟件中查到的12M時鐘數(shù)據(jù)
  7.                 while (--i);
  8.         }
  9. }
復制代碼

評分

參與人數(shù) 1黑幣 +5 收起 理由
jjy1039 + 5 很給力!很認真,我第一次看的時候忽略了,.

查看全部評分

回復

使用道具 舉報

地板
ID:1109793 發(fā)表于 2024-12-13 13:14 | 只看該作者
板凳說的對,局部變量只初始化一次,所以只在調(diào)用時=198;之后都是0,--i就是255了。在循環(huán)內(nèi)部I = 198;就OK了。
回復

使用道具 舉報

5#
ID:1139662 發(fā)表于 2024-12-13 14:58 來自手機 | 只看該作者
1.循環(huán)變量初始化位置:在delay_50us函數(shù)中,變量i的初始化應(yīng)該放在內(nèi)層while循環(huán)的內(nèi)部,以確保每次外層while循環(huán)時i都能被重新初始化。如果i只初始化一次,那么不論外層循環(huán)執(zhí)行多少次,i的值都不會改變,導致延時不變。正確的做法是將i = 198;放在內(nèi)層while循環(huán)內(nèi)部,如下所示: void delay_50us(uchar us50){     //@12.000MHz     uchar  i;     while(us50--){         i = 198; // i=198:STC軟件中查到的12M時鐘數(shù)據(jù)         while (--i);     } } 這樣
回復

使用道具 舉報

6#
ID:1139664 發(fā)表于 2024-12-13 17:08 | 只看該作者
是不是太快了你沒看出來啊
回復

使用道具 舉報

7#
ID:483407 發(fā)表于 2024-12-19 11:40 | 只看該作者
論壇里有經(jīng)驗的高手很多呀,感謝2、3、4、5、6樓的各位。仔細看了一下代碼,確實如各位所說。我還是經(jīng)驗缺
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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