2429|9

5

帖子

0

资源

一粒金砂(中级)

大佬们,求救啊,被困3天了一直想不明白 [复制链接]


       
               
                       
               
       
为啥图2,用子函数格式  就可以点亮点阵啊,而用图1格式 就点亮一瞬间,再也不亮了。

此帖出自51单片机论坛

回复

5

帖子

0

资源

一粒金砂(中级)

QQ图片20211229214229.png  


回复

1477

帖子

3

资源

版主

你把代码复制到帖子中,照片看不清楚

个人签名

没有什么不可以,我就是我,不一样的烟火! 


回复

4

帖子

0

资源

一粒金砂(中级)

插眼,我没看出哪里有什么问题。解决了还请踹我一脚。


回复

4009

帖子

1

资源

版主

hang =hang<<1;

改变了hang[]数组的内容。

改成:

dat=hang[b]; //后面内容同右边试下。

for(i=0;i<8;i++)

{

    ....

}

函数以变量为参数不会改变参数的内容,只有以指针或数组为参数才可能改变参数内容。

 那个dat=hang;改不过来,下面改了:怪


回复

4009

帖子

1

资源

版主

dat=hang[b];


回复

1581

帖子

0

资源

版主

楼上正解,图1中【hang】数组被修改了,图2采用了一个中间变量dat,【hang】数组未被修改。


回复

4001

帖子

0

资源

版主

我的理解时被优化了,编译器认为hang[b]=hang[b]<<1;没必要执行,可以察看汇编码验证一下

另外for(i=0;i<8...然后查表出8421有点繁琐,改成 for (i=1;i!=0;i<<=1)就顺溜了


回复

4

帖子

0

资源

一粒金砂(中级)

绝了,看了楼上才反应过来楼主的问题:

仅能输出一次。

这么一看,问题确实如楼上描述那样。之前我一直想这个操作是可以输出数据的,和楼主诉求大相径庭。

在第一次输出之后,每一字节数据都被右移8位,通常来说,(无符号数)右移或者左移都是填充0。也就是说,在第一次输出之后,楼主的数据已经全部变成0了,这就是没有输出的原因。


回复

4

帖子

0

资源

一粒金砂(中级)

楼主以后可以用第二种方法写,传值进一个临时变量。

或者

unsigned char temp=0x80;

for(i = 0; i < 8; i++) {

temp=0x80;

if( TRUE == hang[i] & temp ) {

/* 相应操作 */

} else {

/* 相应操作 */

}

temp >>= 1;

/* 类似的从高位到低位进行位判断 */

}


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

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

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

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

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

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