打印

C语言问题

[复制链接]
1779|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zxser09|  楼主 | 2009-12-22 08:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
#include <intrins.h>
#define unc unsigned char
#define unt unsigned int
sbit d=P1;
void delay(unt);
void main()
{
d=0xfe;

while(1)
{
  unc a,b;
  a=10,b=10;
     P1=d;
  delay(200);
  while(a!=0)
  {
   d=_crol_(d,1);
   P1=d;
   delay(100);
   a--;
  }
  while(b!=0)
  {
   d=_cror_(d,1);
   P1=d;
   delay(100);
   b--;
  }
  
}
}
void delay(unt e)
{
  unt x,y;
  for(x=200;x>0;x--)
  {
   for(y=e;y>0;y--)
   {
   }
  }
   看下这个程序的问题,我原来意图是让灯:先左移一位10次,然后再右移一位10次。这样循环,但是事实不行啊!!谢谢分析。

相关帖子

沙发
zhaoyu2005| | 2009-12-22 10:16 | 只看该作者
咋个不不行啊,也不说清楚
你的程序编译没有警告或者错误?
应该有吧,仔细看下程序,大路是对的,有个地方有问题,需要你自己找出

使用特权

评论回复
板凳
yeshaozhu| | 2009-12-22 11:55 | 只看该作者
不知道LZ所谓的左移十次是什么意思?我把你改成循环十次,程序如下:
        #include<reg51.h>
#include <intrins.h>
#define unc unsigned char
#define unt unsigned int
//sbit d=P1;
void delay(unt);
void main()
{
unc d=0xfe;

while(1)
{
  unc a,b;
  unc i;
  a=10;
  b=10;//初始化的时候不要用逗号表达式,否则应该不会对a进行初始化
     P1=d;
  delay(200);
  while(a!=0)
  {
  for(i=0; i<8; i++)
  {
   d=_crol_(d,1);
   P1=d;
   delay(1000);
   }
   a--;
  }
  while(b!=0)
  {
  for(i=0; i<8; i++)
  {
   d=_cror_(d,1);
   P1=d;
   delay(1000);
   }
   b--;
  }
  
}
}
void delay(unt e)
{
  unt x,y;
  for(x=200;x>0;x--)
   for(y=e;y>0;y--)        ;

  }

使用特权

评论回复
地板
jaylondon| | 2009-12-23 19:40 | 只看该作者
sbit d=P1;
??????????????

sbit不是只能定义一位么?  P1口有是8位怎么可以这样定义??

while(1)
{
  unc a,b;
  a=10,b=10;
     P1=d;

这里也有问题

使用特权

评论回复
5
norman33| | 2009-12-24 10:22 | 只看该作者
对的d,应该是unsigned char不能是sbit

使用特权

评论回复
6
cqy1413| | 2010-1-8 17:22 | 只看该作者
sbit d=P1,sbit只能对位操作吧

使用特权

评论回复
7
t86964988| | 2010-1-8 22:56 | 只看该作者
6L说的对 不能用sbit d=P0;应该用unsigned char ;void delay(unt e)
{
  unt x,y;
  for(x=200;x>0;x--)
  {
   for(y=e;y>0;y--)
   {
   }
  }
在第二个for结尾少个分号,unc d=0xfe 这边重复定义;你这个程序左移10次的子程序 刚进循环的时候P1口输出是1111 1101 ,10次结束P0口输出为1111 1011;右移10的子程序 刚进循环的时候P1口输出是  1111 1101,10次结束P1口输出为0111 1101 就这样循环着 你自己看看 是否满足你的设计需求

使用特权

评论回复
8
ymhui1986| | 2010-1-9 16:06 | 只看该作者
sbit d=P1,sbit只能对位操作吧
cqy1413 发表于 2010-1-8 17:22
同意6档的说法,这里应该是定义位的

使用特权

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

本版积分规则

81

主题

208

帖子

0

粉丝