ade7753程序不正确,请高人帮我看一下有什么问题,谢谢啦
[复制链接]
#include "reg52.h" #include "intrins.h"
#define uchar unsigned char #define uint unsigned int #define ulong unsigned long
sbit ad7753_din=P3^0; sbit ad7753_dout=P3^1; sbit ad7753_sclk=P3^2; sbit ad7753_cs=P0^3;
void ad7753_write1byte(uchar dat); uchar ad7753_read1byte(void); void ad7753_write(uchar reg,uchar *pnt,uchar cnt); void ad7753_read(uchar reg,uchar *pnt,uchar cnt); void delay(void);
uchar table[2]={0x00,0x08}; uchar result[4];
void main (void) { ad7753_write(0x0a,table,2); delay(); ad7753_read(0x0a,result,2); delay(); while(1); }
void ad7753_write1byte(uchar dat) { uchar i; for(i=0;i<8;i++) { ad7753_sclk=1; _nop_(); if(dat&0x80!=0) ad7753_din=1; else ad7753_din=0; ad7753_sclk=0; dat=dat<<1; _nop_(); } } uchar ad7753_read1byte(void) { uchar i,bb=0; for(i=0;i<8;i++) { ad7753_sclk=1; if(ad7753_dout!=0) bb=bb&0x01; _nop_(); ad7753_sclk=0; bb=bb<<1; _nop_(); } return bb; } void ad7753_write(uchar reg,uchar *pnt,uchar cnt) { uchar i; ad7753_sclk=0; _nop_(); ad7753_cs=0; _nop_(); ad7753_write1byte(reg&0x80); for(i=0;i<cnt;i++) { _nop_(); ad7753_write1byte(*pnt++); // *pnt++; _nop_(); } ad7753_sclk=0; _nop_(); ad7753_cs=1; } void ad7753_read(uchar reg,uchar *pnt,uchar cnt) { uchar i; ad7753_sclk=0; _nop_(); ad7753_cs=0; _nop_(); ad7753_write1byte(reg); for(i=0;i<cnt;i++) { delay(); *pnt++=ad7753_read1byte(); // delay(); } ad7753_sclk=0; _nop_(); ad7753_cs=1; }
void delay(void) //误差 0us { unsigned char a,b; for(b=1;b>0;b--) for(a=1;a>0;a--); }
写进0x0a寄存器之后,读取结果总是0,不知道什么原因,帮我看一下,什么地方有问题,谢谢啦!
|