-
大小: 9KB文件類型: .c金幣: 1下載: 0 次發(fā)布日期: 2021-06-10
- 語言: 其他
- 標(biāo)簽: msp430f149??電子羅盤??
資源簡介
電子羅盤HMC5883L基于msp430f149,可用
代碼片段和文件信息
#include?
#include?
#define?CPU_F?((double)8000000)?
#define?delay_us(x)?__delay_cycles((long)(CPU_F*(double)x/1000000.0))?
#define?delay_ms(x)?__delay_cycles((long)(CPU_F*(double)x/1000.0))?
#define?uchar?unsigned?char
#define?uint??unsigned?int
#define?ulong?unsigned?long
#define?P55?5
#define?P56?6
#define?P57?7
#define?RS_CLR P5OUT?&=?~(1?<#define?RS_SET P5OUT?|=?(1?<
#define?RW_CLR P5OUT?&=?~(1?<#define?RW_SET P5OUT?|=?(1?<
#define?EN_CLR P5OUT?&=?~(1?<#define?EN_SET P5OUT?|=?(1?<
#define?DataPort??????P4OUT?????????????????//P4口為數(shù)據(jù)口
#define?HMC5883L_DIR???P1DIR
#define?HMC5883L_IN????P1IN
#define?HMC5883L_OUT???P1OUT
#define?SCL??BIT0?????//IIC時鐘引腳定義
#define?SDA??BIT1?????//IIC數(shù)據(jù)引腳定義???
??????????????????????//DRDY?不接?
#define?SCL_H??(HMC5883L_DIR|=SCLHMC5883L_OUT|=SCL)
#define?SCL_L??(HMC5883L_DIR|=SCLHMC5883L_OUT&=~SCL)
#define?SDA_H??(HMC5883L_DIR|=SDAHMC5883L_OUT|=SDA)
#define?SDA_L??(HMC5883L_DIR|=SDAHMC5883L_OUT&=~SDA)
#define?SlaveAddress??0x3c??????????//定義器件在IIC總線中的從地址
uchar?Rec_Data[6];
int?xyz;
double?Angle;
uint?Acr;
uint?qian=0bai=0shi=0ge=0;????????????????//設(shè)置顯示參數(shù)
/*延時函數(shù)*/
void?Delay(uint?t)
{
while(t--);
}
/*起始信號*/
void?IIC_Start(void)
{
????SDA_H;
????SCL_H;
????Delay(50);
????SDA_L;
????Delay(50);
????SCL_L;
}
/*停止信號*/
void?IIC_Stop(void)
{
????SDA_L;
????SCL_H;
????Delay(50);
????SDA_H;
????Delay(50);
}
/*發(fā)送應(yīng)答信號*/
void?IIC_SendAck(char?Ack)
{???
????if(Ack)??????//ack?(0:ACK?1:NACK)
????SDA_H;
????else?SDA_L;
????SCL_H;
????Delay(50);
????SCL_L;
????Delay(50);
}
/*接收應(yīng)答信號*/
char?IIC_RecAck(void)
{???
????char?CY;
????HMC5883L_DIR&=~SDA;
????SCL_H;
????Delay(50);
????if(HMC5883L_DIR&SDA)
??????CY=1;
????else?CY=0;
????SCL_L;
????Delay(50);
????return?CY;
}
/*向IIC總線發(fā)送一個字節(jié)數(shù)據(jù)*/
void?HMC5883_Send_Byte(uchar?Dat)
{
????uchar?i;
????for(i=0;i<8;i++)
????{
????????if(Dat&BIT7)
????????SDA_H;
????????else?SDA_L;
????????SCL_H;
????????Delay(50);
????????SCL_L;
????????Delay(50);
????????Dat<<=1;
????}
????IIC_RecAck();
}
/*從IIC總線接收一個字節(jié)數(shù)據(jù)*/
uchar?HMC5883_Rec_Byte(void)
{
????uchar?iDat=0;
????SDA_H;
????HMC5883L_DIR&=~SDA;
????for(i=0;i<8;i++)
????{
????????Dat<<=1;
????????SCL_H;
????????Delay(50);
????????
????????if((HMC5883L_IN&SDA)==SDA)
????????Dat|=BIT0;
????????
????????SCL_L;
????????Delay(50);
????}
????return?Dat;
}
/*單字節(jié)寫HMC5883*/
void?Single_Write_HMC5883(uchar?Addressuchar?Dat)
{
????IIC_Start();
????HMC5883_Send_Byte(SlaveAddress);
????HMC5883_Send_Byte(Address);
????HMC5883_Send_Byte(Dat);
????IIC_Stop();
}
/*單字節(jié)讀HMC5883*/
uchar?Single_Read_HMC5883(uchar?Addr)
{
????uchar?Value;
????IIC_Start();
????HMC5883_Send_Byte(SlaveAddress);
????HMC5883_Send_Byte(Addr);
????IIC_Start();
????HMC5883_Send_Byt
- 上一篇:StdAfx.h
- 下一篇:策略模式工廠方法模式觀察者模式
評論
共有 條評論