中级会员
- 积分
- 387
- 金钱
- 387
- 注册时间
- 2016-11-21
- 在线时间
- 64 小时
|
1金钱
这是模拟应答的程序:
//位定义
sbit SCL=P1^0;
sbit 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进行检测?还有就是能否给我讲解一下什么是进位或者借位,能不能给我举个具体的例子? |
|
|