求助:单片机编程 点击:1240 | 回复:19



猎隼

    
  • 精华:1帖
  • 求助:1帖
  • 帖子:151帖 | 1661回
  • 年度积分:0
  • 历史总积分:8983
  • 注册:2005年9月28日
发表于:2005-10-06 11:13:00
楼主
我是一个51单片机初学者,我在练习编程的时候有一些问题不知是何原因,请大家帮忙解释一下,我用的是KEIL软件,其中部分内容如下: #include<at89x51.h> #include<stdio.h> .... unsigend int a; void main() { while(a=0;a<50000;a++); P0_0=1; while(a=0;a<50000;a++); P0_0=0; } 我希望我的这个程序只让P0_0反复动作一次,但却往复动作,我考虑我在主函数当中没有其它的循环语句,不应该有这个现象百思,不得其解。



周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2005-10-06 17:46:00
1楼
在程序末尾加一个死循环

wcb327

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 5回
  • 年度积分:0
  • 历史总积分:14
  • 注册:2005年9月23日
发表于:2005-10-10 10:16:00
2楼
主程序是循环执行的

IORY

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2005年10月29日
发表于:2005-10-29 22:19:00
3楼
写成这样:(另:请楼主以后写程序的时候严谨一点,"unsigend int a;"是不对的,应该是:"unsigned int a;",还有:是"for(a=0;a<50000;a++)"而不是"while(a=0;a<50000;a++)"
#include
#include
  ....
  unsigned int a;
  void main()
  {
   while(1)
     {
      for(a=0;a<50000;a++)
    P0_0=1;
    for(a=0;a<50000;a++)
    P0_0=0;
   }
    }

亦云人云

  • 精华:5帖
  • 求助:0帖
  • 帖子:102帖 | 2351回
  • 年度积分:0
  • 历史总积分:3114
  • 注册:2004年11月10日
发表于:2005-10-29 23:16:00
4楼
这样的小例子,前后两个程序对照,在加上[color=#FF0000]周工[/color]和[color=#FF0000]wcb327[/color]的提示,非常圆满,我想应该列入[color=#FF0000]精华[/color]。

IORY

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2005年10月29日
发表于:2005-10-30 22:15:00
5楼
不是吧?!这也能列入精华?!其实,MAIN函数里面还可以写成这样:

void main()
  {
   unsigned int a=0;
     while(1)
     {
      for(;a<50000;a++)
    P0_0=1;
    for(;a>0;a--)
    P0_0=0;
   }
    }

这样,就可以在while的死循环里减少两次对a赋0值,程序可以精简一点.

nRFxx

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 7回
  • 年度积分:0
  • 历史总积分:18
  • 注册:2004年1月03日
发表于:2005-10-31 23:21:00
6楼
unsigned int a;
  void main()
  {
   while(1)
     {
      for(a=0;a<50000;a++)
    P0_0=1;
    for(a=0;a<50000;a++)
    P0_0=0;
   }
    }

motronking

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 86回
  • 年度积分:0
  • 历史总积分:113
  • 注册:2005年4月06日
发表于:2005-11-09 22:22:00
7楼
如用中断:
sbit P0_0=P0^0;

void time()interrupt 2 using 2
{
P0_0=!P0_0;
TH0=...
TL0=...//由你需要的时间间隔(P0_0=!P0_0)
}

void main()
{
TMOD=0x01;
P0_0=0;
TH0=...
TL0=...//同上面的
EA=1;
ET0=1;
TR0=1;

for(;;){}//无限循环,P0_0反复动作
}

motronking

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 86回
  • 年度积分:0
  • 历史总积分:113
  • 注册:2005年4月06日
发表于:2005-11-09 22:26:00
8楼
To:苍鹰
       
我是刚学单片机的,用C语言编程,以后可能需要您的帮助

motronking

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 86回
  • 年度积分:0
  • 历史总积分:113
  • 注册:2005年4月06日
发表于:2005-11-12 11:15:00
9楼
可能我上面的程序有不妥,不好意思,

猎隼

  • 精华:1帖
  • 求助:1帖
  • 帖子:151帖 | 1661回
  • 年度积分:0
  • 历史总积分:8983
  • 注册:2005年9月28日
发表于:2005-11-15 15:03:00
10楼
TO:老莫
我也学得不太好,对于编程来说还是一个初学者.
以后如果有问题我们一起研究.

motronking

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 86回
  • 年度积分:0
  • 历史总积分:113
  • 注册:2005年4月06日
发表于:2005-11-15 22:07:00
11楼
好啊

猎隼

  • 精华:1帖
  • 求助:1帖
  • 帖子:151帖 | 1661回
  • 年度积分:0
  • 历史总积分:8983
  • 注册:2005年9月28日
发表于:2005-11-17 16:28:00
12楼
TO:老莫
有问题再联系。

studaybo

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 34回
  • 年度积分:0
  • 历史总积分:49
  • 注册:2005年7月14日
发表于:2005-11-18 14:35:00
13楼
"希望的这个程序[color=#FF0000]只[/color]让P0_0反复动作一次,但却往复动作."

各位的回帖,都是往复运动。是不是理解错了。

 unsigned int a;
  void main()
  {
    for(a=0;a<50000;a++)
    P0_0=1;
    for(a=0;a<50000;a++)
    P0_0=0; 
    }

周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2005-11-20 00:04:00
14楼
还没好?
只让P0_0反复动作一次,应该是:
void main()
  {
    for(a=0;a<50000;a++)  //延时
    P0_0=1;               // P0_0为高
    for(a=0;a<50000;a++)  //延时
    P0_0=0;              // P0_0为低
      while(1);            /* 加一个死循环*/
    }

龙虎

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 45回
  • 年度积分:0
  • 历史总积分:110
  • 注册:2005年9月02日
发表于:2005-11-20 01:09:00
15楼
怎么是C语言,能用汇编吗?

山水

  • 精华:4帖
  • 求助:0帖
  • 帖子:128帖 | 2238回
  • 年度积分:0
  • 历史总积分:3675
  • 注册:2004年1月06日
发表于:2005-11-20 01:18:00
16楼

我心依旧

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 3回
  • 年度积分:0
  • 历史总积分:89
  • 注册:2004年8月16日
发表于:2005-11-20 09:19:00
17楼
我想学习单片机,谁有KEIL软件,谢谢
bxqhk@163.com

studaybo

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 34回
  • 年度积分:0
  • 历史总积分:49
  • 注册:2005年7月14日
发表于:2005-11-21 12:55:00
18楼
经过周公的一改;
更加完善了;
   又学会了一招,那就是细心,多考虑,使之更加完善。

诸葛村夫

  • 精华:0帖
  • 求助:0帖
  • 帖子:71帖 | 278回
  • 年度积分:0
  • 历史总积分:479
  • 注册:2004年3月06日
发表于:2005-11-21 13:05:00
19楼
恩,开眼界

热门招聘
相关主题

官方公众号

智造工程师