91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 10KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-01
  • 語言: 其他
  • 標簽: si4431??

資源簡介

si4431 無線模塊之間通信程序 STC單片機模擬SPI通信,測試正常,可以參考

資源截圖

代碼片段和文件信息

//?Demo?程序適用范圍:?Si4431?Si4432?Si4431PA
//?RF?模塊的參數設置為:?FSK,??433.92MHz,?1.2KBPS,?+/-10PPM?頻偏:30KHz,?調制帶寬:61.2KHz?
// 使能AFC,使能CRC,?PH?+?FIFO?模式
//?每秒鐘發射的固定測試數據為:?0x410x420x430x440x450x460x470x480x490x6d?
//??????????????????????????????0x6d?=?(0x41?+0x42?+0x43?+0x44?+0x45?+0x46?+0x47?+?0x48?+0x49)
//?MCU?:?Microchip?high?performance?8?bit?MCU?:PIC16F689

#include
#include


const?unsigned?char?tx_test_data[10]?=?{0x410x420x430x440x450x460x470x480x490x6d};??//?每秒發射的固定內容的測試信號,第10個數據是前9個數據的校驗和



#define?SI4432_PWRSTATE_READY 01 //?模塊?Ready?狀態定義
#define?SI4432_PWRSTATE_TX 0x09 //?模塊?發射狀態定義
#define?SI4432_PWRSTATE_RX 05 //?模塊?接收狀態定義
#define?SI4432_PACKET_SENT_INTERRUPT 04 //?模塊?發射完成中斷
#define?SI4432_Rx_packet_received_interrupt???0x02??????//?模塊?收到數據包中斷

#define??TX1_RX0 spi_rw(0x0e|0x80?0x01) //?發射狀態的天線開關定義
#define??TX0_RX1 spi_rw(0x0e|0x80?0x02) //?接收狀態的天線開關定義
#define??TX0_RX0 spi_rw(0x0e|0x80?0x00)?????????//?非發射,接收狀態的天線開關定義



#define??nIRQ??????????? RC0 //?MCU?輸入口
#define??SDO ????????? RC1 //?MCU?輸入口
#define??nSEL RC2 //?MCU?輸出口
#define??SDI??????????? RC3 //?MCU?輸出口
#define??SCK RC4 //?MCU?輸出口
#define??SDN RC5 //?MCU?輸出口

#define?nIRQ_set TRISC0 //?設置IO口的輸入,數出的寄存器
#define?SDO_set TRISC1 //?設置IO口的輸入,數出的寄存器
#define?nSEL_set TRISC2 //?設置IO口的輸入,數出的寄存器
#define?SDI_set TRISC3 //?設置IO口的輸入,數出的寄存器
#define?SCK_set TRISC4 //?設置IO口的輸入,數出的寄存器
#define?SDN_set TRISC5 //?設置IO口的輸入,數出的寄存器


#define?INPUT 1
#define?OUTPUT 0

unsigned?char?count_50hz;

unsigned?char?ItStatus1?ItStatus2;
unsigned?char?rf_timeout;

unsigned?char?rx_buf[15];


typedef?struct?
{

unsigned?char?reach_1s :?1;
unsigned?char?rf_reach_timeout :?1;
unsigned?char?is_tx :?1;


} FlagType;

FlagType ????????????????Flag;



void?rx_data(void);

void?tx_data(void);

unsigned?char?spi_byte(unsigned?char?data);
unsigned?char?spi_rw(unsigned?char?addr?unsigned?char?data);

void?SI4432_init(void);

void?delay_1ms(unsigned?char?time);

void?port_init(void);?

void?timer_init(void);

void?main()
{?


unsigned?char??i?j?chksum;

OSCCON?=?0X70; //?使用內部晶振,?8M?crystal

WDTCON?=?0X00;??//?看門狗設置


port_init();?? //?IO?口初始化
?
?
? SDN?=?1;
? delay_1ms(10); //?RF?模塊復位
?
? SDN?=?0;
? delay_1ms(200); //?延時150ms?RF?模塊進入工作狀態
?
?
? SI4432_init();??//?RF?模塊初始化
?
? TX0_RX0; //?天線開關不在發射,接收狀態
?

timer_init();

count_50hz?=?0;
Flag.reach_1s?=?0;

INTCON?=?0xc0;???//?enable?interrupt


while(1)
{
if(Flag.reach_1s)
{
Flag.reach_1s?=?0;
tx_data(); //?每間隔一段時間,發射一包數據,并接收?Acknowledge?信號
}
if(!Flag.is_tx)
{
if(!nIRQ)
{?
ItStatus1?=?spi_rw(0x030x00); //?清中斷 //read?the?Interrupt?Status1?register
ItStatus2?=?spi_rw(0x040x00); //?清中斷

SCK?=?0;
nSEL?=?0;
spi_byte(0x7f); //?從緩沖區讀數據
for(i?=?0;i<10;i++)
{

評論

共有 條評論

相關資源