C语言问题

[复制链接]
 楼主| 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;

这里也有问题
norman33 发表于 2009-12-24 10:22 | 显示全部楼层
对的d,应该是unsigned char不能是sbit
cqy1413 发表于 2010-1-8 17:22 | 显示全部楼层
sbit d=P1,sbit只能对位操作吧
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 就这样循环着 你自己看看 是否满足你的设计需求
ymhui1986 发表于 2010-1-9 16:06 | 显示全部楼层
sbit d=P1,sbit只能对位操作吧
cqy1413 发表于 2010-1-8 17:22
同意6档的说法,这里应该是定义位的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

81

主题

208

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部