3233|2

10

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

led左移问题求解 [复制链接]

/*8X8行扫描,左移显示*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code TAB[]={0xFF,0xF7,0xFB,0x81,0xFB,0xF7,0xFF,0xFF};
uchar i,t,j=0;
delay(uchar t)
{
while (t--)
{;}
}
void main(void)
{ uchar T,Y,Q;
while(1)
   {
   for(Q=0;Q<8;Q++)
    for(T=0;T<100;T++)    //速度
      {
    P2=0x01;
          for(i=0;i<8;i++)
         {
       Y=TAB[i+1]*256+TAB;
    Y=Y<<(7-Q)|Y>>Q;
    P1=Y%256;
    delay(60);
    P2=P2<<1|P2>>7;
       }
    }
}
}
 
这段代码是别人写的 
 Y=TAB[i+1]*256+TAB;
    Y=Y<<(7-Q)|Y>>Q;
    P1=Y%256;
这几句看不懂
 
我的分析是这样的
Y=TAB[i+1]*256+TAB;   首先定义的Y是uchar类型,一次只能装8位,其次TAB[i+1]*256相当于左移8位,但是你的数组的类型也是uchar,如果这样的话移掉的8位放哪?
实在是想不通 求大师解释下
谢谢
此帖出自51单片机论坛

最新回复

感觉程序明显有错误   Y=TAB[i+1]*256+TAB;  后面这个 TAB 是哪个变量 你抄错了吧 TAB[i+1]*256 这个可能就是为了使的变量溢出清零吧  再加上TAB不就是 Y 现在的值了  详情 回复 发表于 2012-6-29 21:32
点赞 关注
 

回复
举报

10

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
#include
#define uchar unsigned char
#define uint unsigned intuchar code TAB[]={0xFF,0xF7,0xFB,0x81,0xFB,0xF7,0xFF,0xFF};
uchar i,t,j=0;delay(uchar t)
{
while (t--)
{;}
}void main(void)
{ uchar T,Y,Q;
while(1)
   {
   for(Q=0;Q<8;Q++)
    for(T=0;T<100;T++)    //速度
      {
    P2=0x01;
          for(i=0;i<8;i++)
         {
       Y=TAB[i+1]*256+TAB;
    Y=Y<<(7-Q)|Y>>Q;
    P1=Y%256;
    delay(60);
    P2=P2<<1|P2>>7;
       }
    }
}
}

上面程序掉了一个【i】

这个是完整的程序
此帖出自51单片机论坛
 
 
 

回复

35

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
感觉程序明显有错误   Y=TAB[i+1]*256+TAB;  后面这个 TAB 是哪个变量 你抄错了吧
TAB[i+1]*256 这个可能就是为了使的变量溢出清零吧  再加上TAB不就是 Y 现在的值了
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表