标题:
单片机延时程序 我咋看不出怎么自适应时钟呢?用22M和11M明显不同嘛
[打印本页]
作者:
大IGBT
时间:
2023-2-24 15:51
标题:
单片机延时程序 我咋看不出怎么自适应时钟呢?用22M和11M明显不同嘛
/*---------------------------------------------------------------------*/
/* --- STC MCU International Limited ----------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了宏晶科技的资料及程序 */
/*---------------------------------------------------------------------*/
/************* 功能说明 **************
本文件为STC15xxx系列的延时程序,用户几乎可以不修改这个程序.
******************************************/
#include "delay.h"
//========================================================================
// 函数: void delay_ms(unsigned char ms)
// 描述: 延时函数。
// 参数: ms,要延时的ms数, 这里只支持1~255ms. 自动适应主时钟.
// 返回: 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);
}
作者:
蓝魄
时间:
2023-2-24 17:46
自适应时钟就是不同的MAIN_Fosc定义的频率不同,然后通过/13000计算得到不同的延时值
作者:
coody_sz
时间:
2023-2-24 18:46
MAIN_Fosc定义成22M或11M,会有2倍的差别的。
作者:
xuyaqi
时间:
2023-2-24 19:44
i = MAIN_Fosc / 13000;时钟高,i就大,循环次数多;反之,时钟低,i就小,循环次数少;
作者:
405616736
时间:
2023-2-24 20:52
MAIN_Fosc会变化的,需要你去设置
作者:
13423265909
时间:
2023-2-24 22:17
MAIN_Fosc是一直都改变的,你可以自己去具体定义一下
作者:
a399288395
时间:
2023-2-25 00:06
这个MAIN_Fosc 在程序前面肯定有宏定义
举例比如:
//5us 延时函数,自动适应主时钟
#define MAIN_Fosc 11059200UL //定义主时钟HZ
void delay5us()
{
#if MAIN_Fosc == 11059200
_nop_();
#elif MAIN_Fosc == 12000000
_nop_();
#elif MAIN_Fosc == 22118400
_nop_(); _nop_(); _nop_();
#elif
}
作者:
wwh2382
时间:
2023-2-25 21:43
需要在下载时设置与MAIN_Fosc对应的mcu频率
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1