?? 新增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 + -