完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这是模拟应答的程序:
//位定义 ***it SCL=P1^0; ***it SDA=P1^1; bit I2C_RecvACK()//处理器检测到SDA拉低就能知道外接IIC设备数据已经收到 { SCL = 1; //拉高时钟线 Delay5us(); //延时 CY = SDA; //读应答信号 SCL = 0; //拉低时钟线 Delay5us(); //延时 return CY; }我查了下资料,说:CY表示了运算是否有进位(或借位)。如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0。我想问, 1.怎么才算借位??。 2.SDA只有1或0,那他最高位就只有1位,怎么都进不上去啊,那CY不就一直是0吗?。 3.CY位既然是处理器状态标志位,那么理论上CY应该是由硬件控制,为什么课一对他进行赋值呢? 4.能不能直接设个变量,如 uchar flag;flag=SDA;return flag;这样可以不? 求大神教教我,这种类型的寄存器不会用。还是我理解有问题,CY = SDA这句话表示,CY位对SDA引脚也就是P1.1进行检测?还有就是能否给我讲解一下什么是进位或者借位,能不能给我举个具体的例子? |
|
相关推荐
2个回答
|
|
就把CY当一个局部变量 就行了.不用真的去理解它的实际情况..功能做到了就可以了.如果要方便移植.最好不要使用CY.
|
|
|
|
对,我的意思是,能不能直接用一个变量flag去代替他。
|
|
|
|
只有小组成员才能发言,加入小组>>
3262 浏览 9 评论
2942 浏览 16 评论
3442 浏览 1 评论
8949 浏览 16 评论
4035 浏览 18 评论
1078浏览 3评论
558浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
551浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2286浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1846浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-8 09:24 , Processed in 1.153342 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号