怎么计算下面这个程序延时子程序的时间?(刚学单片机,请高手指教)

/*功能:毫秒延时函数参数:晶振为11.0592MHz时,x为ms数,x=1000为1秒*/voiddelayms(unsignedintx){unsignedcharj... /*
功能:毫秒延时函数
参数:晶振为11.0592MHz时,x为ms数,x=1000为1秒
*/
void delayms(unsigned int x)
{
unsigned char j;
while(x--)
{
for(j=0;j<123;j++){;}
}
}
展开
 我来答
屈十八一剪辑视频教学
2011-03-29 · TA获得超过370个赞
知道答主
回答量:63
采纳率:100%
帮助的人:30.8万
展开全部
晶振之所以大多选11.0592是为了在通讯时便于定时器波特率发生器的值的设置,因为晶振的周期约为1/12us,则机器周期为1us,这样一来为整数,而单片机在执行一条操作时(一条语句)在3种可能,可能需要花掉1个机器周期,也可能花掉2个机器周期,还有可能花掉4个机器周期,也就是说执行一条语句最多花4微秒,最少花1微秒,至于究竟花多少时间要看语句的复杂程度,你这里一条空语句大概为1微秒,而J++大概也就4微秒,,判断也就是4微秒左右,循环一次大约为9微秒,
所以若循环123大约为1毫秒,这是软件延时只能大约估算,不很精确的要想准还得要定时器,
用软件延时的原理就是让cpu一直执行空语句等到了时间后才执行要执行的语句从而达到延时的目的
而用定时器延时原理是让定时器计时到达时间后通知cpu去执行要执行的语句,在这期间间cpu可以执行其他语句
当然软件延时也可以达到准确的条件,比如说你这个延时函数肯定是人家用软件去调试的调到在1微秒,他自己不是去算的
意法半导体(中国)投资有限公司
2023-06-12 广告
要入门STM32单片机,可以按照以下步骤进行学习:1. 首先学习51单片机,了解其基本结构和特点。2. 学习STM32的内部架构,了解其核心部件如何与外设连接。3. 学习STM32的寄存器和总线结构,理解如何使用寄存器来控制外设。4. 编写... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式