📄 ads7841.h
字号:
/*
* Filename : ads7841.h
* Hardware : Controller -> P89V51RD2
* XTAL -> 18.432 MHz
* Mode -> 6 Clock/MC
* I/O : DCLK P3.3
* CS P3.4
* DIN P3.5
* DOUT P3.7
* Compiler : SDCC
* Author : sci-3d@hotmail.com
* Date : 01/08/06
*/
#define DCLK P3_3 /* DCLK pin */
#define CS P3_4 /* CS pin */
#define DIN P3_5 /* DIN pin */
#define DOUT P3_7 /* DOUT pin */
int analog(char ch)
{
unsigned char i, crt_byte; /* Variable for counter */
unsigned int dat; /* Variable for storing analog value */
switch(ch) /* Check selected channel for reading */
{
case 0 : crt_byte = 0x97; /* Select analog channel 0 */
break;
case 1 : crt_byte = 0xD7; /* Select analog channel 1 */
break;
case 2 : crt_byte = 0xA7; /* Select analog channel 2 */
break;
case 3 : crt_byte = 0xE7; /* Select analog channel 3 */
break;
default: crt_byte = 0x97; /* Select analog channel 0 */
break;
}
dat = 0;
DCLK = 0; /* Clear DCLK pin */
DIN = 0; /* Clear DIN pin */
CS = 0; /* Clear CS pin */
for(i=0; i<8; i++) /* Loop to send control byte for ADS7841 */
{
DIN = crt_byte & 0x80; /* Send data bit to ADS7841 */
DCLK = 0; /* Clear clock pin */
DCLK = 1; /* Set clock pin */
crt_byte = crt_byte<<1; /* Shift bit once next time */
}
DCLK = 0; /* Clear clock pin */
DCLK = 1; /* Set clock pin */
for(i=0; i<12; i++) /* Loop to read 12-bit digital value from ADS7841 */
{
DCLK = 0; /* Clear clock pin */
DCLK = 1; /* Set clock pin */
dat = dat<<1; /* Shift bit once to store data next bit */
dat = dat | DOUT; /* Read data bit from DOUT pin */
}
for(i=0;i<4;i++) /* Generate rising edge clock for success frame */
{
DCLK = 0; /* Clear clock pin */
DCLK = 1; /* Set clock pin */
}
CS = 1; /* Set CS pin */
return dat;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -