找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1970|回复: 15
收起左侧

单片机中c语言的问题

  [复制链接]
ID:252072 发表于 2017-11-21 21:35 | 显示全部楼层 |阅读模式
#include <at89x52.h>
void DELAY()   //延时函数
{ unsigned char i,j;
    for(i=0;i<250;i++)
    {
        for(j=0;j<200;j++);
    }
}
void main() //程序从这里开始执行
{
while(1) //这句的作用就是反复的执行下面这个{}中包含的4句
    {
     P1_0=1;  //(1)熄灭灯
     DELAY(); //(2)延时一段时间
     P1_0=0;  //(3)点亮灯
     DELAY(); //(4)延时一段时间
    }
}


这一句把上面的i,for(i=0;i<250;i++)删掉改成
#include<reg51.h>
sbit P1_0=P1^0;
void DELAY()   //延时函数
{ unsigned char i;
    for(i=0;i<250;i++)
   
}
void main() //程序从这里开始执行
{
while(1) //这句的作用就是反复的执行下面这个{}中包含的4句
    {
     P1_0=1;  //(1)熄灭灯
     DELAY(); //(2)延时一段时间
     P1_0=0;  //(3)点亮灯
     DELAY(); //(4)延时一段时间
    }
}为什么错误 新手
回复

使用道具 举报

ID:137239 发表于 2017-11-21 22:39 | 显示全部楼层
延时时间短了,可以改为:
void DELAY()  //延时500ms
{
    unsigned char a,b,c;
    for(c=122;c>0;c--)
        for(b=222;b>0;b--)
            for(a=7;a>0;a--);
}

回复

使用道具 举报

ID:231632 发表于 2017-11-22 00:26 | 显示全部楼层
是因为你的循环语句没有分号,你的for循环下面没有执行语句时,用for(i=0;i<250;i++);
回复

使用道具 举报

ID:231632 发表于 2017-11-22 00:27 | 显示全部楼层
void DELAY()   //延时函数 { unsigned char i;     for(i=0;i<250;i++) ;     }是因为你的循环语句没有加分号,你的for循环下面没有执行语句时,用for(i=0;i<250;i++);
回复

使用道具 举报

ID:193818 发表于 2017-11-22 09:00 | 显示全部楼层
  for(i=0;i<250;i++)   加个;
回复

使用道具 举报

ID:251442 发表于 2017-11-22 11:08 | 显示全部楼层
你试试再循环语句那改一下
回复

使用道具 举报

ID:252134 发表于 2017-11-22 13:56 | 显示全部楼层
人眼的视觉暂留时间是1/24秒,只要小于这个时间,看到的就是连续闪动,也就跟没闪一样
回复

使用道具 举报

ID:251914 发表于 2017-11-22 14:57 | 显示全部楼层
应该是你循环的那个函数延时太短。在视觉上应该是有暂留
回复

使用道具 举报

ID:212797 发表于 2017-11-22 16:43 | 显示全部楼层
void DELAY()   //延时函数
{ unsigned char i;
    for(i=0;i<250;i++)
}
for后面少了分号,加在for后面或者下面都行。
回复

使用道具 举报

ID:252230 发表于 2017-11-22 17:06 | 显示全部楼层
void DELAY()   //延时函数错了
回复

使用道具 举报

ID:247257 发表于 2017-11-22 17:21 | 显示全部楼层
延时函数太短了,肉眼看就跟没闪一样
回复

使用道具 举报

ID:252375 发表于 2017-11-22 18:30 | 显示全部楼层
延时程序太短,,修改的延时程序后面未加;  还有多补充一点 unsigned char i  数据类型是  8位数也就是2的8次方 256.所以你的 i 不能超过256.
回复

使用道具 举报

ID:252387 发表于 2017-11-22 19:24 | 显示全部楼层
用的应该是c++
做单片机如果想要有创新,编程要学好
回复

使用道具 举报

ID:252430 发表于 2017-11-22 20:41 来自手机 | 显示全部楼层
延时太短啦
回复

使用道具 举报

ID:191408 发表于 2017-11-22 21:02 | 显示全部楼层
for(i=0;i<250;i++) 这个后面要有执行语句的,后面加这个{;}就可以了
回复

使用道具 举报

ID:252459 发表于 2017-11-22 21:40 | 显示全部楼层
少一个“”“;”还有延时时间太短,只会看到led的一种状态
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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