1. //首先定義好I/O口2. sbit SDO=P1^0;3. sbit SDI=P1^1;4. sbit SCK=P1^ 2;5. sbit SCS=P1^3;6. sbit ACC_7= ACC^7;7. unsigned int SpiRead(unsigned char add)8. {9. unsigned char i;10. unsigned int datal6;11. add&=0x3f;/*6位地址*/12. add |=0x80;/*讀操作碼l0*/13. SDO=1;/*發送1為起始位*/14. SCK=0;15. SCK=1;16. for(i=0;<8;i++)/*發送操作碼和地址*/17. {18. if(add&0x80==1)19. SDO=1;20. else21. SDO=0;22. SCK=0;/*從設備上升沿接收數據*/23. SCK=1;24. add<<= 1;25. }26. SCK=1;/*從設備時鐘線下降沿后發送數據,空讀1位數據*/27. SCK=0;28. datal6<<= 1;/*讀16位數據*/29. for(i=0;<16;i++)30. {31. SCK= 1;32. _nop_();33. if(SDI==1)34. datal6|=0x01;35. SCK =0;36. datal6< < =1;37. }38. return datal6;39. }
-END-