找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3122|回复: 6
打印 上一主题 下一主题
收起左侧

这两个单片机程序为什么都是延时一秒,新学者求助

[复制链接]
跳转到指定楼层
楼主
第一个,,,,,,,,,,,,,,,,,
#include<reg52.h>
sbit led=P1∧0;
viod main()

while{
a=51000;
led=0;
while(a--);
a=51000;
while(a--);
led=1;
a=51000;
while(a--);
a=51000;
while(a--);





第二个,,,,,,,,,,,,,,
#include <reg52.h>
#define uint unsigned int
sbit led=P1∧0;
uint i,j;
void main()

while(1)

led=0;
for(i=1000;i>0;i--)
for(i=110;i>0;i--);
led=1;
for(i=1000;i>0;i--)
for(i=110;i>0;i--);



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:277987 发表于 2018-1-21 11:55 | 只看该作者
一个是while循环,一个是for循环,都是占用CPU来延时,表示结果的程序有很多种,选自己适合的就行,一般延时程序还是最简单的好,工程上一般都用定时器,不用delay,

评分

参与人数 1黑币 +5 收起 理由
shuyu + 5

查看全部评分

回复

使用道具 举报

板凳
ID:7485 发表于 2018-1-21 12:00 | 只看该作者
这么长的延时,还是用定时器吧。
回复

使用道具 举报

地板
ID:277999 发表于 2018-1-21 13:02 | 只看该作者
阿飞132 发表于 2018-1-21 11:55
一个是while循环,一个是for循环,都是占用CPU来延时,表示结果的程序有很多种,选自己适合的就行,一般延 ...

谢谢,定时器?用的是中断函数吗?
回复

使用道具 举报

5#
ID:255052 发表于 2018-1-22 13:13 | 只看该作者
师傅这样教的他就这样写了呗,感兴趣的话可以买的ws2818的LED灯珠来玩玩,你会对延时有更深的理解
回复

使用道具 举报

6#
ID:62355 发表于 2018-1-22 18:19 | 只看该作者
你这是LED 灯的 一秒延时是最基础的 就像代码中的   hello,word 一样
回复

使用道具 举报

7#
ID:155507 发表于 2018-1-22 19:14 | 只看该作者
C 语言延时方法


图1 是 C 语言编程常用的4种延时方法,其中两种非精确延时,两种精确一些的延时。for 语句和 while 语句都可以通过改变 i 的范围值来改变延时时间,但是 C 语言循环的执行时间都是不能通过程序看出来的。精确延时有两个方法,一个方法是用定时器来延时,这个方法会要详细介绍,定时器是单片机的一个重点。另外一个就是用库函数nop();,一个 NOP 的时间是一个机器周期的时间,这个也会要介绍。

非精确延时,只是在我们做一些比如小灯闪烁,流水灯等简单演示实验中使用,而实际项目开发过程中其实这种非精确延时用的很少。

Delay01.png (14.38 KB, 下载次数: 49)

图1

图1
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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