计算机小混子 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日

悬赏问题

  • ¥15 C++识别堆叠物体异常
  • ¥15 音量自动减小啦!日历自动翻页
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 有人知道怎么在R语言里下载Git上的miceco这个包吗
  • ¥15 GPT写作提示指令词
  • ¥20 如何在cst中建立这种螺旋扇叶结构
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥20 关于DAC输出1.000V对分辨率和精度的要求
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?