//---------------------------------------------------------------------------
#include <intrins.h>
#include "STC12C5410AD.h"
#include "wireless.h"
unsigned char paTable[] = {0xC0};// 0dbm
unsigned char paTableLen = 1;
//unsigned char wirles_rx_buff_tmp[10] = {0x0A,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x01};
//unsigned char wirles_rx_buff_tmp[11] = {0x0A,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A};
//unsigned char wirles_rx_buff_tmp[10] = {0x08,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
//unsigned char wirles_rx_buff_tmp[3]={0x00,0x00,0x00};
//unsigned char wirles_tx_buff_tmp[3]={0x00,0x00,0x00};
unsigned char wirles_rx_buff_tmp[6]={0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char wirles_tx_buff_tmp[6]={0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char Uart_tx_buff_temp[4] ={0x00,0x00,0x00,0x00};
unsigned char Uart_rx_buff_temp[4]={0x00,0x00,0x00,0x00};
//unsigned char wirles_tx_answer[6]={0x05,0x01,0xFF,0x55,0x00,0x00};
unsigned char wirles_rx_answer[6]={0x05,0x01,0xFF,0x55,0x00,0x00};
unsigned char Device_Mac=0x00; //que6.24 CMU给设备分配的MAC地址,每来一个自增一个,因01为CMU节点的地址,所以从02开始
unsigned char Device_Pattern; //6.24 设备类型
unsigned char ch,i;
unsigned char Buf_Temp;
unsigned char Frame_Sequence_after;
unsigned char Frame_Sequence_before;
unsigned char *length;
unsigned char len;
unsigned char Wireless_Flag;
unsigned int Delay_Timer;
unsigned int Poll_Timer=0;
unsigned int Uart_delay_Timer;
unsigned char LED_Count;
unsigned char Relay_Flag=1;
unsigned char Wireless_Send_Flag=0;
unsigned char Uart_Flag;
unsigned char Uart_Count=0;
unsigned char Serial_Send_Flag=0;
unsigned char Serial_Buffer;
unsigned char have_returned_flag=0; //超时标志
unsigned char have_uartrecevie_flag=0;
unsigned char wirless_need_to_send;
sbit SS = P1^4;
sbit MOSI = P1^5;
sbit MISO = P1^6;
sbit SCLK = P1^7;
sbit GDO0 = P3^3;
sbit LED1 = P1^3;
sbit LED2 = P1^1;
sbit LED3 = P1^0;
sbit LED4 = P3^7;
void Clock_Init ( void )
{
AUXR |= 0x40;
}
/****************************************************************************
* Function: Port_Init
* Description: Port Init
* Calls:
* Called By: NA
* Input: NA
* Output: NA
* Return: NA
***************************************************************************/
void Port_Init ( void )
{
//P1M0 = 0x01;
//P1M1 = 0x01;
P1M1 |= 0x0b;
P3M1 |= 0x80;
}
/****************************************************************************
* Function: WatchDog_Init
* Description: WatchDog Init
* Calls:
* Called By: NA
* Input: NA
* Output: NA
* Return: NA
***************************************************************************/
void WatchDog_Init ( void )
{
WDT_CONTR = 0x00; //不使能看门狗 liao
}
/****************************************************************************
* Function: INT_Init
* Description: INT Init
* Calls:
* Called By: NA
* Input: NA
* Output: NA
* Return: NA
***************************************************************************/
void INT_Init ( void )
{
// IE = 0;
//IT0 = 0; // low level trigger external interrupt
//IT0 = 1; // falling eage trigger external interrupt
//EX0 = 1; //external interrupt enable
IT1 = 1; // low level trigger external interrupt
//IT1 = 1; // falling eage trigger external interrupt
EX1 = 1; //external interrupt enable
EA = 1; // gloable interrupt enable
}
/****************************************************************************
* Function: Uart_Init
* Description: Uart_Init
* Calls:
* Called By: NA
* Input: NA
* Output: NA
* Return: NA
***************************************************************************/
void Uart_Init(void)
{
SCON = 0x50;
PCON = 0x00;
TMOD = 0x21;
TH1 = 0xF5;
TL1 = 0xF5;//BF-9600 F5-57600
TF1 = 0;
TR1 = 1;
ES = 1;
//ES = 1;//enable Uart interrupt
//TI = 1;// Uart interrupt
}
void Uart_Send (unsigned char *str, unsigned char strlen)
{
unsigned char m = 0;
do
{
SBUF = *(str + m);
while(!TI);
TI = 0;
m ++;
}
while (m < strlen);
}
void SendChar(unsigned char chr)
{
SBUF=chr;
while(!TI);
TI = 0;
}
/**/
void Uart_ISR (void) interrupt 4
{
/* EA = 0;
if(RI)
{
RI = 0;
Buf_Temp = SBUF;
//Uart_Flag=1;
Uart_rx_buff_temp[Uart_Count]=SBUF;
Uart_Count++;
if(Uart_Count==4) ////////6.24 que 应用层4个数据接收和发送 “目的MAC+类型+操作码+参数”
{
Uart_Count = 0;
Uart_Flag = 1;
}
}
EA = 1;
*/
EA = 0;
if(RI)
{
RI = 0;
if(Uart_delay_Timer<2) //que 8.11
{
Buf_Temp = SBUF;
Uart_rx_buff_temp[Uart_Count]=SBUF;
Uart_Count++;
if(Uart_Count==4) ////////6.24 que 应用层4个数据接收和发送 “目的MAC+类型+操作码+参数”
{
Uart_Count = 0;
Uart_Flag = 1;
}
Uart_delay_Timer=0;
}
else
{
Uart_Count = 0;
Buf_Temp = SBUF;
Uart_rx_buff_temp[Uart_Count]=SBUF;
Uart_Count++;
Uart_delay_Timer=0;
}
}
EA = 1;
}
/****************************************************************************
* Function: Spi_Init
* Description: Spi Init
* Calls:
* Called By: NA
* Input: NA
* Output: NA
* Return: NA
***************************************************************************/
void Spi_Init ( void )
{
//SPCTL = 0xDC;// Master mode,MSB trans first,SPI enable,CLK/4
SPCTL = 0xD1;
SPSTAT = 0xC0;
//EADC_SPI = 1;//enable SPI interrupt
//m_sRcvPos = 0;
//m_sSndLen = 0;
//m_sSndPos = 0;
}
/****************************************************************************
* Function: Adc_Init
* Description: Adc Init
* Calls:
* Called By: NA
* Input: NA
* Output: NA
* Return: NA
***************************************************************************/
//void Adc_Init ( void )
//{
// ADC_CONTR = 0x60; //Disable ADC,choose P1.0 as AD input,Disable ADC POWER
//}
/****************************************************************************
* Function: System_Init
* Description: System Init
* Calls:
* Called By: NA
* Input: NA
* Output: NA
* Return: NA
***************************************************************************/
void Timer0_Init(void)//2ms定时器
{
TH0=0xF9;
TL0=0x7D;
ET0=1;
TR0=1;
}
void System_Init ( void )
{
Clock_Init();
WatchDog_Init();
Port_Init();
Uart_Init();
Spi_Init();
INT_Init ();
Timer0_Init();
//Adc_Init(); //liao
}
/*
void Delayus(unsigned int dly)
{
unsigned int i;
for(; dly>0; dly--)
for(i=0; i<5000; i++)
{
;
}
_nop_();
}
*/
void TI_CC_Wait(unsigned int cycles)
{
while(cycles>15) // 15 cycles consumed by overhead
cycles = cycles - 6; // 6 cycles consumed each iteration
}
void TI_CC_PowerupResetCCxxxx(void)
{
SS = 1; //片选 liao CC1100 P17page
TI_CC_Wait(300);
SS = 0; //关片选 liao //反反复复干什么?
TI_CC_Wait(300);
SS = 1;
TI_CC_Wait(450);
SS = 0; //片选是0低有效还是高有效
while ( MISO );// Wait for CCxxx0 ready //等待准备好 liao
SPDAT = TI_CCxxx0_SRES; //往数据寄存器放数据 liao //重起芯片?
while ( !(SPSTAT & 0x80) );// Wait for TX to finish //等待发送完成,状态位置高
SPSTAT |=0x80; //write "1" to clear Tx Wireless_Flag //清标志 liao
while ( MISO );// Wait for CCxxx0 ready //等待cc2500准备好??
SS = 1;
}
void TI_CC_SPIWriteReg(unsigned char addr, unsigned char value)
{
SS = 0;// CS enable
while ( MISO );// Wait for CCxxx0 ready
SPDAT = addr;
w
STC EEPROM操作实例
需积分: 10 143 浏览量
2009-09-05
20:52:33
上传
评论
收藏 58KB RAR 举报
queqiongjie
- 粉丝: 0
- 资源: 5
最新资源
- kernel-ml-6.8.8-1.el7.elrepo.x86-64.rpm
- Labview基本框架之状态机
- HM2309B-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- Git安全实践:保护你的代码仓库个人学习笔记.md
- 自动驾驶定位系列教程九:后端优化.pdf
- 三国志5威力加强版-windows
- HM2309A-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- HM2306-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- Git进阶技巧:提升团队协作效率个人学习笔记.md
- 自动驾驶定位系列教程八:建图系统结构优化.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈