📄 x5045.c
字号:
#include "config.h"
UCHAR ReceByte(void)
{
UCHAR i,n;
SET_READ_X5045;
n = 0;
for(i = 0; i < 8; i++)
{
n = n << 1;
SET_X5045CLK_LOW;
if(READ_X5045DATA) n |= 1;
SET_X5045CLK_HIGH;
}
return n;
}//UCHAR ReceByte(void)
void SendByte(UCHAR n)
{
unsigned char i;
SET_WRITE_X5045;
for(i = 0; i < 8; i++)
{
SET_X5045CLK_LOW;
if(n & 0x80) SET_X5045DATA_HIGH; else SET_X5045DATA_LOW;
n = n << 1;
SET_X5045CLK_HIGH;
}
}//void SendByte(UCHAR n)
void WaitWriteEnd(void)
{
UCHAR n;
long wait;
wait = 0x600000;
do
{
wait--;
SET_X5045CLK_LOW;
SET_X5045CS_LOW;
SendByte(0x05);
n = 0x01 & ReceByte();
SET_X5045CS_HIGH;
}while((n == 1) && (wait > 0));
}//void WaitWriteEnd(void)
UCHAR ReadUchar(WORD addr)
{
UCHAR dat;
SET_X5045WP_HIGH;
SET_X5045CLK_LOW;
SET_X5045CS_LOW;
if(addr < 256) SendByte(0x03); else SendByte(0x0b);
SendByte(addr);
dat = ReceByte();
SET_X5045CS_HIGH;
SET_X5045WP_LOW;
return dat;
}//UCHAR ReadUchar(WORD addr)
WORD ReadWord(WORD addr)
{
WORD dat;
SET_X5045WP_HIGH;
SET_X5045CLK_LOW;
SET_X5045CS_LOW;
if(addr < 256) SendByte(0x03); else SendByte(0x0b);
SendByte(addr);
dat = ReceByte();
dat += (ReceByte() << 8);
SET_X5045CS_HIGH;
SET_X5045WP_LOW;
return dat;
}//WORD ReadWord(WORD addr, UCHAR page)
void WriteUchar(WORD addr, UCHAR dat)
{
SET_X5045WP_HIGH;
SET_X5045CLK_LOW;
SET_X5045CS_LOW;
SendByte(0x06);
SET_X5045CS_HIGH;
SET_X5045CLK_LOW;
SET_X5045CS_LOW;
if(addr < 256) SendByte(0x02); else SendByte(0x0a);
SendByte(addr & 0xff);
SendByte(dat);
SET_X5045CS_HIGH;
WaitWriteEnd();
SET_X5045WP_LOW;
}//void WriteUchar(WORD addr, UCHAR dat)
void WriteWord(WORD addr, WORD dat)
{
SET_X5045WP_HIGH;
SET_X5045CLK_LOW;
SET_X5045CS_LOW;
SendByte(0x06);
SET_X5045CS_HIGH;
SET_X5045CLK_LOW;
SET_X5045CS_LOW;
if(addr < 256) SendByte(0x02); else SendByte(0x0a);
SendByte(addr & 0xff);
SendByte(dat & 0xff);
SendByte((dat >> 8) & 0xff);
SET_X5045CS_HIGH;
WaitWriteEnd();
SET_X5045WP_LOW;
}//void WriteWord(WORD addr, WORD dat)
void WriteStatReg(UCHAR dat)
{
SET_X5045WP_HIGH;
SET_X5045CLK_LOW;
SET_X5045CS_LOW;
SendByte(0x06);
SET_X5045CS_HIGH;
SET_X5045CLK_LOW;
SET_X5045CS_LOW;
SendByte(0x01);
SendByte(dat);
SET_X5045CS_HIGH;
WaitWriteEnd();
SET_X5045WP_LOW;
}//void WriteStatReg(UCHAR dat)
void WatchDog(void)
{
SET_X5045CS_LOW;
SET_X5045CS_HIGH;
}//void WatchDog(void)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -