?? adc0832.h
字號:
#ifndef ADC0832_H
#define ADC0832_H
sbit CS_0832 = P1^0;
sbit CLK_0832 = P1^1;
sbit DO_0832 = P1^2; // DI、DO不同時有效,可共用一個接口
sbit DI_0832 = P1^2;
extern void _nop_ ( void );
#define pulse0832() _nop_();_nop_();CLK_0832=1;_nop_();_nop_();CLK_0832=0
//把模擬電壓值轉換成8位二進制數并返回
unsigned char read0832()
{
unsigned char i, ch = 0, ch1 = 0;
CS_0832=0; // 片選,DO為高阻態
DI_0832=1;
// 此處暫停T-SetUp: 250ns (由pulse0832完成)
pulse0832(); // 第一個脈沖,起始位,DI置高
DI_0832=1;
pulse0832(); // 第二個脈沖,DI=1表示雙通道單極性輸入
DI_0832=1;
pulse0832(); // 第三個脈沖,DI=1表示選擇通道1(CH2)
// MSB FIRST DATA
for(i = 0; i < 8; ++i) {
pulse0832();
ch <<= 1;
if(DO_0832==1)
ch |= 0x01;
}
// MSB FIRST輸出的最后一位與LSB FIRST輸出的第一位是在
// 同一個時鐘下降沿之后,故此處先執行讀取,后執行pulse
// LSB FIRST DATA
for(i = 0; i < 8; ++i) {
ch1 >>= 1;
if(DO_0832==1)
ch1 |= 0x80;
pulse0832();
}
CS_0832=1; // 取消片選,一個轉換周期結束
return (ch==ch1) ? ch : 0; // 返回轉換結果
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -