?? nrf905.c
字號:
#include <at89x52.h>
#include <absacc.h>
#include <intrins.h>
#include <NRF905.h>
void main(void)
{
init();
while(1)
{
outdata();
// delayms(1000);
}
}
void init(void)
{
uchar i;
P1=0x3d; //00111101
P3=0xff;
IE=0x00; //EA=1,ES=1
NUM=0;
CSN=1;
PWR_UP=0;
TXEN=1;
TRX_CE=0;
DOUT=1;
DIN=1;
SPI_write(0x00,0x74);//0x74);
SPI_write(0x01,0x0e);//0x0c);
SPI_write(0x02,0x44);
SPI_write(0x03,0x0c);
SPI_write(0x04,0x0c);
SPI_write(0x05,0xff);
SPI_write(0x06,0xff);
SPI_write(0x07,0x01);
SPI_write(0x08,0x00);
SPI_write(0x09,0xdf);
for(i=0;i<=15;i++)
add[i]=i;
}
void outdata(void)
{
uchar a;
uchar *p1;
NUM++;
//a=SPI_read(0x10);
//a=SPI_read(0x11);
if(NUM<=10)
NUMA=0x00;
if((NUM>10)&&(NUM<=20))
NUMA=0x01;
if((NUM>20)&&(NUM<=30))
NUMA=0x02;
if((NUM>30)&&(NUM<=40))
NUMA=0x03;
if((NUM>40)&&(NUM<=50))
NUMA=0x04;
if((NUM>50)&&(NUM<=150))
NUMA=0x04;
if(NUM>150)
NUMA=0x05;
switch(NUMA)
{
case 0x00: for(a=0;a<12;a++)
add[a]=com_on2[a];
break;
case 0x01: for(a=0;a<12;a++)
add[a]=com_on3[a];
break;
case 0x02: for(a=0;a<12;a++)
add[a]=com_off2[a];
break;
case 0x03: for(a=0;a<12;a++)
add[a]=com_off3[a];
break;
case 0x04: for(a=0;a<12;a++)
add[a]=com_up[a];
break;
case 0x05: for(a=0;a<12;a++)
add[a]=com_down[a];
break;
}
SPI_write4(0x22,0xff,0xff,0xff,0x00);
p1=&add[0];
// SPI_read_some(0x23,p1,4);
SPI_write_some(0x20,p1,12);
// p1=&add[1];
// SPI_read_some(0x21,p1,16);
PWR_UP=1;
TRX_CE=1;
// a=SPI_read(0x10);
// while(!DR);
// delayms(100);
_nop_();
_nop_();
_nop_();
TRX_CE=0;
delayms(100);
// PWR_UP=0;
}
void SPI_write(uchar a,uchar b)
{
SCLK=0;
CSN=0;
write(a);
write(b);
CSN=1;
}
void SPI_write_some(uchar a,uchar *p1,uchar num)
{
uchar b;
SCLK=0;
CSN=0;
write(a);
while(num)
{
b=*p1;
write(b);
p1++;
num--;
}
CSN=1;
}
void SPI_write4(uchar a,uchar b,uchar c,uchar d,uchar e)
{
SCLK=0;
CSN=0;
write(a);
write(b);
write(c);
write(d);
write(e);
CSN=1;
}
void write(uchar a)
{
uchar b,i;
for(i=1;i<=8;i++)
{
b=a&0x80;
if(b==0x80)
DOUT=1;
else
DOUT=0;
SCLK=1;
a<<=1;
_nop_();
SCLK=0;
}
}
SPI_read_some(uchar a,uchar *p1,uchar num)
{
SCLK=0;
CSN=0;
write(a);
while(num)
{
a=read();
*p1=a;
p1++;
num--;
}
CSN=1;
}
uchar SPI_read(uchar a)
{
SCLK=0;
CSN=0;
write(a);
a=read();
CSN=1;
return(a);
}
uchar read(void)
{
uchar i,a=0;
for(i=1;i<=8;i++)
{
a<<=1;
if(DIN==1)
a|=0x01;
SCLK=1;
_nop_();
SCLK=0;
}
return(a);
}
void delayms(uint n)
{
uint b;
while(n>0)
{
for(b=0;b<100;b++);
n--;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -