怎样用八个二极管演示八位二进制数累加的过程

youngboy   2009-8-3 19:11 楼主


如题,最近在学单片机,却在刚入门儿的时候被一个似乎是很简单的程序给卡到这儿了。
我自己想的是这样的。
#include<reg52.h>
#define uint unsigned int
sbit a=P1;
void delay(uint);
main()
{
  while(1)
  {
      a=0xfe;
      while(a!=0x00)
      {
         delay(20);
         a--;
      }
  delay(20);
}
}
void delay(uint z)
{
    uint x,y;
    for(x=110;x>0;x--)
       for(y=z;y>0;y--);
}
结果是错误的,显示的是
1.C(13): error C193: '--': illegal operation on bit(s)
这样的一条提示信息。
高手指点下。似乎是说a不能这么减,那这个程序改怎么写?

回复评论 (6)

                                 占座,帖子顶起,等待回答。。。
点赞  2009-8-3 19:13
                                 sbit 是C51中定义位变量用的,这一位可以使0或者1。不能进行自减操作。你根本不用sbit 操作,直接用P1就可以了。
点赞  2009-8-3 19:43
先试一下。。。。
寒自己一个。。。
点赞  2009-8-3 19:51
3楼正解!
问题可以关闭。
谢谢!!!
点赞  2009-8-3 19:56
                                 可以用define定义,我也刚学。
点赞  2009-8-3 20:21

回复 6楼 xxlest 的帖子

#include
#define ui unsigned int
#define uc unsigned char
#include
void delay (ui);
sbit n1=P2^4;
void main()

{
        uc add;
        n1=0;
        while (1)
                {
                add=0xfe;
                for(P1=add;P1>0x00;P1--)
                delay (300);
                }
}



void delay (ui z)

{
    ui x,y;
        for(x=100;x>0;x--)
                for(y=z;y>0;y--);  
}
点赞  2011-8-13 20:28
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复