|
/* MAIN.C file
*
* Copyright (c) 2002-2005 STMicroelectronics
*/
#include <STM8S103F.h>
//#include <STM8S903K.h>
#include "COMM.h"
unsigned char FreqID =7;
unsigned char bSend=0;
unsigned char timeout=0;
/*初始化IO*/
void port_init()
{
//DDR寄存器設(shè)置方向 0輸入 1輸出
//PC3 PC4 PC6 PC7 PD2輸出PC5 PD3輸入
PC_DDR =0xD8;
PC_CR1 =0xD8;//推挽輸出,PC5懸空輸入
PC_CR2=0x00;
//PC_ODR=0XD8;
PA_DDR=0XFF;
PA_CR1=0XFF;
PA_CR2=0;
//PB4 PB5輸出,PB4控制LED
PB_DDR =0xFF;
PB_CR1= 0xFF;
PB_CR2=0;
//PB_ODR=0XFF;
//PD2 YB30 SDI PD3 YB30 SDO PD4接外部P1蜂鳴器
PD_DDR = 0x14;
PD_CR1=0x14;
PD_CR2=0;
//其他IO 左邊 P1 到P4 設(shè)置 成輸入,右邊P5到P8設(shè)置成輸出
}
volatile unsigned char a=0;
/************************************************************************************
PC5中斷函數(shù),無線接收中斷
*************************************************************************************/
@far @interrupt void YB30INT (void)
{
unsigned char dd,rsi;
int i=0;
PC_CR2=0x00; //關(guān)PC中斷
if (bSend==1)
P5=1; //發(fā)送有中斷,點LED
//CC_Idle();//新加測試 PA模塊 老的和新的。
dd=CC_RdStatus(0x35); //讀狀態(tài)寄存器
if (dd==17) CC_ClrRx(); //清除接收緩沖區(qū)和接收錯誤相關(guān)標(biāo)志
if (dd==22) CC_ClrTx(); //清除發(fā)送緩沖區(qū)和發(fā)送錯誤相關(guān)標(biāo)志
dd=CC_RdStatus(0x3B)&0x7f;//CCxxx0_RXBYTES 讀數(shù)據(jù)長度
if (dd==0)//V1.1 ?-ê?if (bSendOk==0) 長度 0
{
CC_RxOn();// 進入接收狀態(tài)
TX=0;RX=1;
}
else //長度不為0
{
SerData[0]=0;
CC_RdPacket(); //讀數(shù)據(jù)包
CC_RxOn();
if ((bRcvOk==1)&&(SerData[0]<62))
{
//復(fù)制數(shù)據(jù),用于在主程序里顯示和修改,SerData 用來在RF中斷里判斷
//memcpy(RFData,SerData,SerData[0]);
//xieyi_panduan();//解析協(xié)議
bRcvOk=0;
rsi = CC_RssiCh(Rssi);
//if ((bSend==0)&&(rsi<58)) //26 CC2500+PA 67
if (SerData[0]==10)
P5=1;
timeout=0;
}
}
//PC_CR2=0x20; //開PC5中斷
}
void TXtest(void)
{
unsigned char n=0;
///發(fā)射的
P5=0;
CC_Init();
CC_Chan(227);
Delay_ms(20);
//如果是CC2500+PA+LNA 模塊,把開關(guān)打到接收這邊
RX=0;TX=1;
Delay_ms(5);
bSend =1;
PC_CR2=0X0;
CC_SendPacket(SerData,10);
while(!nIRQ)
{
if (n++>10)
break;
Delay_ms(2);
};
while(nIRQ)
{
if (n++>10)
break;
Delay_ms(2);
};
//發(fā)成功了,開關(guān)不接上
RX=0;TX=0;
//PC_CR2=0X20;
P5=1;
}
void RXtest(void)
{
//如果是2500+PA+LNA 模塊,把開關(guān)打到接收這邊來;
TX=0;RX=1;
//接收的
PC_CR2=0X20;
CC_RxOn();
Delay_ms(10);
//while(!nIRQ);
//while(nIRQ);
//CC_RdPacket();
// if (SerData[0]==5)
// P5=1;
//PC_CR2=0X20;
if (timeout++>3)
{
P5=0;
CC_Init(); //初始化無線 模塊
P5=0;
//CC_Test();
CC_Chan(227); //設(shè)置頻道
Delay_ms(1);
CC_RxOn();// Enable RX.
PC_CR2=0x20;
//EXTI_CR2=0x02;//下降沿觸發(fā)
EXTI_CR1=0x20;
P5=0;
}
}
void main()
{
unsigned char i=0;
_asm("sim"); // 關(guān)全局中斷
// CLK_CKDIVR=0x00; //16M
// WDTCON = 0X00; // 看門狗設(shè)置
//CLK_ICKR = 0X07; // 使用內(nèi)部晶振, 8M crystal
port_init(); // IO 口初始化
//P5=1;//點LED
TX=0;
RX=1;
RX=0;
TX=1;
//Delay_ms(255);
//P5=0;
nSEL=0;
nSEL=1;
nSEL=0;
RF433_CS_UP;
RF433_CS_DN;
RF433_SPCK_UP;
RF433_SPCK_DN;
//#define RF433_MISO ((AT91F_PIO_GetInput(AT91C_BASE_PIOA)& (AT91C_PIO_PA27))==(AT91C_PIO_PA27))//0x00010000
RF433_MOSI_UP;
RF433_MOSI_DN;
//TestSI4432();
CC_Init(); //初始化無線 模塊
CC_Test();
CC_Chan(227); //設(shè)置頻道
Delay_ms(10);
CC_RxOn();// Enable RX.
TX=0;RX=1;
//while(1);
PC_CR2=0x20;
EXTI_CR2=0x02;//下降沿觸發(fā)
// EXTI_CR1=0x20;
//PC_CR2=0x10;//PC5中斷懸浮輸入
//EXTI_CR1=0x10;
//EXTI_CR1=0xff;//下降沿觸發(fā) PC口
//EXTI_CR2=0x02;//下降沿觸發(fā)
P5=0;//關(guān)LED
_asm("rim");
// TXtest();
//CC_Idle();
while(1)
{
TXtest();
//CC_Cmd(0x33);
//CC_Idle();
//RXtest();
Delay_ms(50);
P5=0;
bSend =0;
}
}
void Delay_us(int t)
{
while(t--)
{
_asm("nop");
_asm("nop");
_asm("nop");
_asm("nop");
_asm("nop");
_asm("nop");
_asm("nop");
_asm("nop");
_asm("nop");
_asm("nop");
}
}
void Delay_ms(unsigned char time)
{
unsigned char i,k;
for(k = 0; k< time; k++)
{
for(i = 0; i<130; i++)
{
_asm("nop");
_asm("nop");
}
}
}
|
-
-
CC2500-stm8.rar
2018-4-25 10:20 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
126.24 KB, 下載次數(shù): 15, 下載積分: 黑幣 -5
評分
-
查看全部評分
|