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

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

QQ登錄

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

搜索

stc8h單片機(jī)的延時(shí)為什么不準(zhǔn)?

查看數(shù): 1182 | 評(píng)論數(shù): 18 | 收藏 0
關(guān)燈 | 提示:支持鍵盤(pán)翻頁(yè)<-左 右->
    組圖打開(kāi)中,請(qǐng)稍候......
發(fā)布時(shí)間: 2025-4-21 17:39

正文摘要:

使用的是stc8h8k64u單片機(jī),需要延時(shí)3秒,代碼由stc-isp生成,延時(shí)程序名Delay3000ms(), 在keil調(diào)試,顯示的卻是54秒,(見(jiàn)圖)。 程序下載運(yùn)行,實(shí)測(cè)是4.5秒,相差太大了。 為什么keil調(diào)試顯示是54?我 ...

回復(fù)

ID:595237 發(fā)表于 2025-4-25 12:02
晶振11.0592MHz請(qǐng)參考,自己調(diào)試一下

#include <intrins.h>

void Delay3000ms() {
    unsigned int i, j;
   
    for (i = 0; i < 628; i++) {       // 外層循環(huán)628次
        for (j = 0; j < 0x2A4; j++) { // 內(nèi)層循環(huán)0x2A4(十進(jìn)制676)次
            _nop_();                  // 每個(gè)空指令占用1個(gè)時(shí)鐘周期
        }
    }
}




// 或使用更精確的定時(shí)器方法(推薦)
void Delay3000ms() {
    TMOD &= 0xF0;    // 設(shè)置定時(shí)器模式:T1為16位定時(shí)器模式
    TMOD |= 0x10;
    TH1 = 0xDC;      // 初始化定時(shí)值(11.0592MHz下,定時(shí)50ms)
    TL1 = 0x00;
   
    ET1 = 0;         // 禁用定時(shí)器中斷
    TR1 = 1;         // 啟動(dòng)定時(shí)器
   
    for (unsigned int count = 0; count < 60; count++) { // 60*50ms=3000ms
        while (!TF1);  // 等待定時(shí)器溢出
        TF1 = 0;       // 清除溢出標(biāo)志
        TH1 = 0xDC;    // 重載初值
        TL1 = 0x00;
    }
   
    TR1 = 0;         // 停止定時(shí)器
}

晶振12MHz

void Delay3000ms() //@12.000MHz
{
    unsigned char i, j, k;
   
    i = 224;
    do {
        j = 200;
        do {
            k = 200;
            do {
                // 空循環(huán),由k--操作實(shí)現(xiàn)
            } while (--k);
        } while (--j);
    } while (--i);
}
ID:108361 發(fā)表于 2025-4-25 10:07
ziyueboy 發(fā)表于 2025-4-24 22:35
程序中不要用delay1ms(XXX),初始化可以用倒無(wú)所謂!要么定時(shí)器開(kāi)滴答做系統(tǒng)時(shí)間分片基準(zhǔn),要么定時(shí)器中做 ...

還在用89C52芯片的人,還談啥非阻塞啊,RTOS啊
ID:292876 發(fā)表于 2025-4-24 22:35
程序中不要用delay1ms(XXX),初始化可以用倒無(wú)所謂!要么定時(shí)器開(kāi)滴答做系統(tǒng)時(shí)間分片基準(zhǔn),要么定時(shí)器中做個(gè)時(shí)間基準(zhǔn)。多任務(wù)分時(shí)執(zhí)行時(shí)候,或RTOS時(shí)候,用delay1ms(XXX)都會(huì)出很多莫名其妙的問(wèn)題,特別模擬SPI,I2C等通訊,要做好delay1ms(XXX)規(guī)劃,能用硬SPI,I2C等外設(shè),最好不要用模擬,出問(wèn)題不好找出問(wèn)題點(diǎn)啦!除非你能把握每一處細(xì)節(jié),做到入微,那么用倒無(wú)所謂。目前MCU項(xiàng)目都做多任務(wù)的,delay1ms(XXX)能不用盡量別用,養(yǎng)好習(xí)慣
ID:1042619 發(fā)表于 2025-4-24 14:20
89系列太古老了,建議直接用Ai8051U,USB 型 1T 8051,支持32位和8位指令集, RMB2.3,支持硬件USB下載 硬件USB仿真
管腳兼容天王級(jí)別的:  89C52RC,  12C5A60S2
要兼容 8位8051指令集,  可以用 Keil C51/IAR/SDCC 編譯器
===就相當(dāng)于更強(qiáng)大的 8H8K64U
要兼容 32位8051指令集,可以用 Keil C251 編譯器,雙核兼容設(shè)計(jì)
===就相當(dāng)于更強(qiáng)大的 32G12K128, 32G8K64
34K SRAM(2K edata, 32K xdata), 64K Flash
TFPU@120MHz, 硬件浮點(diǎn)/硬件三角函數(shù) 運(yùn)算器
DMA支持PWM, DMA支持外設(shè)直接到外設(shè), P2P
120MHz-PWM支持硬件移相,16位PWM; 真12位ADC
USB, 4組串口,12位ADC, 軌到軌比較器
QSPI, SPI, I2S, I2C,  TFT-i8080/M6800 接口
PDIP40,LQFP44,LQFP44




ID:1042619 發(fā)表于 2025-4-24 14:17
必須直接設(shè)置3000ms,不能1ms 3000次,否則會(huì)累積3000個(gè)誤差


8b0381a8b59509b5b4f04d4351c8576.jpg (62.39 KB, 下載次數(shù): 0)

8b0381a8b59509b5b4f04d4351c8576.jpg
ID:134430 發(fā)表于 2025-4-23 17:43
謝謝大家!繼續(xù)學(xué)習(xí)。
ID:1057978 發(fā)表于 2025-4-23 10:01
你還是用stc89吧,老老實(shí)實(shí)呆在舒適區(qū),8h太新了,不適合你
ID:401564 發(fā)表于 2025-4-23 09:19
wh8010jky 發(fā)表于 2025-4-22 17:04
首先感謝大家的回復(fù)指點(diǎn)!

我又進(jìn)行了測(cè)試,情況如下:

為什么對(duì)仿真這么執(zhí)著呢?
程序最終是要用來(lái)運(yùn)行的,不是用來(lái)仿真的
設(shè)置一個(gè)u8全局變量,開(kāi)啟一個(gè)定時(shí)器中斷,在中斷對(duì)這個(gè)變量進(jìn)行++運(yùn)算,然后在所有函數(shù)中都可以通過(guò)讀取這個(gè)變量來(lái)進(jìn)行延時(shí)之類(lèi)的時(shí)間操作
不推薦用上古時(shí)期的8051了,功能少,燒錄不方便,片上資源少,運(yùn)行速度慢,價(jià)格又高,資料也少,出了問(wèn)題找不到相關(guān)資料,這都完美的避開(kāi)了STC的所有優(yōu)點(diǎn)
ID:1034262 發(fā)表于 2025-4-22 21:13
軟仿真吧?那是12T模式的老51的時(shí)間。STC51大部分指令都1T的了。
ID:879348 發(fā)表于 2025-4-22 13:27
ms級(jí)以上延時(shí),開(kāi)一個(gè)定時(shí)器才能準(zhǔn)確,因?yàn)椴煌幾g會(huì)產(chǎn)生不同效果,改一點(diǎn)代碼又會(huì)改變
ID:230500 發(fā)表于 2025-4-22 08:11
阻塞延時(shí)我很少用, 一般只用幾個(gè)nop 延時(shí);正常使用都是用定時(shí)器,   所以你這個(gè)情況沒(méi)有試過(guò)也沒(méi)有碰到過(guò),   但是分析一下 主要是 編譯器不能識(shí)別是1T還是12T, 默認(rèn)都是以12T在模擬運(yùn)行, 所以54/12=4.5秒 就是正常的; 另外4.5秒與軟件設(shè)置的3秒有誤差, 這個(gè)可能就是軟件延時(shí)本身的誤差, 或者程序中還有其他的地方影響到了延時(shí); 比如定時(shí)器等等。  可以試試注釋掉其他的所有函數(shù),主程序就只寫(xiě)個(gè)延時(shí)點(diǎn)燈的測(cè)試下。
ID:654797 發(fā)表于 2025-4-22 07:19
指命的延時(shí)都不一樣
ID:1133081 發(fā)表于 2025-4-21 20:49

ID:584814 發(fā)表于 2025-4-21 19:55
降低stc8h的速度至stc89c52一樣,這時(shí)你會(huì)發(fā)現(xiàn)又比較準(zhǔn)了。
還有個(gè)辦法就是外接晶振,加用示波器一類(lèi)的輔助調(diào)節(jié)。
ID:1085441 發(fā)表于 2025-4-21 18:13
現(xiàn)在單片機(jī)都是1T的,還有中斷等影響,我一般都是用示波器實(shí)測(cè)調(diào)整。
ID:401564 發(fā)表于 2025-4-21 18:09
超過(guò)1mS的延時(shí),正常來(lái)說(shuō)都是要用定時(shí)器或者PCA計(jì)數(shù)器來(lái)延時(shí)的,而不是讓程序死等,雖然說(shuō)你程序可能 很簡(jiǎn)單,不需要什么效率,但是,一個(gè)良好的編程習(xí)慣還是要有的
Keil是傳統(tǒng)8051指令,跟STC的指令是不同的,除非你用硬件在線仿真
ID:468878 發(fā)表于 2025-4-21 18:07
用STC的ISP軟件直接生成延時(shí)試試。STC是有1T的模式,也有12T模式,會(huì)影響延時(shí)。Atmel的都是12T的。

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 美女福利网站 | 亚洲人成在线播放 | 99精品久久久 | 日韩精品一二三 | 成人欧美日韩一区二区三区 | 欧美日韩亚洲国产综合 | 午夜在线观看免费 | 日韩手机在线视频 | 日本a∨精品中文字幕在线 亚洲91视频 | 国产精品一二三区 | 免费一区二区三区 | 免费观看www | 天天综合永久入口 | 一级看片免费视频 | 国产精品99久久久久久www | 丝袜美腿一区二区三区 | 日韩精品免费在线观看 | av一级毛片| 国产精品乱码一区二区三区 | 国产在线一区二区三区 | 日韩 欧美 综合 | 91久久综合亚洲鲁鲁五月天 | 九色国产 | 日韩中文在线观看 | 成人午夜在线观看 | 久久久久国产一级毛片高清网站 | 亚洲视频国产视频 | 免费三级av| 午夜精品一区二区三区在线观看 | 亚洲国产精品视频一区 | 桃花av在线| 91不卡| 男人午夜视频 | 九九在线视频 | 中文字幕亚洲视频 | 亚洲国产一区二区三区 | 91免费福利在线 | 日本中出视频 | 亚欧精品 | 久久久精彩视频 | 中日韩欧美一级片 |