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

QQ登錄

只需一步,快速開始

搜索
查看: 2358|回復(fù): 7
收起左側(cè)

單片機(jī)延時(shí)程序 我咋看不出怎么自適應(yīng)時(shí)鐘呢?用22M和11M明顯不同嘛

[復(fù)制鏈接]
ID:1006638 發(fā)表于 2023-2-24 15:51 | 顯示全部樓層 |閱讀模式
/*---------------------------------------------------------------------*/
/* --- STC MCU International Limited ----------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* 如果要在程序中使用此代碼,請(qǐng)?jiān)诔绦蛑凶⒚魇褂昧撕昃Э萍嫉馁Y料及程序   */
/*---------------------------------------------------------------------*/


/*************        功能說明        **************

本文件為STC15xxx系列的延時(shí)程序,用戶幾乎可以不修改這個(gè)程序.

******************************************/

#include        "delay.h"



//========================================================================
// 函數(shù): void  delay_ms(unsigned char ms)
// 描述: 延時(shí)函數(shù)。
// 參數(shù): ms,要延時(shí)的ms數(shù), 這里只支持1~255ms. 自動(dòng)適應(yīng)主時(shí)鐘.
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 備注:
//========================================================================
void  delay_ms(unsigned char ms)
{
     unsigned int i;
         do{
              i = MAIN_Fosc / 13000;
                  while(--i)        ;   //14T per loop
     }while(--ms);
}


回復(fù)

使用道具 舉報(bào)

ID:86926 發(fā)表于 2023-2-24 17:46 | 顯示全部樓層
自適應(yīng)時(shí)鐘就是不同的MAIN_Fosc定義的頻率不同,然后通過/13000計(jì)算得到不同的延時(shí)值
回復(fù)

使用道具 舉報(bào)

ID:1034262 發(fā)表于 2023-2-24 18:46 | 顯示全部樓層
MAIN_Fosc定義成22M或11M,會(huì)有2倍的差別的。
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2023-2-24 19:44 | 顯示全部樓層
i = MAIN_Fosc / 13000;時(shí)鐘高,i就大,循環(huán)次數(shù)多;反之,時(shí)鐘低,i就小,循環(huán)次數(shù)少;
回復(fù)

使用道具 舉報(bào)

ID:579397 發(fā)表于 2023-2-24 20:52 | 顯示全部樓層
MAIN_Fosc會(huì)變化的,需要你去設(shè)置
回復(fù)

使用道具 舉報(bào)

ID:1061331 發(fā)表于 2023-2-24 22:17 | 顯示全部樓層
MAIN_Fosc是一直都改變的,你可以自己去具體定義一下
回復(fù)

使用道具 舉報(bào)

ID:230500 發(fā)表于 2023-2-25 00:06 | 顯示全部樓層
這個(gè)MAIN_Fosc   在程序前面肯定有宏定義
舉例比如:
//5us 延時(shí)函數(shù),自動(dòng)適應(yīng)主時(shí)鐘
#define MAIN_Fosc        11059200UL    //定義主時(shí)鐘HZ


void delay5us()
{
    #if MAIN_Fosc == 11059200
        _nop_();
    #elif MAIN_Fosc == 12000000
        _nop_();
    #elif MAIN_Fosc == 22118400
        _nop_(); _nop_(); _nop_();
    #elif
}
回復(fù)

使用道具 舉報(bào)

ID:748788 發(fā)表于 2023-2-25 21:43 | 顯示全部樓層
需要在下載時(shí)設(shè)置與MAIN_Fosc對(duì)應(yīng)的mcu頻率
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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