日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]/******************************************************************************************************************************************/#ifndef _ADC0832_H_#define _ADC0832_H_#include #define uchar

/*
********************************************************************
********************************************************************
*/

#ifndef _ADC0832_H_
#define _ADC0832_H_

#include

#define uchar unsigned char
#define uint unsigned int


extern void _nop_ (void);

/*
********************************************************************
** 函數名 :ADC0832讀數據程序
** 入口 :需轉換通道channel [0:1]
** 返回 : 無符號字符型 uchar
** 例子 : Data_adc = ReadAdc0832( 0 ); //讀取adc0832芯片的0通道模擬電壓
** 說明 : 使用時請在芯片加上精準電壓源, 建議彩專用芯片
********************************************************************
*/
uchar ReadAdc0832( uchar channel );
//ADC0832端口定義
#define ADC0832_SCK_H P3_2 = 1
#define ADC0832_SCK_L P3_2 = 0

#define ADC0832_DIDO_H P3_3 = 1
#define ADC0832_DIDO_L P3_3 = 0
#define ADC0832_DIDO P3_3

#define ADC0832_CS_H P3_4 = 1
#define ADC0832_CS_L P3_4 = 0

//工作時序
//當cs由高變低時,選中ADC0832。在時鐘的上升沿,DI端的數據移入ADC0832內部的多路地址移位寄存器。
//在第一個時鐘期間,Dl為高,表示啟動位,緊接著輸入兩位配置位。當輸入啟動位和配置位后,選通輸入模擬通道,轉換開始。
//轉換開始后,經過一個時鐘周期延遲,以使選定的通道穩(wěn)定。ADC0832接著在第4個時鐘下降沿輸出轉換數據。
//數據輸出時先輸出最高位(D7~DO);輸出完轉換結果后,又以最低位開始重新輸出一遍數據(D7~DO),兩次發(fā)送的最低位共用。當片選cS
//為高時,內部所有寄存器清0,輸出變?yōu)楦咦钁B(tài)。如果要再進行一次模傲轉換,片選cs必須再次從高向低跳變,后面再輸入啟動位和配置位

//adc0832讀數據
uchar ReadAdc0832( uchar channel )
{
uchar i = 0;
uchar outdata = 0;
//初始化: 選通 數據口保持高電平
//當cs由高變低時,選中ADC0832。在時鐘的上升沿,DI端的數據移入ADC0832內部的多路地址移位寄存器
ADC0832_CS_L; // 使能
ADC0832_DIDO_H; //
ADC0832_SCK_L; //第一次觸發(fā)
_nop_();
_nop_();
ADC0832_SCK_H; //
_nop_();
_nop_();

//模擬通道的選擇及單端輸入和差分輸入的選擇
ADC0832_DIDO_H;
ADC0832_SCK_L; //第二次觸發(fā)
_nop_();
_nop_();
ADC0832_SCK_H;
_nop_();
_nop_();

if( channel == 1 )
{
ADC0832_DIDO_H;
}

else
{
ADC0832_DIDO_L;
}
ADC0832_SCK_L; //第三次觸發(fā)
_nop_();
_nop_();
ADC0832_SCK_H;
_nop_();
_nop_();


ADC0832_SCK_L;
_nop_();
_nop_();
ADC0832_DIDO_H; //置為輸入準備讀數據
ADC0832_SCK_H;
_nop_();
_nop_();

outdata = 0; //初始化

//讀數據D7~D0
for( i = 1; i <= 8; i++ )
{
if( ADC0832_DIDO == 1 )
{
outdata |= 0x01;
}

ADC0832_SCK_H;
ADC0832_SCK_L;

outdata = outdata << 1; //左移一位
}

//此函數不再讀數據D0~D7 (注意D0位重疊)
ADC0832_CS_H; //禁止

return outdata;
}
#endif //


本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉