普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 3380|回复: 1

74HC595移位输出的一个简单问题

 关闭 [复制链接]

3

主题

6

帖子

27

积分

新手上路

Rank: 1

积分
27
发表于 2017-6-19 23:36:59 | 显示全部楼层 |阅读模式
这是教程的部分程序,用来读取数据并移位输出
void Hc595SendByte(u8 dat)
{
        u8 a;
        SRCLK = 1;
        RCLK = 1;
        for(a=0;a<8;a++)                 //发送8位数
        {
                SER = dat >> 7;                 //从最高位开始发送
                dat <<= 1;
                SRCLK = 0;                         //发送时序
                _nop_();
                _nop_();
                SRCLK = 1;       
        }
        RCLK = 0;
        _nop_();
        _nop_();
        RCLK = 1;
}


这是我的程序,同样的功能,最高位移位的判断方法不同,为什么我的程序就运行不了?啥反应也没有
void Write74HC595(u8 WriteData)
{
        u8 i;

        SRCLK = 1;
        HRCLK = 1;

        for(i = 0; i < 8; i++)
        {
                 SRCLK = 0;                                        //初始化移位电平
                _nop_();
                if((WriteData && 0x80) == 0x80)
                         SER = 1;
                else
                        SER = 0;
                WriteData = WriteData << 1;                                //取完最高位后左移一位
                SRCLK = 1;
                _nop_();       
        }
        HRCLK = 0;
        delay(100);
        HRCLK = 1;
        delay(100);                                                //高电平持续1ms,保证移位寄存器数据移到储存寄存器中
}



请大神指出我程序哪里有问题?我觉得我的逻辑应该没有错吧用1000 0000来对数据求&,最高位是1则返回1000 0000,最高位不是1则返回0000 0000。这应该没问题吧?
回复

使用道具 举报

3

主题

6

帖子

27

积分

新手上路

Rank: 1

积分
27
 楼主| 发表于 2017-6-19 23:54:44 | 显示全部楼层
我知道了,我用错了&&,应该只用一个&,两个&&是逻辑判断,一个是与运算
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-19 15:19 , Processed in 0.083989 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表