標題: 想問下這段單片機程序的具體意思,adc0832的 [打印本頁]
作者: 異星人 時間: 2019-5-24 14:41
標題: 想問下這段單片機程序的具體意思,adc0832的
前面那個是根據時序圖來寫的吧?但是從for循環開始那邊是什么意思呢?
unsigned int A_D() //ADC0832 讀值程序
{
unsigned char i;
unsigned char dat;
ADC0832_CS=1; //一個轉換周期開始
ADC0832_CLK=0; //為第一個脈沖作準備
ADC0832_CS=0; //CS置0,片選有效
ADC0832_DIO=1; //DIO置1,規定的起始信號
ADC0832_CLK=1; //第一個脈沖
ADC0832_CLK=0; //第一個脈沖的下降沿,此前DIO必須是高電平
ADC0832_DIO=1; //DIO置1, 通道選擇信號
ADC0832_CLK=1; //第二個脈沖,第2、3個脈沖下沉之前,DI必須跟別輸入兩位數據用于選擇通道,這里選通道RH0
ADC0832_CLK=0; //第二個脈沖下降沿
ADC0832_DIO=0; //DI置0,選擇通道0
ADC0832_CLK=1; //第三個脈沖
ADC0832_CLK=0; //第三個脈沖下降沿
ADC0832_DIO=1; //第三個脈沖下沉之后,輸入端DIO失去作用,應置1
ADC0832_CLK=1; //第四個脈沖
for(i=0;i<8;i++) //高位在前
{
ADC0832_CLK=1; //第四個脈沖
ADC0832_CLK=0;
dat<<=1; //將下面儲存的低位數據向右移
dat|=(unsigned char)ADC0832_DIO; //將輸出數據DIO通過或運算儲存在dat最低位
}
ADC0832_CS=1; //片選無效
return dat; //將讀書的數據返回
}
作者: angmall 時間: 2019-5-24 23:32
注釋 解釋很清楚 就是讀出數據
作者: netlmq 時間: 2019-5-25 07:39
從ADC0832的DIO端輸出轉換數據,先最高位DATA7,依次輸出,直到DATA0。
先產生一個CLk脈沖下降沿,同時,(dat<<=1; ),dat左移一位,空出最低位準備接收ADC0832_DIO位。
DIO 端輸出一位數據,并入dat低位,for循環,讀取8次,接收完最低位數據DATA0,一個字節的數據輸出完成。一次A/D 轉換的結束。
最后將CS 置高電平禁用芯片,將轉換后的數據dat返回。
作者: 異星人 時間: 2019-5-25 09:20
adc0832不是需要讀兩次嗎?正的一次反的一次
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |