计算机小混子 2022-08-19 10:59 采纳率: 100%
浏览 46
已结题

这个延时如何实现延时1秒的

这个延时如何实现延时1秒的


#include <REGX52.H>
#define uint unsigned int 
sbit led1 = P2^0;//声明单片机的第一位
uint i,j;
void main()
{
    while(1)
    {
        led1=0;//点亮第一个LED
        for(i = 1000;i>0;i--)//延时
            for(j = 110;j>0;j--);
                led1 = 1;
        for(i = 1000;i>0;i--)//延时
            for(j = 110;j>0;j--);
    }

}
  • 写回答

4条回答 默认 最新

  • 於黾 2022-08-19 11:16
    关注

    for(i = 1000;i>0;i--)//延时
    for(j = 110;j>0;j--);
    这个双重for循环一共执行了1000*110=110000次
    也就是耗费了110000个时钟周期
    那么它乘以你单片机的主频就是耗费的时间
    单片机主频不同,你延时的次数肯定也不同
    之所以要套两层,而不直接写一个for(int i=0;i<110000;i++)
    是因为内层已经整定好了,循环110次刚好1ms,外层1000次就是1秒,这样比较容易修改参数,而不用每次都去拿主频计算

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月27日
  • 已采纳回答 8月19日
  • 创建了问题 8月19日