打印

什么功能?

[复制链接]
237|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
llia|  楼主 | 2020-12-1 20:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在下面程序中,
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|  楼主 | 2020-12-1 20:27 | 只看该作者
dat1 = DSIO;//从最低位开始接收,数据明明是给了dat1,但是最后return 的数据 却是  dat ?

使用特权

评论回复
板凳
wangpe| | 2020-12-1 20:31 | 只看该作者

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

使用特权

评论回复
地板
langgq| | 2020-12-1 20:34 | 只看该作者
dat右移1位,左侧空位补0;dat1左移7位,右侧空位补0,将两个结果按位或运算,赋值给dat

使用特权

评论回复
5
hanwe| | 2020-12-1 20:40 | 只看该作者
你的程序最后一句话写的是return dat;如果想返回dat1,就写return dat1;

使用特权

评论回复
6
guoyt| | 2020-12-1 20:43 | 只看该作者
for(n=0; n<8; n++)//读取8位数据
        {
                dat1 = DSIO;//从最低位开始接收
                dat = (dat>>1) | (dat1<<7);
                SCLK = 1;
                _nop_();
                SCLK = 0;//DS1302下降沿时,放置数据
                _nop_();
        }

使用特权

评论回复
7
lium| | 2020-12-1 20:46 | 只看该作者

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

使用特权

评论回复
8
zhanglli| | 2020-12-1 20:49 | 只看该作者
dat = (dat>>1) | (dat1<<7)  就是dat右移一位, dat1左移7位,当两个条件任何一个为真时,结果为1.

使用特权

评论回复
9
llia|  楼主 | 2020-12-1 20:53 | 只看该作者
嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

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

本版积分规则

961

主题

8893

帖子

4

粉丝