首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

求助:XS128模拟iic通信采集MMA7455无应答信号

求助:XS128模拟iic通信采集MMA7455无应答信号

本帖最后由 fengtianzhifeng 于 2011-12-11 22:01 编辑
  1. void start() {
  2. SDA=1;
  3. delay1us();
  4. SCL=1;
  5. delay1us();
  6. SDA=0;
  7. delay1us();
  8. SCL=0;
  9. }
  10. void end()
  11. {
  12. SDA=0;
  13. delay1us();
  14. SCL=1;
  15. delay1us();
  16. SDA=1;
  17. delay1us();
  18. }
  19. void respons()
  20. {
  21. uchar i;
  22. SCL=1;
  23. delay1us();
  24. outa=0;
  25. delay1us();
  26. while((SDA==1)&&(i<250))
  27. i++;
  28. SCL=0;
  29. delay1us();
  30. outa=1;
  31. delay1us();
  32. }
  33. void write_byte(uchar date)
  34. {
  35. uchar i;
  36. for(i=0;i<8;i++)
  37. {
  38. SCL=0;
  39. delay1us();
  40. if(date&0x80)
  41. SDA=1;
  42. else
  43. SDA=0;
  44. delay1us();
  45. SCL=1;
  46. delay1us();
  47. date<<=1;

  48. }
  49. SCL=0;
  50. delay1us();
  51. SDA=1;
  52. delay1us();
  53. }
  54. uchar read_byte()
  55. {
  56. uchar i,k;
  57. SCL=0;
  58. delay1us();
  59. SDA=1;
  60. delay1us();
  61. outa=0;
  62. delay1us();
  63. for(i=0;i<8;i++)
  64. {
  65. SCL=1;
  66. delay1us();
  67. k=(k<<1)|SDA;
  68. SCL=0;
  69. delay1us();
  70. }
  71. outa=1;
  72. return (k);
  73. }
  74. void write_add(uchar add,uchar date)
  75. {
  76. start();
  77. write_byte(0x3a);
  78. respons();
  79. write_byte(add);
  80. respons();
  81. write_byte(date);
  82. respons();
  83. end();
  84. }
  85. uchar read_add(uchar add)
  86. {
  87. uchar date;
  88. start();
  89. write_byte(0x3a);
  90. respons();
  91. write_byte(add);
  92. respons();
  93. start();
  94. write_byte(0x3b);
  95. respons();
  96. date=read_byte();
  97. respons();
  98. end();
  99. return (date);
  100. }
复制代码
程序貌似不应答~调试了很长时间了~就是不能出数据很着急请求大家给点意见谢谢了~下面是delay函数
void delay1us(void){
  uint a;
  for(a=6;a>0;a--) {
    asm("nop");
    asm("nop");
    asm("nop");
    asm("nop");
    asm("nop");
    asm("nop");
    asm("nop");
    asm("nop");
  }
}
哪位大神给弟弟我解释下啊~求你们了~困扰太长时间了~
返回列表