标题: 10个二极管的流水灯没反映 [打印本页]

作者: lushaoqian    时间: 2017-10-18 15:16
标题: 10个二极管的流水灯没反映
我连的10个二极管的流水灯

不过为啥没反映

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define unit unsigned int
void delay();
uchar aa,bb;

void main()
{  P1=aa,P2=bb;
   while(1)
   {  
   aa=0x80,
   bb=0x0;
   delay();

   aa=0x40,
   bb=0x0;
   delay();

   aa=0x20,
   bb=0x0;
   delay();

   aa=0x10,
   bb=0x0;
   delay();

   aa=0x8,
   bb=0x0;
   delay();

   aa=0x4,
   bb=0x0;
   delay();

   aa=0x2,
   bb=0x0;
   delay();

   aa=0x1,
   bb=0x0;
   delay();

   aa=0x0,
   bb=0x2;
   delay();

   aa=0x0,
   bb=0x1;
   delay();        
   }
}


void delay()            
{
    unit x,y;
    for(x=100;x<0;x--)
       for(y=200;y>0;y--);
}



作者: wulin    时间: 2017-10-18 16:52
你可以直接对P1、P2赋值操作,如 :P1=0x80;P2=0x0;或宏定义#define aa P1   #define bb P2,这时对aa、bb的操作就是对P1、P2的操作,不可以用两个变量代替P1、P2。
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define unit unsigned int
#define aa P1
#define bb P2
void delay();
//uchar aa,bb;

void main()
{//  P1=aa,P2=bb;
   while(1)
   {  
   aa=0x80;
   bb=0x0;
   delay();

   aa=0x40;
   bb=0x0;
   delay();

   aa=0x20;
   bb=0x0;
   delay();

   aa=0x10;
   bb=0x0;
   delay();

   aa=0x8;
   bb=0x0;
   delay();

   aa=0x4;
   bb=0x0;
   delay();

   aa=0x2;
   bb=0x0;
   delay();

   aa=0x1;
   bb=0x0;
   delay();

   aa=0x0;
   bb=0x2;
   delay();

   aa=0x0;
   bb=0x1;
   delay();        
   }
}


void delay()            
{
    unit x,y;
    for(x=100;x<0;x--)
       for(y=200;y>0;y--);
}


作者: liut_text    时间: 2017-10-18 17:13
P1,P2定义不是这样的
#define aa P1
#define bb P2
作者: 转角的距离    时间: 2017-10-18 19:44
先看仿真有没有问题,如果仿真一遍没有问题但是实际中不能正常工作,估计是因为过载之类的问题吧
作者: angmall    时间: 2017-10-18 20:24
aa,bb 赋值到P1,P2 , 不可以用两个变量代替P1、P2。

  1. #include<reg52.h>
  2. #include<intrins.h>

  3. #define uchar unsigned char
  4. #define unit unsigned int

  5. #define aa P1 // 宏定义
  6. #define bb P2 // 宏定义

  7. void delay();
  8. //uchar aa,bb;

  9. void main()
  10. {  //P1=aa,P2=bb;  // <--- 赋值到P1,P2,  P1,P2定义不是这样的, 不可以用两个变量代替P1、P2。
  11.         while(1)
  12.         {  
  13.                 aa=0x80,
  14.                 bb=0x0;
  15.                 delay();

  16.                 aa=0x40,
  17.                 bb=0x0;
  18.                 delay();

  19.                 aa=0x20,
  20.                 bb=0x0;
  21.                 delay();

  22.                 aa=0x10,
  23.                 bb=0x0;
  24.                 delay();

  25.                 aa=0x8,
  26.                 bb=0x0;
  27.                 delay();

  28.                 aa=0x4,
  29.                 bb=0x0;
  30.                 delay();

  31.                 aa=0x2,
  32.                 bb=0x0;
  33.                 delay();

  34.                 aa=0x1,
  35.                 bb=0x0;
  36.                 delay();

  37.                 aa=0x0,
  38.                 bb=0x2;
  39.                 delay();

  40.                 aa=0x0,
  41.                 bb=0x1;
  42.                 delay();        
  43.         }
  44. }


  45. void delay()            
  46. {
  47.         unit x,y;
  48.         for(x=100;x<0;x--)
  49.                 for(y=200;y>0;y--);
  50. }

复制代码

作者: xsk199704    时间: 2017-10-18 21:42
P1=aa,P2=bb;aa,bb为不确定变量,不能直接赋值给P1,P2
作者: xsk199704    时间: 2017-10-18 21:43
P1=aa,P2=bb;aa,bb不能直接赋值
作者: 找人PK    时间: 2019-1-31 06:30

P1=aa,P2=bb;只能将P1与P2端口的值赋值给aa与bb,怎么能将名称赋给aa与bb呢?
要么用宏定义给P1与 P2取个别的名字,叫aa与bb.(注意,这里的aa与bb是不会同内存打交道的,你定义的变量是要同内存打交道的),要么直接用P1=0x80,   P2=0x0;   delay();......

作者: Trump1438    时间: 2019-1-31 14:15
说的也是,变量怎么将变量名变了呢?神级操作啊!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1