www.pudn.com > smd380_program.rar > smd380.c


 
						   
 
#include  
#include  
#include    
 
 
								 
typedef    unsigned char Byte;   		    
typedef    bit  bool; 
typedef    signed int  sint; 
typedef    unsigned  int Word; 
typedef    unsigned  int uint; 
typedef    signed long slong; 
 
 
 
#define uchar 	unsigned char	 
#define uint 	unsigned int 
 
#define Nop_() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); 
 
 
 
 
 
 
 
 
//SMD380 
 
sbit	CSB_380	=	P2^5; 
sbit	SCK_380	=	P0^4; 
sbit	SDO_380	=	P3^0; 
sbit	SDI_380	=	P3^1; 
 
 
 
 
 
typedef union  
{ unsigned int i; 
  float f; 
} value; 
 
 
//---------------------------------------------------------------------------------- 
// modul-var 
//---------------------------------------------------------------------------------- 
enum {TEMP,HUMI}; 
 
value humi_val,temp_val; 
value humi_val_buf,temp_val_buf; 
 
 
const float code pi=3.1415926; 
float dew_point; 
 
									 
#define noACK 0 
#define ACK   1 
                            //adr  command  r/w 
#define STATUS_REG_W 0x06   //000   0011    0 
#define STATUS_REG_R 0x07   //000   0011    1 
#define MEASURE_TEMP 0x03   //000   0001    1 
#define MEASURE_HUMI 0x05   //000   0010    1 
#define RESET        0x1e   //000   1111    0 
 
 
 
idata float angle; 
 
idata unsigned int heading,heading_buff; 
idata unsigned int OffsetAngle; 
idata unsigned int OffsetAngleBuf; 
idata unsigned char ModuleStatus=0; 
idata unsigned char cnt1=0,cnt2; 
idata unsigned char	CharTmp1; 
 
idata	unsigned	char	smd380_add,smd380_data,smd380_buff[18]; 
 
 
 
				   
 
void  Delay10us(Word  n);  
 
 
 
 
 
 
 
	 
/*-----------------------延时-----------------------*/ 
 
void Delay10us(Word n) //delay n 10us 
{ 
Word t,cnt; 
	for(t=0;t0x7f) 
		   {			 
		  		 smd380_buff[3]=0x100-smd380_buff[3]; 
				 acce_bit=0; 
		   } 
			x_value=smd380_buff[3]*8; 
			x_value=x_value/1024.000; 
			angle_x=asin(x_value)*180.0/pi; //angle_x为角度值,acce_bit=1角度为正,acce_bit=0角度为负 
 
 
			for(z=0;z<2;z++) 
			{				   
				Delay10us(2);   
			}		  
 
  	 		smd380_data=0; 
			i=0; 
 	 } 
 
 
 
}