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

📄 r.c

📁 这是一段无线传输的接收端程序
💻 C
字号:
#include <io2313v.h>
#include <macros.h>
#define TX_EN   PD6	
#define CS      PB1
#define PWR     PB0
#define uchar unsigned char 
#define uint unsigned int
uchar buf[2];
uchar r_buf[5];	
uchar Flag_StartRec = 0 ; //开始接受数据标志位
uchar i = 0 ; 
uchar rCount=0;			
void main(void)
{
        DDRB=0Xc3;   //端口设置:PB0,PB1,PB7,PB6为推挽1输出,PB7监测接收,PB6监测数据接收
        PORTB=0xc3;
        DDRD=0X40;   //端口设置:PD6口设置为推挽1输出
        PORTD=0x40;
	ClearR_buf();
	PORTD&=~(1<<TX_EN);					//初始为接收状态
	PORTB|=(1<<PWR);					//正常工作模式
	PORTB&=~(1<<CS);					//选择频道1	
	UCR=UCR|0x18;   
	UBRR=25;	                                     //设置串行口9600波特率
	DelayMs(5);			
	
   while (1) 
     {   
        i=0 ;
        rCount=0;
        Flag_StartRec=0;
        while(i<2)        //接收任意两个连续字节
        { 
        buf[i]=rece_byte();
        i++;
        }
	/* 判断是否为0xaa,0xaa置开始接收标志位*/
	if ((!Flag_StartRec) && (buf[0] == 0xaa)&& (buf[1] == 0xaa))
	{
	Flag_StartRec = 1;	
	}		
	if (Flag_StartRec) //判断标志为是否为1,开始接收数据
	{
	    while(rCount<5)        //接收五个连续数据字节
          {  
            PORTB|=(1<<PB6);
            r_buf[rCount] = rece_byte();
            rCount ++;
            PORTB&=~(1<<PB6);
          } 
	}		
        else
        {
       Clearbuf();
	   ClearR_buf();
        }           
     }

 }

/*****接收数据函数********/
uchar rece_byte(void)
{  
   PORTB|=(1<<PB7);
   while(!(USR&0x80))
   return UDR;
   PORTB&=~(1<<PB7);  //用示波器在PB7腿查看是否有接收数据
}

void Clearbuf(void)
{	
	uchar k ;
	for (k=0;k<2;k--)
	{
		buf[k] = 0;
	}	
}
void ClearR_buf(void)
{	
	uchar k ;
	for (k=0;k<5;k--)
	{
		r_buf[k] = 0;
	}	
}

void DelayMs(uint t)          //毫秒级延时,参数t为延时时间
{
  uchar j;
  for(;t!=0;t--)
    {
	    for(j=8000;j!=0;j--)  {;}
	}
}


⌨️ 快捷键说明

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