機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
pic16f877a對(duì)24c01的讀寫程序
pic16f877a對(duì)24c01的讀寫程序
 更新時(shí)間:2009-12-12 10:56:18  點(diǎn)擊數(shù):0
【字體: 字體顏色

#i nclude<pic.h>
#i nclude<string.h>
#define uchar  unsigned char
#define uint   unsigned int

static volatile unsigned char acc @ 0x20;            //發(fā)收數(shù)據(jù)暫存器
static volatile bit acc0     @ (unsigned)&acc*8+0;   //接收
static volatile bit acc7     @ (unsigned)&acc*8+7;   //發(fā)送
static volatile unsigned char err @ 0x21;            //
static volatile bit err0     @ (unsigned)&err*8+0;
static volatile bit err3     @ (unsigned)&err*8+3;
static volatile bit err6     @ (unsigned)&err*8+6;
static volatile bit err7     @ (unsigned)&err*8+7;   //應(yīng)答位暫存位

void  Cack();        //應(yīng)答位檢查
void  Mnack();       //發(fā)送非應(yīng)答位
void  Mack();        //發(fā)送應(yīng)答位
void  Stop();        //停止IC總線
void  Sta();        //啟動(dòng)IC總線
void  Wrbyt (uchar x) ;     //寫一字節(jié)
      uchar Rdbyt( );      //讀一字節(jié)
void  Rdnbyt ();       //讀n個(gè)數(shù)據(jù)
void  Wrnbyt(uchar SLAwtemp );   //寫n個(gè)數(shù)據(jù)
void initial();       //I/O初始化子程序
void LED ();      //
void delay(uint a);
void delay1();


#define  SCL  RB4 //4  ;24C01-6
#define  SDA  RB5 //5  ;24C01-5
#define  SCLIO  TRISB4 //4
#define  SDAIO  TRISB5 //5
#define  SLAW   0x0A0//尋址字節(jié)寫
#define  SLAR   0x0A1//尋址字節(jié)讀
uchar numer=1;  //數(shù)碼管數(shù)據(jù)暫存區(qū)


unsigned char sun[10] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

//////////////24C01/////////////////
//--------應(yīng)答位檢查---------
void  Cack()
{
SCL=1;
SDAIO=1;//輸入1
SCLIO=0;
delay1();
err7=SDA;//c=1錯(cuò)誤ERR
SCL=0;
}
///--------發(fā)送非應(yīng)答位----------
void  Mnack()
{
 SDA=1;
 SCLIO=0;
 SDAIO=0;//輸出
 SCL=1;
 delay1();
 SCL=0;
 SDA=0;
}
//-------發(fā)送應(yīng)答位---------------
void  Mack()
{
SDA=0;
SCLIO=0;
SDAIO=0;//輸出
SCL=1;
delay1();
SCL=0;
SDA=1;
}
//--------停止IC總線---------------
void  Stop()
{
 SDAIO=0;//輸出
 SCLIO=0;
 SDA=0;
 delay1();
 SCL=1;
 delay1();
 SDA=1;
 delay1();
}
//--------;啟動(dòng)IC總線-------------
void  Sta()
{
SDAIO=0;//輸出
SCLIO=0;
SDA=1;
delay1();
SCL=1;
delay1();
SDA=0;
delay1();
SCL=0;
}
//--------寫一字節(jié)------------------------
void  Wrbyt(uchar x)
{
uchar i;
acc=x;
SCLIO=0;
SDAIO=0;
for(i=8;i>0;i--)
{
 SDA=acc7;
 SCL=1;
 delay1();
 SCL=0;
 SDA=0;
 acc=acc<<1;
 }
}
//---------讀一字節(jié)-----------------
uchar   Rdbyt( )
{
uchar i;
SCLIO=0;
SDAIO=1;//;輸入
for(i=8;i>0;i--)
 {
 acc=acc<<1;//接收數(shù)據(jù)左移寄存器
 SCL=1;
 delay1();
 acc0=SDA;
 SCL=0;
 delay1();
 }
 return(acc);
}
////---------讀n個(gè)數(shù)據(jù)----------------
void  Rdnbyt () //傳送數(shù)據(jù)個(gè)
{
 Sta(); //啟動(dòng)IC總線
 delay1();
 numer = Rdbyt();///讀一字節(jié)
 delay1();
 Stop(); //停止IC總線
}
//---------寫n個(gè)數(shù)據(jù)---------------
void  Wrnbyt(uchar SLAwtemp )
{

 err7=1;
 if(err7==1)///c=1E0,ERR
 {
 Sta(); //啟動(dòng)IC總線
 delay1();
 Wrbyt(SLAwtemp); //寫一字節(jié)
 delay1();
 Cack();//應(yīng)答位檢查-
 }
 delay1();
 while(err7==1);
 Stop(); //停止IC總線
}

//*************************************//
//系統(tǒng) 各I/O初始化子程序
void initial()
{
 TRISC=0;
 TRISA=0;
 TRISB1=1;
 TRISB2=1;
}

//LED

void LED ()
{
PORTA=0X1f;
PORTC=sun[numer];
}

void delay(uint a)
{
uint b=100;
while(a--)
{
 while(b--);
}
}

void delay1()
{
NOP();
NOP();
NOP();
NOP();
}

void main()
{
initial();//系統(tǒng) 各I/O初始化子程序
LED();
delay(100);
Wrnbyt (SLAW);//尋址字節(jié)寫#0A0
delay1();
Wrnbyt (0x05);//寫地址0x05
delay1();
Wrnbyt (0x06);//寫數(shù)據(jù)0x06
delay1();
Wrnbyt (SLAR);//尋址字節(jié)讀#0A1
delay1();
Wrnbyt (0x05);//讀地址0x05
delay1();
Rdnbyt (); //讀數(shù)據(jù)
delay(5);
while(1)
{LED();}
}

  • 上一篇: PIC16C71PIC16C84單片機(jī)應(yīng)用中問題和對(duì)策
  • 下一篇: 沒有了
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1