⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 原创的无线模块nRF401发送/接收代码,用飞思卡尔的mc9s12dp256和mc9s12dt128实现收发,调试成功,内有模块连线图和详细代码注释
💻 C
字号:
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dp256.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dp256b"

#define TXE PORTA_BIT0
#define PWR PORTA_BIT1
#define CS PORTA_BIT2

#define SCIRxE SCI0CR2_RE			//SCI 接收控制位
#define SCITxE SCI0CR2_TE			//SCI 发送控制位

void iniVal(void);
void delay(void);
void delay_long(void);
void ini_SCI(void);
void SCI_TX(byte *data,
            word num);

byte g_data[9];

void iniVal(void)
{
    DDRA = 0xFF;
    PORTA = 0x00;
    DDRS = 0xFF;
    PTS = 0x00; 
}

void delay(void)
{
    word i;
    for (i=0; i<20000; i++);
}

void delay_long(void)
{
    word a,b;
    for (a=0; a<60000; a++)
        for (b=0; b<10; b++);    
}

void ini_SCI(void)
{
  	SCI0BDH = 0x00;
  	SCI0BDL = 0x34;
  	//19200 -0x1A; 
  	//9600 - 0x34;
  	//4800 - 0x68;
  	//2400 - 0xD0
  	//1200 - 0x01A1
  	SCI0CR1 = 0x00;			    	//normal模式
  	SCIRxE = 0;				        //接收不使能
  	SCITxE = 1;						//发送使能
}

/*
** ###################################################################
**
**     SCI串口发送程序(发送数据,发送长度)
**
** ###################################################################
*/
void SCI_TX(byte *data,
            word num)
{
    word i;
    for(i=0; i<num; i++)
    { 		
 	    while(0 == SCI0SR1_TDRE);	  	//等待发送缓冲区空
 	    SCI0DRL = *(data+i);			//向发送缓冲区写入待发送数据
    }
    while(0 == SCI0SR1_TC);        	//等待发送结束

}

/*
** ###################################################################
**
**     SCI串口发送程序(一个字节)
**
** ###################################################################
*/
void SCI_TX_Byte(byte data)
{
 
    while(0 == SCI0SR1_TDRE);
    SCI0DRL = data;      
    while(0 == SCI0SR1_TC);

}

void ini_nRF401(void)
{
    TXE = 0;     // 上电前为接收状态
    PWR = 1;     // 上电
    delay_long();// delay > 3ms
    CS = 0;      // 载波频率为433MHZ
    TXE = 1;     // 转为发射状态
    delay_long();// delay > 1ms 即可        
}

void main(void) {
  /* put your own code here */
  
  iniVal();
  ini_SCI();
  ini_nRF401();
  PTS = 0xFF;
  
  g_data[0] = 0x55;
  g_data[1] = 0x55;
  g_data[2] = 0xAA;
  g_data[3] = 0xAA;
  g_data[4] = 4;
  g_data[5] = 5;
  g_data[6] = 6;
  g_data[7] = 7;
  g_data[8] = 8;
  
  for(;;) {
      SCI_TX(g_data,9);
      delay_long();
      delay_long();
      PTS = ~PTS;
  } /* wait forever */
  /* please make sure that you never leave this function */
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -