|
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit CLK=P2^0;
- sbit CS=P2^1;
- sbit DI=P2^2;
- sbit DO=P2^3;
- void delay(uint z); //函數(shù)聲明
- void delay(uint z)
- {
- uint i = 0;
- uint j = 0;
- for(i=0;i<z;i++)
- for(j=0;j<114;j++);
- }
- uchar read_AD()
- {
- uchar i,out1,out2;
- out1=0;
- out2=0;
- CS=0;CLK=0;DI=0;
- DI=1;_nop_(); _nop_();//開(kāi)始信號(hào)
- // DO=0;
- // delay(2);//三個(gè)脈沖
- CLK=1; _nop_(); _nop_();//start位,起始位開(kāi)始工作
- CLK=0;DI=1;_nop_(); _nop_();//第一個(gè)脈沖結(jié)束
- CLK=1;_nop_(); _nop_();//第二脈沖到//SGL位
- CLK=0;DI=1;_nop_(); _nop_();
-
- CLK=1;_nop_(); _nop_();//第三個(gè)脈沖//ODD位
- CLK=0;DI=0;_nop_(); _nop_();
- CLK=1;_nop_(); _nop_();//第四個(gè)脈沖到//SELECT1位
- CLK=0;DI=0;_nop_(); _nop_();
-
- CLK=1;_nop_(); _nop_();//第五個(gè)脈沖到//SELECT0位
- CLK=0;DI=0;_nop_(); _nop_();//第一個(gè)下降沿,準(zhǔn)備數(shù)據(jù)轉(zhuǎn)換
-
- DI=0;//DI變?yōu)楦咦锠顟B(tài),輸入無(wú)效
- DO=1;//DO脫離高阻態(tài),準(zhǔn)備輸出
- _nop_(); _nop_();
- for(i=0;i<8;i++)//轉(zhuǎn)換8位二進(jìn)制數(shù)
- {
- CLK=1;_nop_();_nop_();
- CLK=0;_nop_();_nop_(); //下降沿開(kāi)始數(shù)據(jù)轉(zhuǎn)換
- out1=out1<<1|DO;
- }
- for(i=0;i<8;i++)//轉(zhuǎn)換8位二進(jìn)制數(shù)
- {
- out2=out2<<((uchar)(DO)<<i);
- CLK=1;_nop_();_nop_();
- CLK=0;_nop_();_nop_();//下降沿開(kāi)始數(shù)據(jù)轉(zhuǎn)換
- }
- CS=1;//結(jié)束一個(gè)采集周期
- return (out1==out2)?out1:0;
- }
- void main()
- {
- while(1)
- {
- P1=read_AD();
- }
- }
復(fù)制代碼 |
|