小组 > 嵌入式 > 51单片机助学小组 > 学习笔记一
?
?
小组信息
名称:51单片机助学小组
人数:631
小组积分:3513
简介:这里是你学习、讨论51的发源地,是你技术提升的广阔舞台,是你进阶RTX51Tiny操作系统,最后直达公司的桥梁。我们的口号是:借狼之精神,“凶猛”的学习,“执着”的追求,“顽强”的拼搏,最后与技术“和谐共生”,“忠诚”的回为你报遮风挡雨的每个人。此次将联合EDN为参与讨论的网友们免费送实验板;贴片已焊好,只需焊接插件的PCB以及套件;PCB空板。数量有限,先到先得。

小组公告

学习板、实验板购买地址 官方淘宝店:shop109195762.taobao.com

返回本小组首页

楼主??[原创]?

学习笔记一


作者:WANGAIMIN
积分:609分
总积分:1288分
:2006
发送信息
加为好友
发表于2014-10-01 09:15

在写数码管显示时间程序时,怎么也显示不出正确时间,然后用了刘老师的源码后就显示正常,于是分析刘老师的代码.在阅读中遇到一个疑惑的地方,程序如下:

?/* ***************************************************** */
// 函数名称:InputOneByte()
// 函数功能:向IIC器件写入一个字节
// 入口参数:待写入的一个字节(uByteVal)
// 出口参数:无
/* ***************************************************** */
void InputOneByte(uChar8 uByteVal)
{
??? uChar8 iCount;
??? for(iCount = 0;iCount < 8;iCount++)
?{?
??SCL = 0;
??Delay5US();???
??SDA = (uByteVal & 0x80) >> 7;
??Delay5US();????????
??SCL = 1;
??Delay5US();
??uByteVal <<= 1;
??? }
?SCL = 0;?? ??
}
/* ***************************************************** */?

里面的SDA = (uByteVal & 0x80) >> 7; 

1: uByteVal? 是1个字节参数, 函数调用时传过来的数和0x80按位与后,变成了D7不变,D6 -D0都为0. 也就是说: 按位与之后是D7,0,0,0,0,0,0,0?? 8位.

2:>>右移运算符 

  向右移动,左边位补0,上面语句向右移7位,数变为0,0,0,0,0,0,0,D7??? 移7位,左边补7个0,? 数还是8位.

3:8位的数赋值给 SDA ,数据是怎么传呢,以前见到的都是 SDA=0,SDA=1, SDA是个数据线,要么高电平.要么低电平.读取或写入的是1个电平 ,这里把1个字节给SDA,,是我不理解的地方


分享到:? 新浪微博?? qq空间??
投票数: ? 回复?? ? 引用??
点击登录,立即回复。
小组活跃用户