×
单片机 > 单片机程序设计 > 详情

pic单片机控制cc1101实现loral无线传输的源程序

发布时间:2020-08-21 发布时间:
|

单片机源程序如下:

#include

__CONFIG(0x3B31);

#include "board.h"

/* MAIN.C file

*

* Copyright (c) 2002-2005 STMicroelectronics

*/

//#include "OLED.h"

/*typedef unsigned char  INT8U;

typedef signed   char  INT8S;

typedef unsigned int   INT16U;

typedef signed   int   INT16S;

typedef unsigned long  INT32U;

typedef signed   long  INT32S;*/

void delay_ms(INT32U x);

INT8U c,d;

void main( void )

{

    INT8U txBuffer[10] = {1,2,3,4,5,6,7,8,9,10 }, rxBuffer[5];

        INT32U x;

        INT8U testbuffer[10] = {"00000"};

        INT16U tx_couter = 0, itmp;


        SPI_Initial( );

        //GPIO_Initial( );

        //初始化状态检测IO口,使用查询方式

        /*PORTB |= ( 1<<6 ) | ( 1<<7 );

        DDRB &= ~( ( 1<<6 ) | ( 1<<7 ) );*/

    //RB1=1;RB2=1;

    TRISB1=1;

    TRISB2=1;


        //初始化LED状态

        //LED_On( );        


        /*LCD_Init( );

        LCD_Dis_Logo( );

        LCD_Dis_Str( 2,24,"AVR  board" );

    LCD_Dis_Str( 4,0,"yhmcu.taobao.com" );

    LCD_Dis_Str( 6,0,"CC1101:TX " );

    LCD_Dis_Str( 6, 80, (char*)testbuffer );*/

                

    //initialize CC1101

        CC1101Init( ); //LED_Off( );

    CC1101SetTRMode( TX_MODE );

        while( 1 )

        {

             CC1101SetTRMode( TX_MODE );

                //delay some time

                for( x = 0; x < 10000; x ++ );

                 //发送数据包,每发送一次,LED闪烁一次

                CC1101SendPacket( txBuffer,10, ADDRESS_CHECK );

            CC1101SetTRMode( RX_MODE );

        delay_ms(50);

        c++;

                x = 10000;

                while( GET_GDO0( ) != 0 )

                {

                        if( x ) { x--; }

                        else  { break; }

                }

                if( x != 0 )

                {

                        while( GET_GDO0( ) == 0 );

                        if( CC1101RecPacket( rxBuffer ) == 5 )

                        {

                                //已经收到应答数据

                                //LED_Toggle( );

                        /*        tx_couter ++;

                itmp = tx_couter;

                testbuffer[0] = ( itmp / 10000 ) + '0';

                itmp %= 10000;

                testbuffer[1] = ( itmp / 1000 ) + '0';

                itmp %= 1000;

                testbuffer[2] = ( itmp / 100 ) + '0';

                itmp %= 100;

                testbuffer[3] = ( itmp / 10 ) + '0';

                itmp %= 10;

                testbuffer[4] = itmp + '0';

                testbuffer[5] = 0;*/

                //LCD_Dis_Str( 6, 80, (char*)testbuffer );

                 d=1;

                        }

                        else

                        {

                                d=2;//未收到应答数据,添加代码

                        }

                }

                else  

                {                                

                    //LED_On( );

            d=3;

……………………




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多