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

📄 jieshou.h

📁 基于MCS-51的无线测温接收显示程序(使用PTR6000模块)
💻 H
字号:
   #define max_rt 0x10
   #define tx_ds  0x20
   #define rx_dr  0x40
   #define flush_tx 0xe1
   #define flush_rx 0xe2
   //端口定义
   sbit  ce=P1^1 ;
   sbit  sck=P1^2 ;
   sbit  miso=P1^3 ;
   sbit  csn=P1^4 ;
   sbit  mosi=P1^5 ;
   sbit  irq=P1^6 ;   //中断int0
   //sbit  led=P1^0; 
 //$$$$$$$$$$$$$$$$$$$$$$$$
   unsigned char data send_date[32]={1};
   unsigned char data receive_date[1];
  //$$$$$$$$$$$$$$$$$$$$$$$
 void write(uchar a)
     {char i;
         for(i=8;i>0;i--)
         {a<<=1;
          mosi=CY;
          sck=1;;sck=0;
         }
     }
 uchar read()
     {char i;uchar a;
      for(i=8;i>0;i--)
        {a<<=1;
         CY=miso;
         sck=1;
         a|=CY;
         sck=0;
         }
     return(a);
     }
 void w_register(uchar addr,uchar com)   //写寄存器
     {sck=0;;csn=0;
      write(addr);
      write(com);
      csn=1;
      }
 uchar r_register(uchar addr)       //读寄存器
      {char date;
       sck=0;;csn=0;
       write(addr);
       date=read();
       csn=1;
       return(date);
       }
  void w_tx()
       {char i;
        sck=0;csn=0;
        write(0xa0);
        for(i=0;i<1;i++)         //写tx_fifo
           write(send_date[i]);
        csn=1;
        }
  void r_rx()
        {char i;
         //unsigned char data receive_date[8];
         sck=0;csn=0;
         write(0x61);
         for(i=0;i<1;i++)
           receive_date[i]=read();
        csn=1;
        }
  void clr_tx()
        {sck=0;csn=0;
         write(flush_tx);
         csn=1;
        }
   void clr_rx()    //一般读完rx_fifo会自动清除,不必调用该函数
        {sck=0;csn=0;
         write(flush_rx);
         csn=1;
        }
 void jieshou()
      {uchar read_data,i;
       //P1=P2=P3=P0=0xff;
	   ce=0;//
       w_register(0x20,0x0b);     //设为接收机
       w_register(0x21,0x01);//设置数据通道0自动应答允许
       w_register(0x22,0x01);//设置接受数据通道0允许
       w_register(0x31,0x01);     //设置数据宽度
       read_data=r_register(0x07);//读状态寄存器
       P0=read_data;//赋值给P0口
       w_register(0x27,r_register(0x07));  //清中断
       read_data=r_register(0x07);
	   ce=1;
       for(i=0;i<15;i++);//延时
       while(irq);      //无中断时继续
       ce=0;
       read_data=r_register(0x07);
       w_register(0x27,read_data);  //清中断
       /*switch(read_data&0xf0)       //判断中断信号屏蔽低字节
            {case max_rt:while(1);
             case rx_dr :r_rx();break;
             case tx_ds :clr_tx();break;
             default: while(1);
            }*/
       }

⌨️ 快捷键说明

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