dadongleilei 发表于 2012-5-21 19:46:21

430程I2C通信问题


今天在调试EEPROM过程中,发现了一个奇怪的问题,读取EEPROM数据时 这样的语句,判断SDA是不是高电平,然后组成数据,2种写法
1
    ddata|=(P4IN&0x20);//这样的写法在51单片机上试过,可行;但在430单片机上就会产生错位
2
    if(P4IN&0x20)
    {
      ddata+=1;            //这种写法就完全正确
    }
   反汇编出来我也没看出区别:

dadongleilei 发表于 2012-5-21 19:52:58

发现问题了。原来是ddata|=(P4IN&0x20);这条语句的问题,只有P4IN&0x01时才会正确,否则如果为1的话,不是从最低位得到1,而是0x20;希望大家不会犯类似的问题
页: [1]
查看完整版本: 430程I2C通信问题