打印

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

[复制链接]
3107|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leaoking|  楼主 | 2009-8-3 19:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 leaoking 于 2009-8-3 19:12 编辑

如题,最近在学单片机,却在刚入门儿的时候被一个似乎是很简单的程序给卡到这儿了。
我自己想的是这样的。
#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不能这么减,那这个程序改怎么写?
沙发
leaoking|  楼主 | 2009-8-3 19:13 | 只看该作者
占座,帖子顶起,等待回答。。。

使用特权

评论回复
板凳
laibour| | 2009-8-3 19:43 | 只看该作者
sbit 是C51中定义位变量用的,这一位可以使0或者1。不能进行自减操作。你根本不用sbit 操作,直接用P1就可以了。

使用特权

评论回复
地板
leaoking|  楼主 | 2009-8-3 19:51 | 只看该作者
先试一下。。。。
寒自己一个。。。

使用特权

评论回复
5
leaoking|  楼主 | 2009-8-3 19:56 | 只看该作者
3楼正解!
问题可以关闭。
谢谢!!!

使用特权

评论回复
6
mcumi| | 2009-8-3 20:21 | 只看该作者
可以用define定义,我也刚学。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

56

帖子

0

粉丝