📄 倾角传感器.c
字号:
#include <reg52.h>
//#include "defs_c51_manio.h"
#include "INTRINS.H"
#define uchar unsigned char
#define uint unsigned int
unsigned int SPI_ReadBits( uchar n );
void SPI_WriteByte( uchar wdata );
void SPI_Start(void);
void SPI_Stop(void);
void SPI_Reset(void);
void SPI_Delay(unsigned char);
unsigned int SPI_GetX( void );
unsigned int SPI_GetY( void );
void SPI_Init( void );
#define MEAS 0x00 //测量模式
#define RWTR 0x08 //读写温度数据寄存器
#define STX 0x0E //x通道自检
#define STY 0x0F //Y通道自检
#define RDAX 0x10 //读X通道加速度值
#define RDAY 0x11 //读Y通道加速度值
sbit CLK = P0^7;
sbit MISO = P1^0;
sbit MOSI = P1^1;
sbit CSB = P1^2;
//初始化CSA100T
void init()
{
CSB=1;//CSA100T片选无效
}
//
void SPI_Stop( void ){
CLK = LOW;
CSB = HIGH;
SPI_Delay(10);
}
void SPI_Reset(void){
SPI_Stop();
}
void SPI_Delay(uchar n){
while(n--);
}
void SPI_Start(void){
CLK = LOW;
CSB = LOW;
SPI_Delay(10);
}
//初始化串口
void init_serialcomm( void )
{
SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload
PCON |= 0x80 ; //SMOD=1;
TH1 = 0xF4 ; //Baud:4800 fosc=11.0592MHz
IE |= 0x90 ; //Enable Serial Interrupt
TR1 = 1 ; // timer 1 run
// TI=1;
}
//主机读入一个比特
//结束状态: CLK=0
bit SPI_ReadBit(void){
CLK = HIGH;
SPI_Delay(10);
CLK = LOW;
SPI_Delay(10);
return MISO;
}
//主机读入N个比特
//n 限制为16及其以下
//结束状态 CLK = 0
uint SPI_ReadBits( uchar n ){
uint rtemp,i;
MISO = 1;
for( i = 0 ; i < n ; ++i ){
rtemp <<= 1 ;
SPI_Delay(10);
if( MISO == 1 ){
rtemp |= 0x0001;
}else{
rtemp &= 0xFFFE;
}
CLK = HIGH;
SPI_Delay(10);
CLK = LOW;
SPI_Delay(10);
}
return rtemp;
}
uint SPI_GetX( void ){
uint result;
SPI_Start();
SPI_WriteByte( RDAX );
result = SPI_ReadBits(11);
SPI_Stop();
return result;
}
//主函数
main()
{
EA=0; //关CPU中断
init(); //初始化CSA100T
// init_serialcomm( void );//初始化串口
EA=1; //开CPU中断
EX0=1; //打开外部中断
while(1);
}
void int0() interrupt 0 using 1
{
EX0=0; //关外部中断
CSB=0; //片选有效
_nop_(); //执行空指令延时1.4um
// uchar x;
// x=AD(); //在C程序中调用汇编程序
uint SPI_ReadBits( uchar n );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -