找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6748|回复: 11
收起左侧

单片机程序中有什么好办法取代delay延时?

  [复制链接]
ID:168971 发表于 2018-6-10 15:00 来自手机 | 显示全部楼层 |阅读模式
在单片机的编程中 有什么好办法取代delay延时?不用中断,麻烦大神给写个例子,,,学习一下
回复

使用道具 举报

ID:329253 发表于 2018-6-10 17:02 来自手机 | 显示全部楼层
定时器,用定时器或单片机小精灵
回复

使用道具 举报

ID:348896 发表于 2018-6-10 18:12 | 显示全部楼层
延时就是让cpu做无用功 根据需要延时的时间 长的还是delay好用 短的us级就 _nop_(); i++; while(i--);等等。总之能达到目的就行。
回复

使用道具 举报

ID:123289 发表于 2018-6-10 18:54 | 显示全部楼层
等你革新单片机
回复

使用道具 举报

ID:331575 发表于 2018-6-10 19:55 | 显示全部楼层
可以用定时器中断,在中断函数中不断扫面你按键状态的变化,希望可以给你思路

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:348994 发表于 2018-6-10 20:20 | 显示全部楼层

定时器,用定时器或单片机小精灵
回复

使用道具 举报

ID:323774 发表于 2018-6-10 22:45 | 显示全部楼层
使用非阻塞的方式编写代码,逻辑比较麻烦点。
回复

使用道具 举报

ID:349102 发表于 2018-6-10 23:13 来自手机 | 显示全部楼层
调用_nop_()空函数,但要添加#include "intrins.h" 头文件
回复

使用道具 举报

ID:213173 发表于 2018-6-11 06:46 | 显示全部楼层
用计数法延时,示例如下,闪烁灯。
#include <AT89X52.H>
sbit LED=P1^0;
unsigned int count;

void main()                                                       
{
        LED=0;
        while(1)
        {
                count++;
                if(count>=30000)
                {
                        count=0;
                        LED=~LED;
                }
        }
}
回复

使用道具 举报

ID:341778 发表于 2018-6-11 15:23 | 显示全部楼层
简单应用定时器
回复

使用道具 举报

ID:217829 发表于 2018-6-11 20:24 | 显示全部楼层
定义静态变量,用计数的方式,好过延时死等
回复

使用道具 举报

ID:350035 发表于 2018-6-12 10:03 | 显示全部楼层
用定时器+软件计数器
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表