📄 max.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 + -