?? 4.2.4.c
字號(hào):
#include<reg51.h>
#define uchar unsigned char
#define High 1 //定義高電平
#define Low 0 //定義高電平
#define READ_D 0x0C //讀指令
#define WRITE_D 0x0A //寫指令
#define ERASE_D 0x0E //擦除指令
#define EN_D 0x09 //擦/寫允許指令
#define EN_RD 0x80
sbit CS=0x90; //CS為P1.0
sbit SK=0x91; //SK為P1.1
sbit DI=0x92; //DI為P1.2
sbit DO=0x93; //DO為P1.3
/*********************************延時(shí)函數(shù)*********************************/
void delay(uchar n)
{
uchar i;
for(i=0;i>n;i++);
}
/*********************************時(shí)鐘函數(shù)*********************************/
void i_clock(void)
{
SK=Low;
delay(1);
SK=High;
delay(1);
}
/********************************輸入函數(shù)**********************************/
//輸入一個(gè)字節(jié)的數(shù)據(jù)到AT93C66中
void send(uchar i_data)
{
uchar i;
for(i=0;i<8;i++)
{
DI=(bit)(i_data&0x80);
i_data<<=1;
i_clock();
}
}
/********************************接收函數(shù)**********************************/
//從AT93C66接收1個(gè)字節(jié)的數(shù)據(jù)
uchar receive(void)
{
uchar i_data=0;
uchar j;
i_clock();
for(j=0;j<8;j++)
{
i_data*=2;
if(DO)i_data++;
i_clock();
delay(2);
}
return(i_data);
}
/**********************************讀操作函數(shù)********************************/
//發(fā)送讀指令和地址,從AT93C66指定的地址中讀取數(shù)據(jù)
uchar read(uchar addr)
{
uchar data_r;
CS=1; //片選
send(READ_D); //送讀指令
send(addr); //送地址
data_r=receive(); //接收數(shù)據(jù)
CS=0;
return(data_r);
}
/****************************擦寫允許操作函數(shù)******************************/
void enable(void)
{
CS=1;
send(EN_D); //送使能指令
send(EN_RD);
CS=0;
}
/*****************************擦除操作函數(shù)********************************/
//擦除AT93C66中指定地址的數(shù)據(jù)
void erase(uchar addr)
{
DO=1;
CS=1;
send(ERASE_D); //送擦除指令
send(addr);
CS=0;
delay(4);
CS=1;
while(!DO); //等待擦除完畢
CS=0;
}
/*********************************寫操作函數(shù)*********************************/
//將一個(gè)字節(jié)數(shù)據(jù)寫入AT93C66指定的地址中
void wirite(uchar addr)
{
enable(); //擦寫允許
erase(addr); //寫數(shù)據(jù)前擦除同樣地址的數(shù)據(jù)
CS=1;
send(WRITE_D); //送寫指令
send(addr); //送地址
CS=0;
delay(4);
CS=1;
delay(4);
while(!DO); //等待寫完
CS=0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -