📄 ad7791.c
字号:
#include <at89x52.h>
#include <stdio.h>
/***********************************AD7791*************************************************/
sbit DIN = P0^0;
sbit DOUT_RDY = P0^1;
sbit SCLK = P0^2;
sbit CS = P0^3;
/*******************************************************************************************/
//function Inituart();
/*******************************************************************************************/
void delay ( unsigned int i )
{
while ( --i ) ;
}
void Inituart(void)
{
SCON = 0x50 ;
TMOD = 0x20 ;
TCON = 0x40 ;
TH1 = 0xFD ;
TL1 = 0xFD ; //11.0592MHz :9600
TI = 1;
TR1 = 1;
}
/*******************************************************************************************/
//function spi_write();
//communications register
//0x4c , continuous read 24bit data
/*******************************************************************************************/
spi_write( unsigned char sw )
{
unsigned char i;
CS=0;
SCLK=1;
for (i=0;i<8;i++)
{
SCLK = 0 ;
DIN = (bit)(sw&0x80);
sw<<=1;
SCLK = 1 ;
}
CS=1;
SCLK=0;
}
/*******************************************************************************************/
//function ad7791();
/*******************************************************************************************/
unsigned long spi_read ( void )
{
unsigned long addata = 0 ;
unsigned char i ;
CS=0;
SCLK=1;
for (i=0;i<24;i++)
{
SCLK=0;
addata*=2;
if(DOUT_RDY) addata++;
SCLK=1;
}
CS=1;
return(addata);
/*******************************************************************************************/
}
void main(void)
{
unsigned long ad;
Inituart(); // initialize 232 uart
spi_write( 0x20 ) ;
delay(100);
spi_write( 0x37 ) ;
delay(100);
spi_write( 0x3c ) ;
while(1)
{
//CS = 0 ;
//spi_write( 0x82 ) ;
delay ( 50000 ) ;
if(DOUT_RDY)
ad = spi_read();
//CS = 1 ;
//P2_5 = ~P2_5 ;
printf ( "%ld\n\r" , ad ) ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -