?? chang_x5045.c
字號:
#include"reg51.h"
#include"intrins.h"
#define uchar unsigned char
#define WREN 0x06 //允許寫指令
#define WRDI 0x04 //禁止寫指令
#define RSDR 0x05 //讀狀態(tài)寄存器
#define WRSR 0x01 //寫狀態(tài)寄存器
sbit SCK = P2^0; //
sbit SI = P2^1; //輸入端
sbit SO = P2^2; //輸出端
sbit CS = P2^3; //用于片選 /CS
bit SendData(uchar SData){ //數(shù)據(jù)輸入
uchar Cnt;
for(Cnt = 0;Cnt < 8;Cnt ++){
SCK = 0; //上升沿有效
SData <<= 1;
SI = CY;
SCK = 1;
}
}
uchar RecData(){ //數(shù)據(jù)輸出
uchar Cnt;
uchar ReadData = 0;
for(Cnt = 0;Cnt < 8;Cnt ++){
SCK = 1;
SCK = 0; //下降沿有效
ReadData <<= 1;
if(SO){
ReadData |= 0x01;
}
else{
ReadData &= 0xfe;
}
}
return (ReadData);
}
void FeedDog()
{
CS = 1;
_nop_();
_nop_();
CS = 0;
}
bit WriteEnable(void){ //寫允許
CS = 0;
SendData(WREN); //發(fā)送寫允許指令
CS = 1;
CS = 0;
}
bit Writedisable(void){
SendData(WRDI); //發(fā)送寫禁止指令
}
void Wipchk()
{
unsigned char Dat;
do
{
CS = 1;
CS = 0;
SendData(0x05);
Dat&=0x01;
CS = 1;
}
while(Dat);
}
bit WriteStatus(uchar Status){
WriteEnable();
SendData(WRSR); //發(fā)送寫狀態(tài)寄存器指令
CS = 1;
CS = 0;
SendData(Status);
CS = 1;
}
uchar ReadStatus(void){
uchar RData;
CS = 0;
SendData(RSDR); //發(fā)送讀狀態(tài)寄存器指令
RData = RecData();
CS = 1;
return(RData);
}
bit WriteData(uchar Address,uchar Data,bit Flag){/*1 - 上片£?0 - 下片*/
WriteEnable();
if(Flag)
SendData(0x0a);
else
SendData(0x02);
SendData(Address);
SendData(Data);
CS = 1;
Wipchk();
}
uchar ReadData(uchar Address,bit Flag){
uchar RData;
CS = 0;
if(Flag)
SendData(0x0b);
else
SendData(0x03);
SendData(Address);
RData = RecData();
_nop_();
CS = 1;
return(RData);
}
main(){
uchar Temp;
Temp = ReadData(0,1);
while(Temp & 0x01){
Temp = ReadStatus();
}
_nop_();
WriteData(0,0x79,1);
Temp = ReadData(0,1);
_nop_();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -