📄 ptr6000.h
字号:
#include<MSP430X21X1.H>
#define uchar unsigned char
#define uint unsigned int
/**************************定义DS18B20********************************/
#define DS18B20_DIR P2DIR
#define DS18B20_IN P2IN
#define DS18B20_OUT P2OUT
#define DS18B20_DQ BIT5 //定义DS18B20的接口
unsigned int nn=0;
unsigned int seconds=0;
// DS18B20 ROM命令宏定义
#define ReadRom 0x33
#define MatchRom 0x55
#define SearchRom 0xf0
#define AlertSearch 0xec
#define CopyScratchpad 0x48
#define SkipRom 0xcc
#define ReadPower 0xb4
// DS18B20 功能命令宏定义
#define ConvertTemperature 0x44
#define ReadScratchpad 0xbe
#define WriteScratchpad 0x4e
#define RecallE 0xb8
const unsigned int tal8[]=
{
0,94,188,226,97,63,221,131,
194,156,126,32,163,253,31,65,
157,195,33,127,252,162,64,30,
95,1,227,189,62,96,130,220,
35,125,159,193,66,28,254,160,
225,191,93,3,128,222,60,98,
190,224,2,92,223,129,99,61,
124,34,192,158,29,67,161,255,
70,24,250,164,39,121,155,197,
132,218,56,102,229,187,89,7,
219,133,103,57,186,228,6,88,
25,71,165,251,120,38,196,154,
101,59,217,135,4,90,184,230,
167,249,27,69,198,152,122,36,
248,166,68,26,153,199,37,123,
58,100,134,216,91,5,231,185,
140,210,48,110,237,179,81,15,
78,16,242,172,47,113,147,205,
17,79,173,243,112,46,204,146,
211,141,111,49,178,236,14,80,
175,241,19,77,206,144,114,44,
109,51,209,143,12,82,176,238,
50,108,142,208,83,13,239,177,
240,174,76,18,145,207,45,115,
202,148,118,40,171,245,23,73,
8,86,180,234,105,55,213,139,
87,9,235,181,54,104,138,212,
149,203,41,119,244,170,72,22,
233,183,85,11,136,214,52,106,
43,117,151,201,74,20,246,168,
116,42,200,150,21,75,169,247,
182,232,10,84,215,137,107,53
};
/******************定义射频模块***************************************/
#define si BIT1
#define max_rt 0x10
#define tx_ds 0x20
#define rx_dr 0x40
#define flush_tx 0xe1
#define flush_rx 0xe2
extern unsigned char read_shuju=0;
extern unsigned char addr_wd=0x03; //地址宽度
//addr_wd=0x00; 无效
//addr_wd=0x01; 3个字节宽度
//addr_wd=0x02; 4个字节宽度
//addr_wd=0x03; 5个字节宽度
unsigned char sent_addr[5]={0x34,0x43,0x10,0x10,0x01}; //发送地址
unsigned char recive_addr[5]={0x34,0x43,0x10,0x10,0x01}; //接收地址
//$$$$$$$$$$$$$$$$$$$$$$$$
unsigned int send_date_width=16; //发送数据长度
unsigned int send_date[16]={0x07,0x0b,0x0d,0x0e,0x07,
0x07,0x0b,0x0d,0x0e,0x07,
0x07,0x0b,0x0d,0x0e,0x07,
0x07}; //发送的数据
unsigned int receive_date_width=16; //接收数据长度
unsigned char receive_date[16]={0xaa,0xbb,0xcc,0xdd,0xee,0xff} ; //接收数据缓冲区
/*****************************************************************************/
//函数定义
void Init_Port(void);
void write(uchar b);
uchar read(void);
void w_register(uchar addr,uchar com);
uchar r_register(uchar addr);
void w_tx(void);
void r_rx(void);
void clr_tx(void);
void clr_rx(void);
void ce_High(void)
{
//P2.0管脚输出为高电平
P2OUT |= BIT3;
_NOP();
_NOP();
return;
}
void ce_Low(void)
{
//P2.0管脚输出为低电平
P2OUT &= ~(BIT3);
_NOP();
_NOP();
return;
}
void csn_High(void)
{
//P2.1管脚输出为高电平
P2OUT |= BIT2;
_NOP();
_NOP();
return;
}
void csn_Low(void)
{
//P2.1管脚输出为低电平
P2OUT &= ~(BIT2);
_NOP();
_NOP();
return;
}
void mo_High(void)
{
//P1.2管脚输出为高电平
P1OUT |= BIT2;
_NOP();
_NOP();
return;
}
void mo_Low(void)
{
//P1.2管脚输出为低电平
P1OUT &= ~(BIT2);
_NOP();
_NOP();
return;
}
void sck_High(void)
{
//P1.3管脚输出为高电平
P1OUT |= BIT3;
_NOP();
_NOP();
return;
}
void sck_Low(void)
{
//P1.3管脚输出为低电平
P1OUT &= ~(BIT3);
_NOP();
_NOP();
return;
}
void Init_Port(void)
{
P1SEL &= ~BIT0;
P1SEL &= ~BIT1;
P1SEL &= ~BIT2;
P1SEL &= ~BIT3;
P2DIR |= BIT3; //CE //输出方向
P2DIR |= BIT2; //CSN
P1DIR |= BIT2; //MOSI
P1DIR |= BIT3; //SCK
P1DIR &= ~BIT0; //IRQ //输入方向
P1DIR &= ~BIT1; //MISO //输入方向
P1OUT |= BIT2; //MOSI //输出高电平
P1OUT |= BIT3; //SCK //
P2OUT |= BIT3; //CE //
P2OUT |= BIT2; //CSN //
return;
}
void write(uchar b) //高位在前,低位在后
{char i,j;
for(i=0;i<8;i++)
{
if((b&0x80)==0x80)
{
mo_High();
}
else
{
mo_Low();
}
//for (j=10;j>0;j--);//延迟一段时间
sck_High();
for (j=10;j>0;j--);//延迟一段时间
sck_Low();
b<<=1;
}
}
uchar read(void)
{
uchar i,j,a=0;
for(i = 0;i < 8;i++)
{
if(P1IN & si)
{
a |= (0x01 << (7-i));
}
sck_High();
for(j = 10;j > 0;j--);
sck_Low();
}
return(a);
}
void w_register(uchar addr,uchar com) //写寄存器
{
sck_Low();
csn_Low();
write(addr);
write(com);
csn_High();
}
uchar r_register(uchar addr) //读寄存器
{
uchar date;
sck_Low();
csn_Low();
write(addr);
date=read();
csn_High();
return(date);
}
void w_tx(void)
{uchar i;
sck_Low();
csn_Low();
write(0xa0);
for(i=0;i<send_date_width;i++) //写tx_fifo
write(send_date[i]);
csn_High();
}
void r_rx(void)
{uchar i;
sck_Low();
csn_Low();
write(0x61);
for(i=0;i<receive_date_width;i++)
receive_date[i]=read();
csn_High();
}
void clr_tx(void)
{
sck_Low();
csn_Low();
write(flush_tx);
csn_High();
}
void clr_rx(void) //一般读完rx_fifo会自动清除,不必调用该函数
{
sck_Low();
csn_Low();
write(flush_rx);
csn_High();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -