📄 chang_x5045.c
字号:
#include"reg51.h"
#include"intrins.h"
#define uchar unsigned char
#define WREN 0x06 //允许写指令
#define WRDI 0x04 //禁止写指令
#define RSDR 0x05 //读状态寄存器
#define WRSR 0x01 //写状态寄存器
sbit SCK = P2^0; //
sbit SI = P2^1; //输入端
sbit SO = P2^2; //输出端
sbit CS = P2^3; //用于片选 /CS
bit SendData(uchar SData){ //数据输入
uchar Cnt;
for(Cnt = 0;Cnt < 8;Cnt ++){
SCK = 0; //上升沿有效
SData <<= 1;
SI = CY;
SCK = 1;
}
}
uchar RecData(){ //数据输出
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); //发送写允许指令
CS = 1;
CS = 0;
}
bit Writedisable(void){
SendData(WRDI); //发送写禁止指令
}
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); //发送写状态寄存器指令
CS = 1;
CS = 0;
SendData(Status);
CS = 1;
}
uchar ReadStatus(void){
uchar RData;
CS = 0;
SendData(RSDR); //发送读状态寄存器指令
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 + -