日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]// 93C46讀寫(xiě)程序,8位數(shù)據(jù)格式#include sbit CS_93C46=P2^7; sbit SK_93C46=P2^6; sbit DI_93C46=P2^5; sbit DO_93C46=P2^4;unsigned char RD_93C46_byte(unsigned char addr); // 讀93c46內(nèi)部指定地址的1個(gè)字節(jié)

// 93C46讀寫(xiě)程序,8位數(shù)據(jù)格式

#include

sbit CS_93C46=P2^7;
sbit SK_93C46=P2^6;
sbit DI_93C46=P2^5;
sbit DO_93C46=P2^4;

unsigned char RD_93C46_byte(unsigned char addr); // 讀93c46內(nèi)部指定地址的1個(gè)字節(jié)數(shù)據(jù)
void WR_93C46_byte(unsigned char addr,unsigned char dat); // 向93c46內(nèi)部指定地址寫(xiě)1個(gè)字節(jié)數(shù)據(jù)
void EWEN_93C46(void); // 擦寫(xiě)允許
void EWDS_93C46(void); // 擦寫(xiě)禁止
void ERASE_93C46(unsigned char addr);// 擦除指定地址的數(shù)據(jù)
void delaynms(unsigned char k); // ms延時(shí)
void leddisplay(); // 數(shù)碼管顯示
unsigned char code tab[]={0xb7,0x12,0x67,0x76,0xd2,0xf4,0xf5,0x16,0xf7,0xf6,0xd7,0xf1,0xa5,0x73,0xe5,0xc5,0,0xff};
//共陰極代碼 0-F, 全滅,全亮
unsigned char ledxs[8]={16,16,16,16,16,0,0,0}; // 數(shù)碼管顯示緩沖區(qū)

void main()
{
unsigned char temp;
delaynms(200);
leddisplay();
delaynms(200);delaynms(200);delaynms(200);

WR_93C46_byte(0x01,123);
temp=RD_93C46_byte(0x01);
ledxs[7]=temp%10;
ledxs[6]=(temp/10)%10;
ledxs[5]=temp/100;
leddisplay();
while(1);

}
//--------------------------------------------------------------------
// 讀93c46內(nèi)部指定地址的1個(gè)字節(jié)數(shù)據(jù)
//--------------------------------------------------------------------
unsigned char RD_93C46_byte(unsigned char addr)
{
unsigned char dat=0,i;
SK_93C46=0;
CS_93C46=0;
CS_93C46=1;

DI_93C46=1;SK_93C46=1;SK_93C46=0;
DI_93C46=1;SK_93C46=1;SK_93C46=0;
DI_93C46=0;SK_93C46=1;SK_93C46=0; // 讀數(shù)據(jù)指令:110

for(i=0;i<7;i++) // 寫(xiě)7位地址
{
addr<<=1;
if((addr&0x80)==0x80)
DI_93C46=1;
else
DI_93C46=0;
SK_93C46=1;
SK_93C46=0;
}

DO_93C46=1; // DO=1,為讀取做準(zhǔn)備

for(i=0;i<8;i++) // 讀8位數(shù)據(jù)
{
dat<<=1;
SK_93C46=1;
if(DO_93C46) dat+=1;
SK_93C46=0;
}
CS_93C46=0;
return(dat);
}
//---------------------------------------------------------------------------------
// 向93c46內(nèi)部指定地址寫(xiě)1個(gè)字節(jié)數(shù)據(jù)
//---------------------------------------------------------------------------------
void WR_93C46_byte(unsigned char addr,unsigned char dat)
{
unsigned char i;
EWEN_93C46(); // 擦寫(xiě)允許

CS_93C46=0;
SK_93C46=0;
CS_93C46=1;

DI_93C46=1;SK_93C46=1;SK_93C46=0;
DI_93C46=0;SK_93C46=1;SK_93C46=0;
DI_93C46=1;SK_93C46=1;SK_93C46=0; // 寫(xiě)數(shù)據(jù)指令:101

for(i=0;i<7;i++) // 寫(xiě)7位地址
{
addr<<=1;
if((addr&0x80)==0x80)
DI_93C46=1;
else
DI_93C46=0;
SK_93C46=1;
SK_93C46=0;
}

for(i=0;i<8;i++) // 寫(xiě)8位數(shù)據(jù)
{
if((dat&0x80)==0x80)
DI_93C46=1;
else
DI_93C46=0;
SK_93C46=1;
SK_93C46=0;
dat<<=1;
}
CS_93C46=0;
DO_93C46=1;
CS_93C46=1;
while(DO_93C46==0); // 檢測(cè)忙閑
SK_93C46=0;
CS_93C46=0;
EWDS_93C46(); // 擦寫(xiě)禁止

}
//----------------------------------------------------------------------------
// 擦寫(xiě)允許,指令格式:100 地址:11xxxxx (7位)
//----------------------------------------------------------------------------
void EWEN_93C46(void)
{
unsigned char i,addr;
CS_93C46=0;
SK_93C46=0;
CS_93C46=1;

DI_93C46=1;SK_93C46=1;SK_93C46=0;
DI_93C46=0;SK_93C46=1;SK_93C46=0;
DI_93C46=0;SK_93C46=1;SK_93C46=0; // 100

addr=0x7f; // 01111111B
for(i=0;i<7;i++) // 寫(xiě)7位地址 11xxxxx
{
addr<<=1;
if((addr&0x80)==0x80)
DI_93C46=1;
else
DI_93C46=0;
SK_93C46=1;
SK_93C46=0;
}
CS_93C46=0;
}
//-----------------------------------------------------------------------------
// 擦寫(xiě)禁止,指令格式:100 地址:00xxxxx (7位)
//-----------------------------------------------------------------------------
void EWDS_93C46(void)
{
unsigned char i,addr;
CS_93C46=0;
SK_93C46=0;
CS_93C46=1;

DI_93C46=1;SK_93C46=1;SK_93C46=0;
DI_93C46=0;SK_93C46=1;SK_93C46=0;
DI_93C46=0;SK_93C46=1;SK_93C46=0; // 100

addr=0x00; // 00000000B
for(i=0;i<7;i++) // 寫(xiě)7位地址 00xxxxx
{
addr<<=1;
if((addr&0x80)==0x80)
DI_93C46=1;
else
DI_93C46=0;
SK_93C46=1;
SK_93C46=0;
}
CS_93C46=0;
}

//------------------------------------

//串行數(shù)碼管顯示

//------------------------------------

void leddisplay()
{
unsigned char i;
for(i=0;i<8;i++)
{
SBUF=tab[ledxs[i]];
while(TI==0);
TI=0;
}
}

//---------------------------------------------------------------

//延時(shí) n ms

//---------------------------------------------------------------
void delaynms(unsigned char k)
{
while(k)
{
int i;
i=110;
while(i--);
k=k-1;
}
}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉