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

📄 max.c

📁 单片机数据通讯典型应用(光盘内容)
💻 C
字号:
#include <reg51.h>
sbit DIN=P0^0;	  //MAX3100 SPI写入端口
sbit DOUT=P0^1;	  //MAX3100 SPI读取端口
sbit DCLK=P0^2;	  //MAX3100 SPI时钟端口
sbit CS=P0^3;	  //MAX3100 片选
#define ushort unsigned short;
#define uchar unsigned char;
void MAX3100_write(ushort dat);
ushort MAX3100_read();
void MAX3100_init();
void trans_data(uchar ch);
uchar receive_data();  
//寄存器写函数,向MAX3100写入16位数据。
void MAX3100_write(ushort dat)
{
   uchar i=16;
   CS=0;
   for(;i>0;i--)
   {
	 DCLK=0;
	 DCLK=1;
	 if(dat&0x8000)
	 	DIN=0;
	 else
		DIN=1;
	 dat=dat<<1;
	 //sh_cp=1;
   }
   CS=1;
}
//寄存器读函数,从MAX3100中读出16位数据
ushort MAX3100_read()
{
   uchar i=16;
   ushort rdata=0x0000;
   bool rbit=0;
   CS=0;
   for(;i>0;i--)
   {
	 DCLK=0;
	 DCLK=1;
     rbit=DOUT;
	 rdata=rdata|rbit;
	 rdata=rdata<<1;
	 //sh_cp=1;
   }
   CS=1;
   return rdata;
}
//MAX3100初始化
void MAX3100_init()
{
  MAX3100_write(0xC08B);// 初始MAX3100, 使能FIFO,  
                        // MAX3100保持在工作状态,关闭收发中断     
                        // 红外模式,1位停止位,8位数据位,波特率为4800,  
                        //晶振选用1.8432MHZ
}
//发送数据
void trans_data(uchar ch)
{
  ushort tmp=0x8000;//发送命令;
  tmp=tmp|ch;       //合并数据
  MAX3100_write(tmp);//发送数据
}
//接收数据
uchar receive_data();
{
   MAX3100_write(0x0000);//写入读数据命令;
   ushort rdata= MAX3100_read(); //从MAX3100读取数据
   unchar tmp=0xFF;
   tmp=tmp&rdata;//获取数据
   return tmp;

}
void main()
{
    MAX3100_init();//MAX3100初始化
  	while(1)
	{
	  trans_data(80);//发送数据
	  uchar d=receive_data()//接收数据	
	}
}

⌨️ 快捷键说明

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