?? 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 + -