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

📄 fasong.h

📁 基于MC-S89c51单片机无线测温发送程序(PTR6000PA模块)
💻 H
字号:
#define max_rt 0x10
   #define tx_ds  0x20
   #define rx_dr  0x40
   #define flush_tx 0xe1
   #define flush_rx 0xe2
   sbit     ce=P2^1;
   sbit     sck=P2^2;
   sbit     miso=P2^3;
   sbit     csn=P2^4;
   sbit     mosi=P2^5;
   sbit     irq=P2^6;
  // sbit     key=P1^1;
  //$$$$$$$$$$$$$$$$$$$$$$$$
   unsigned int data send_date[1]={0x18};
   unsigned int 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;
         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 fasong()
      {uchar i,read_data=0;
       ce=0;//不发射???
       //P1=P2=P3=P0=0xff;
       w_register(0x20,0x0a);     //设为发射机
       read_data=r_register(0x00);//读配置寄存器
     if(read_data!=0x0a)goto wait;//若没上电或不是发射状态则停止
       w_register(0x21,0x01);	//设置数据通道0自动应答允许
       w_register(0x22,0x01);	//设置接受数据通道0允许
       w_register(0x31,0x01);     //设置数据宽度为一个字节
       read_data=r_register(0x07);//读状态寄存器
       w_register(0x27,read_data);  //写状态寄存器,当中断置一后,再写入一次1就会清中断
       read_data=0;//清零
       w_tx();//写发射寄存器
       ce=1;//开始发射
       while(irq);//没有中断时继续,有中断时停止
       read_data=r_register(0x07);//读状态寄存器
	   P1=read_data;//赋值给P1
       i=r_register(0x07);//读状态寄存器
       w_register(0x27,read_data);  //清中断
       /*       switch(i&0xf0)       //判断中断信号屏蔽低字节
            {case 0x10:while(1);break;
             case 0x20 :r_rx();break;
            case 0x40 :clr_tx();break;
             default: break;
            } */
       wait:while(1);
      }

⌨️ 快捷键说明

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