| 最近做項(xiàng)目需要用到TLC549,結(jié)果網(wǎng)上沒(méi)有參考程序,于是自己通過(guò)數(shù)據(jù)手冊(cè)寫(xiě)了一個(gè),以用來(lái)交流。 /*************************************************************** *程 序 最 后 修 改 時(shí) 間 06-8-9 22:08 *軟 件 標(biāo) 題:TLC549 AD采樣子程序 *軟 件 說(shuō) 明:從TLC549讀取采樣值 *_________________________________________ * * ***************************************************************** * *程序作者:Dai_Weis Dai_Weis@hotmail.com * *版本號(hào):2.6.3.19 * * *******************************************************************/ #include "intrins.h" #define Wait1us _nop_(); #define Wait2us {_nop_();_nop_();} #define Wait4us {Wait2us;Wait2us;} #define Wait8us {Wait4us;Wait4us;} #define Wait10us {Wait8us;Wait2us;} #define Wait30us {Wait10us;Wait8us;Wait4us;Wait2us;} /************定義接口總線**************/ sbit Clock = P1 ^ 2; //時(shí)鐘口線 sbit DataOut = P1 ^ 3; //數(shù)據(jù)輸出口線 sbit ChipSelect = P1 ^ 4; //片選口線 /************接口總線定義結(jié)束**********/ /*********函數(shù)名稱:ADCSelChannel******** * *功能:轉(zhuǎn)換指定通道的模擬量為數(shù)字量 * *說(shuō)明: * *位置:1 * ****************************************/ unsigned char ADCSelChannel(void) { unsigned char ConvertValue = 0; unsigned char i; ChipSelect = 1; //芯片復(fù)位 ChipSelect = 0; ChipSelect = 1; Clock = 0; Wait4us; ChipSelect = 0; //芯片起始 Wait4us; //等待延時(shí) for (i = 0; i < 8; i ++) //輸入采樣轉(zhuǎn)換時(shí)鐘 { Clock = 1; Clock = 0; } ChipSelect = 1; //開(kāi)始轉(zhuǎn)換 Wait10us; //等待轉(zhuǎn)換結(jié)束 ChipSelect = 0; //讀取轉(zhuǎn)換結(jié)果 Wait4us; for (i = 0; i < 8; i ++) // { Clock = 1; ConvertValue <<= 1; if (DataOut) { ConvertValue = 0x1; } Clock = 0; } ChipSelect = 1; return (ConvertValue); //返回轉(zhuǎn)換結(jié)果 } /************ADCSelChannel函數(shù)結(jié)束**********/
|