/>
data byte SFRPAGE_SAVE;
idata byte status[23];
sbit cs =P2^0;
sbit ss =P2^1;
sbit mosi=P2^2;
sbit sclk=P2^3;
sbit miso=P2^4;
sbit rdy =P2^5;
sbit bint=P2^6;
sbit res =P2^7;
void SYSCLK_Init(void)
{ data int i;
// 延時(shí)計(jì)數(shù)器
SFRPAGE_(tái)SAVE=SFRPAGE;
SFRPAGE=CONFIG_PAGE;
OSCXCN=0x67; // 啟動(dòng)外部22.1184MHz晶振
for(i=0;i<255;i++); // 等待振蕩器啟動(dòng)
while(!(OSCXCN&0x80)); // 等待晶體振蕩器穩(wěn)定
CLKSEL=0x01;
OSCICN=0x00; // 選擇外部振蕩器為系統(tǒng)時(shí)鐘源并使能丟失時(shí)鐘檢測(cè)器
SFRPAGE=SFRPAGE_(tái)SAVE;
}
void PORT_Init(void)
{ SFRPAGE_(tái)SAVE=SFRPAGE;
SFRPAGE=CONFIG_PAGE;
XBR0=0x04; // 使能UART0
XBR1=0x14; // 使能INT0和INT1
XBR2=0x44; // 使能數(shù)據(jù)交叉開關(guān)和弱上拉
P2MDOUT|=0xff; // 允許為推挽輸出
SFRPAGE=SFRPAGE_(tái)SAVE;
}
void spi_begin()
{ mosi=1;
delay(1);
sclk=1;
delay(1);
ss=1;
delay(1);
ss=0;
}
byte spi_send_byte(byte d)
{ idata byte i;
idata byte result=0;
while(!rdy);
mosi=1; miso=1;
for(i=0;i<8;i++)
{ sclk=0;
delay(5);
mosi=(bit)(d&0x80);
d=d<<1;
delay(5);
sclk=1;
delay5
result*=2
if(miso) result++;
}
return(result);
}
void spi_end()
{ mosi=1;
delay(1);
sclk=0;
delay(1);
ss=0;
delay(1);
ss=1;
}
void delay(uint delx)
{ idata uint i=0;
while(i<delx)
{ i++;}
}
main()
{ WDTCN=0xde; // 禁止看門狗定時(shí)器
WDTCN=0xad;
SYSCLK_Init(); // 初始化振蕩器





