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

📄 sa485z.c

📁 433.92m无线模块的接收到有效数据后
💻 C
字号:
/////////////////////////////////////////////////////
/////////////////////////////////////////////////////
#include <Reg935.h>
#include <intrins.h>
#include <cewen.h>
#include <I2C.H>
#include <max6675.h>
#include <UART2.H>
////////////////////////////////////////////////////
////////////////////////////////////////////////////
//////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//---------------------------------------------------------------------------------------
//delayms: 在使用内部RC震荡器时延时毫秒子程序
//入口参数: i 延时MS数
//出口参数: (无)
//---------------------------------------------------------------------------------------
void delayms(int i)
{
  unsigned int k;
  while(i>0)
       {
        for(k=0;k<670;k++);
           i--;
       }
}
//---------------------------------------------------------------------------------------
//InitTimer: 初始化系统定时器
//---------------------------------------------------------------------------------------
void InitTimer(void)
{
  AUXR1=0x10; //ENT0=1,允许T0溢出触发输出
  TMOD = 0x12; //TIMER0工作在MODE6,TIMER1工作在MODE1
  TAMOD = 0x01;
  //TH0=0x80; //赋初值
  //TR0=1; //启动定时器0
  ET1=1;
  EA=1;
}
/////////////////////////////////////////////////////////////////////////////////////////
void Init_Serial(void)
{ 
  PCON&=0x3f; /*UART 设置工作方式3,11 位数据*/
  SCON=0xd0;
  SSTAT=0x00;
  BRGCON=0x00; /*装入波特率常数,1200bps*/
  BRGR1=BRGR1_DATA;
  BRGR0=BRGR0_DATA;
  BRGCON=0x03;
  ESR=0; 
}
/////////////////////////////////////////////////////////////////////////////////////////
//初始化CPU——IO口
////////////////////////////////////////////////////////////////////////////////////////
void Init_cpuio(void)
{  P0M1=0x5e; //01011110		//P0.4~p0.1设置为仅为输入状态AD_io//
   P0M2=0xC0; //11000000        //p0.0-key1,p.05-key2//p0.6-RX,p0.7-TX 无线接收发射//
   /////////////////////////////////////////////////////////////////////////////////////
   P1M1=0x3e; //00111110		//P10-RXD,P11-TXD
   P1M2=0xff; //11111111        //P16-LED_RED,LED-GREE
   /////////////////////////////////////////////////////////////////////////////////////
   P2M1=0xef; //11101111		//RFC-P20,SD3-P21,
   P2M2=0xff; //11111111        //SD2-P26,SD1-P27
}
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
void LM75A_Transition(unsigned char *T_dati,unsigned char *T_dat_af)
{unsigned char tdat1=0,tdat2=0;
 uint t;
 tdat1= *T_dati;
 tdat2= *(T_dati+1);
 t=((tdat2&0xe0)>>5)*125;
 *(T_dat_af+2)=t&0x00ff;
 *(T_dat_af+1)=(t&0xff00)>>8;
 ////////////////////////////////////////////////////////
  *T_dat_af=tdat1;
}
///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
/*--------------------------------------------------*/
// main
/*--------------------------------------------------*/
main()
{  
   bit k;
   uchar data MRD[2]={0};
   uchar data MRD_T[3]={0};
   uchar data MRD1[2]={0};
   uchar data MRD1_T[3]={0};
   uchar data ser_dat[60]={0};
   uchar i,j,ki;
   RFC=1;uart2txd=0;
   LED_red=0;
   LED_green=0;
   LED_red=1;
   LED_green=1; 
   InitTimer();
   Init_Serial();
    Init_cpuio();
  /* ADINS=0x20;		    //0000 0001, 选择channel
    ADMODA=0x10;		//0000 0001, 选择转换工作模式:单次转换模式
	ADMODB=0x00; 		//500Khz < ADC CLK < 3.3Mhz,,*/
	k=I2C_Gets(0x48,0,0,MRD,2);
	LM75A_Transition(MRD,MRD_T);
	max6675_Read(MRD1);
	max6675_Transition( MRD1,MRD1_T);
	CTRL485=1;RI=0;
while(1){/*if(key1==0)
           {for(i=0;i<60;i++)
              {ACC=i;
               TB8=P;TI=0;
               SBUF=i;
               while(!TI);
               TI=0; 
              }
            while(key1==0);
           }
          delayms(200);
          LED_red=!LED_red;*/
    for(i=0;i<60;i++) 
       { while(!RI);
         ACC=SBUF;
         if(RB8==P){ser_dat[i]=SBUF;}
         RI=0; 
       }
      delayms(200);
      LED_red=!LED_red;
      uart2txd=0;
      RFC=0;
      delayms(10);
      ser_dat[0]=0x35; ser_dat[1]=0x0d;
      ser_dat[2]=0x01; ser_dat[3]=0x05;
      ser_dat[4]=0x05; ser_dat[5]=0x02;
      ser_dat[6]=0x00; ser_dat[7]=0x00;
      ser_dat[8]=0x01; ser_dat[9]=0x00;
      ser_dat[10]=0x00;ser_dat[11]=0x01;
      ser_dat[12]=0x03;ser_dat[13]=0x08;
      ser_dat[14]=0xd9;ser_dat[15]=0xff;
      for(i=0;i<10;i++)uart2send(0x55);
      for(i=0;i<2;i++)uart2send(0xff);
      for(i=0;i<16;i++)uart2send(ser_dat[i]);
      }     
while(1){
	while(1){
         if(uart2read()==0x55)ki++;
		 else ki=0;
		 if(ki>5)break;}
		 while(1){if(uart2read()==0x00)break;}
	for(i=0;i<60;i++)
        {ser_dat[i]=uart2read();}	
    for(i=0;i<15;i++)
        {if(ser_dat[i]!=0x00&&ser_dat[i]!=0x55)break;}
    for(j=0;j<30;j++)
        {if(ser_dat[j+i]!=(j+1))break;} 
    if(i>8&&j>=29)LED_red=!LED_red;      
    else   LED_green=!LED_green;
    if(i!=9){
    delayms(200);
    }
    delayms(200);
    LED_red=!LED_red;
   }      
while(1){uart2txd=0;
    if(key1==0){for(i=0;i<20;i++)uart2send(0x55);
                for(i=0;i<10;i++)uart2send(0x00);
                for(i=0;i<30;i++)uart2send(i);
                LED_red=!LED_red;}
        }
}

⌨️ 快捷键说明

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