什么功能?

[复制链接]
280|8
手机看帖
扫描二维码
随时随地手机跟帖
llia|  楼主 | 2019-8-17 21:48 | 显示全部楼层 |阅读模式

在下面程序中,
uchar Ds1302Read(uchar addr)
{
        uchar n,dat,dat1;
        RST = 0;
        _nop_();

        SCLK = 0;//先将SCLK置低电平。
        _nop_();
        RST = 1;//然后将RST(CE)置高电平。
        _nop_();

        for(n=0; n<8; n++)//开始传送八位地址命令
        {
                DSIO = addr & 0x01;//数据从低位开始传送
                addr >>= 1;
                SCLK = 1;//数据在上升沿时,DS1302读取数据
                _nop_();
                SCLK = 0;//DS1302下降沿时,放置数据
                _nop_();
        }
        _nop_();
        for(n=0; n<8; n++)//读取8位数据
        {
                dat1 = DSIO;//从最低位开始接收
                dat = (dat>>1) | (dat1<<7);
                SCLK = 1;
                _nop_();
                SCLK = 0;//DS1302下降沿时,放置数据
                _nop_();
        }

        RST = 0;
        _nop_();        //以下为DS1302复位的稳定时间,必须的。
        SCLK = 1;
        _nop_();
        DSIO = 0;
        _nop_();
        DSIO = 1;
        _nop_();
        return dat;        
}

   dat = (dat>>1) | (dat1<<7);是什么意思,什么功能?

使用特权

评论回复
llia|  楼主 | 2019-8-17 21:50 | 显示全部楼层
dat1 = DSIO;//从最低位开始接收,数据明明是给了dat1,但是最后return 的数据 却是  dat ?

使用特权

评论回复
wangpe| | 2019-8-17 21:54 | 显示全部楼层

dat=(dat>>1)|(dat1<<7)
dat=(dat按位右移1位)相或同假为假一真即真|(dat1按位左移7位)

使用特权

评论回复
langgq| | 2019-8-17 21:57 | 显示全部楼层
dat右移1位,左侧空位补0;dat1左移7位,右侧空位补0,将两个结果按位或运算,赋值给dat

使用特权

评论回复
hanwe| | 2019-8-17 22:00 | 显示全部楼层
你的程序最后一句话写的是return dat;如果想返回dat1,就写return dat1;

使用特权

评论回复
guoyt| | 2019-8-17 22:05 | 显示全部楼层
for(n=0; n<8; n++)//读取8位数据
        {
                dat1 = DSIO;//从最低位开始接收
                dat = (dat>>1) | (dat1<<7);
                SCLK = 1;
                _nop_();
                SCLK = 0;//DS1302下降沿时,放置数据
                _nop_();
        }

使用特权

评论回复
lium| | 2019-8-17 22:07 | 显示全部楼层

dat>>1,右移一位,高1位补零,变成0XXXXXXX。
dat1<<7左移七位,低7位补零,变成X0000000,

使用特权

评论回复
zhanglli| | 2019-8-17 22:10 | 显示全部楼层
dat = (dat>>1) | (dat1<<7)  就是dat右移一位, dat1左移7位,当两个条件任何一个为真时,结果为1.

使用特权

评论回复
llia|  楼主 | 2019-8-17 22:13 | 显示全部楼层
嗯,我再好好缕一缕吧,有了好消息及时通知大家,结贴喽

使用特权

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

本版积分规则

961

主题

8893

帖子

4

粉丝