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