请教开发过531的大虾: 我是用Msp430单片机和RC531开发typeA,I/O口读写用复用地址总线,430的I/O口没有复用功能,按照datasheet上的读写时序模拟的I/O通讯。但是复位总是不能成功,while (((ReadRawIO(RegCommand) & 0x3F) != 0x3F) && !(T2IR))总是因为超时而退出循环,按道理上电和复位位由(高-〉低)后RC531会自动将复位命令(0x3F)加载到Command寄存器中,但是我读Command寄存器读不到3F,而且每次读的值都不同,所以一直超时,复位不成功。不知道是哪里出错了,请大家帮助下小弟,谢了.....
我想会不会是我的ReadRawIO()函数有问题,这里贴出来希望能给我指出错误,不慎感激. unsigned char ReadRawIO(unsigned char Address) { unsigned char c; P5DIR = 0xFF; //设置P5口为输出状态 ALE_High(); //地址锁存 NCS_High(); NRD_High(); P5OUT = Address; //将地址放在总线上 P5DIR = 0x00; //设置P5口为输入状态 ALE_Low(); NCS_Low(); NRD_Low(); c = P5IN ; //取总线上的数据 NRD_High(); NCS_High(); _NOP(); //准备下一次操作 _NOP(); return c; }
|