找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1873|回复: 19
收起左侧

怎么让LED灯发生闪烁,这个单片机程序是哪里错了?

  [复制链接]
ID:665608 发表于 2020-1-22 20:13 | 显示全部楼层 |阅读模式
#include<reg51.h>

sbit led=P2^1;

typedef unsigned char  u8;
void delay( u8 i)
{
        while(i--);
}

void main()
{
        while(1)
                {
                led=0;
                delay(5000);
                led=1;
                delay(5000)        ;
                }
}

回复

使用道具 举报

ID:213173 发表于 2020-1-23 06:35 | 显示全部楼层
u8是8位数据类型,最大255,delay(5000);代入的参数溢出后实际只有154,达不到预想的延时时间。
回复

使用道具 举报

ID:94031 发表于 2020-1-23 10:13 | 显示全部楼层
注意 u8 i 最大256,你不可能让它等于5000,u8改为u16.
回复

使用道具 举报

ID:665608 发表于 2020-1-23 10:15 | 显示全部楼层
wulin 发表于 2020-1-23 06:35
u8是8位数据类型,最大255,delay(5000);代入的参数溢出后实际只有154,达不到预想的延时时间。

谢谢
回复

使用道具 举报

ID:687958 发表于 2020-1-23 10:59 | 显示全部楼层
这样达不到预想的延时时间。u8是8位数据类型;代入的参数溢出后实际只有154,
回复

使用道具 举报

ID:93224 发表于 2020-1-23 11:14 | 显示全部楼层
建议你把C语言好好学习下
回复

使用道具 举报

ID:665608 发表于 2020-1-23 11:20 | 显示全部楼层
wulin 发表于 2020-1-23 06:35
u8是8位数据类型,最大255,delay(5000);代入的参数溢出后实际只有154,达不到预想的延时时间。

那应该设多少数值?
回复

使用道具 举报

ID:235200 发表于 2020-1-23 14:17 | 显示全部楼层
108880802 发表于 2020-1-23 11:20
那应该设多少数值?

60000约0.5秒
回复

使用道具 举报

ID:462827 发表于 2020-1-23 18:11 | 显示全部楼层
typedef unsigned char  u8;
在这行后面再加一行:
typedef unsigned int  u16;

然后把delay()里的 u8 i 改成 u16 i
回复

使用道具 举报

ID:294296 发表于 2020-1-24 01:17 | 显示全部楼层
uchar的范围是0~255,uint的范围是0~65535,你的延时数值超了.
回复

使用道具 举报

ID:688045 发表于 2020-1-24 02:34 | 显示全部楼层
u8不太够吧
回复

使用道具 举报

ID:688145 发表于 2020-1-25 19:20 | 显示全部楼层
我记得delay函数大部分用的是u8,你的5000超过了。
回复

使用道具 举报

ID:420836 发表于 2020-1-26 07:39 | 显示全部楼层
u8的范围只是0~255, delay函数用5000超过了u8的范围;
u8改为u16;
回复

使用道具 举报

ID:688258 发表于 2020-1-26 22:40 | 显示全部楼层
u8没有意义 直接unsigned char 之后延时取反就好
回复

使用道具 举报

ID:688258 发表于 2020-1-26 22:40 | 显示全部楼层
u8没有意义 直接unsigned char 之后利用for语句延时取反就好
回复

使用道具 举报

ID:665608 发表于 2020-1-28 19:22 | 显示全部楼层
miss匚you 发表于 2020-1-26 22:40
u8没有意义 直接unsigned char 之后利用for语句延时取反就好

怎么用for语句延时
回复

使用道具 举报

ID:688717 发表于 2020-1-30 09:47 | 显示全部楼层
改为typedef   unsigned  int  u16
后面改为delay(50000)
回复

使用道具 举报

ID:689654 发表于 2020-2-3 12:51 | 显示全部楼层
把typedef unsigned char u8中的unsigned char改成unsigned int就行了
回复

使用道具 举报

ID:207589 发表于 2020-2-5 00:10 | 显示全部楼层
直接把 char  改成 int
回复

使用道具 举报

ID:679425 发表于 2020-2-5 10:55 | 显示全部楼层
延时数值超
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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