利用逻辑分析仪测定单片机延时函数时间

STC15W408AS较精准的延时函数


✨说明:参考使用STC-ISP工具计算得来。

  • 注意选择STC-Y5指令集的。
  • 🍁以STC15W408AS为对象,进行测定。

  • 🌿STC-ISP工具生成的软件延时500ms

void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 22;
	j = 3;
	k = 227;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


  • 🌿延时函数,
void delay_ms(unsigned int n)
{
unsigned int i,j;
for(i=n;i>0;i--)
for(j=120;j>0;j--);
}

🌼测试500ms延时

  • 🌿这里使用STC15W408AS单片机型号,内部晶振11.0592MHz。
//STC15W408AS,512字节的RAM,8K FLASH
#include <STC15F2K60S2.H>
#include "intrins.h"

void delay_ms(unsigned int n);
//char *_uitoa(unsigned int num, char *str);//整数转字符串
//int unsignedstrtoint(char *str);     //开头不带正负号的字符串转整型

void main()
{
	    P1M0 = 0x00; P1M1 = 0x00; 

    while (1)
    {
			 P17 = 0x01;
			delay_ms(3273);
			P17 = 0x00;
			delay_ms(3273);
			
    }

}

//延时n毫秒
void delay_ms(unsigned int n)
{
    unsigned int i = 0, j = 0;
    for (i = 0; i < n; i++)
        for (j = 0; j < 120; j++);
}

  • 🔧逻辑分析仪测量
    在这里插入图片描述

🌻利用STC-ISP工具自动生成500ms延时测定

    • stc-isp软件延时500ms
      在这里插入图片描述
  • 📝程序代码

#include <STC15F2K60S2.H>
#include "intrins.h"
void Delay500ms();
void main()
{
	    P1M0 = 0x00; P1M1 = 0x00; 
    while (1)
    {
			 P17 = 0x01;
			Delay500ms();
//			delay_ms(3273);//76.4,
			P17 = 0x00;
//			delay_ms(3273);
			Delay500ms();
			
    }

}

void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 22;
	j = 3;
	k = 227;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
  • 🔨逻辑分析仪测量
    在这里插入图片描述

可以发现只有约497ms。使用STC-ISP工具自动计算的时间还是有一定的误差。

  • 🛠手动调整设定Delay500ms()如下,才达到十分接近的500ms延时时间
void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 22;
	j = 36;
	k = 227;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值