以下是我写的两个查询24C02应答信号的程序: /***************查询应答信号方案1*************/ uchar chk_ask(void) { SDA=1; //释放数据线 SCL=1; //使SDA上数据有效,并读取 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); if (SDA==0) return 1; else return 0; SCL=0; } 上面的这段程序我看了一下keil生成的汇编代码,没有发现什么异常,但是我调用这个程序 后无法实现正常功能,读出的数据是乱码。 /***************查询应答信号方案2*************/ bit chk_ask(void) { bit ask_date; SDA=1; //释放数据线 SCL=1; //使SDA上数据有效,并读取 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); ask_date=SDA; SCL=0; return ask_date; } 用这个程序就能实现正常功能,哪位大虾帮我分析一下第一个程序为什么不行啊?
|