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