📄 新增ram.c
字号:
#include <reg51.h>
#include <absacc.h>
#include <math.h>
#define unchar unsigned char
#define unint unsigned int
#define B8255PORTA XBYTE[0x5000]
#define B8255C XBYTE[0x5003]
#define READ 0xa1
#define WRITE 0xa0
sbit scl = P1^4;
sbit sda = P1^5;
sbit wp = P1^2;
void delayus(unchar data us) /*12M晶振下10us延时*/
{ unchar idata i;
while(us)
{ us--;i=1;i--;
while(i){} }
}
///////////////////////////////////////////////////////////////////////////////////
void delayms(unchar data MS) /*延时程序,12M晶振时单位为毫秒*/
{
unchar idata us,usn;
while(MS!=0)
{ usn = 4;
while(usn!=0)
{
us=0xf0;
while (us!=0){us--;};
usn--;
}
MS--;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void speaker()
{
B8255PORTA |=0x10;
delayms(20);
B8255PORTA &=0xef;
}
void e2pjdg()
{
unchar i;
scl = 0;
//delayus(1);
sda =1;
scl =1;
while(sda);
scl =0;
}
void e2psend(unchar temp)
{
unchar i=8;
while(i--)
{
scl = 0;
sda = temp&0x80;
temp<<=1;
scl = 1;
}
}
void e2padd(unchar addh,unchar addl)
{
start();
e2psend(WRITE);
e2pjdg();
e2psend(addh);
e2pjdg();
e2psend(addl);
e2pjdg();
}
unchar e2pread()
{
unchar i=8,temp=0;
while(i--)
{
scl = 0;
sda = 1;
temp<<=1;
scl = 1;
if(sda) temp+=1;
}
return(temp);
}
start()
{
// scl = 0;
sda = 1; //start
scl = 1;
sda = 0;
// scl = 0;
}
stop()
{
sda = 0;
scl = 1;
sda = 1; //start
}
main()
{
unchar i;
unchar idata t[8];
B8255C = 0x80;
B8255PORTA = 0x20;
speaker();
wp = 0;
i=2;
e2padd(0x01,0x05);
while(i--)
{
e2psend(0x55); //写数据
e2pjdg();
}
stop();
delayms(10);
start();
e2padd(0x01,0x05);
start();
e2psend(READ);
e2pjdg();
i=1;
while(i--)
{
t[i] = e2pread();
if(i) e2pjdg();
}
stop();
while(1)
{}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -