我按照时序电路写了一个子程序测试为什么测不准?请各位大侠出来指点一下. #include "reg51.h" #include "absacc.h" #include "math.h" #include "intrins.h" #define uchar unsigned char #define uint unsigned int
sbit SCLK=P1^1; sbit WDI=P1^2; sbit SDATA=P1^0;
void delay(uchar n) { uchar i; for(i=0;i<n;i++) { _nop_(); } }
uint read7896(void) { char i; uint result; uchar hbyte, lbyte;
WDI=0; delay(3); SCLK=0; WDI=1; delay(3); WDI=0; for(i=0;i<15;i++) { _nop_(); } SCLK=1; SCLK=0; hbyte=0; for(i=0;i<4;i++) { SDATA=1; SCLK=1; if(SDATA) hbyte=0x01; SCLK=0; if(i!=3) hbyte<<=1; } lbyte=0; for(i=0;i<8;i++) { SDATA=1; SCLK=1; if(SDATA) lbyte=0x01; SCLK=0; if(i!=7) lbyte<<=1; } _nop_(); _nop_(); WDI=1; result=0; result=hbyte; result<<=8; result|=lbyte; return (result); }
void main(void) { uint ad; while(1){ ad=read7896(); } } 我总觉得我这个子程序有问题,但就是不知错在哪里?有哪位高手出来指点一下,在此多谢了。!! |