最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

大蝦幫我看看讀寫(xiě)24lc64的程序吧

作者:boyong21ic 欄目:單片機(jī)
大蝦幫我看看讀寫(xiě)24LC64的程序吧
小弟寫(xiě)了一個(gè)meag128讀寫(xiě)24LC64的程序,可在寫(xiě)數(shù)據(jù)時(shí)就過(guò)不去了,問(wèn)題出在meag128檢測(cè)不到21lc64發(fā)送的應(yīng)答,因此也不知道數(shù)據(jù)是否寫(xiě)進(jìn)去了,讀出來(lái)的數(shù)據(jù)就更不知對(duì)錯(cuò)了,請(qǐng)大蝦們幫我看看吧,小弟先謝了,這個(gè)程序已經(jīng)折騰我好幾天了。程序?qū)懙貌缓,?jiàn)笑了

//對(duì)SDA、SCL操作的宏定義
#define    SDA_SET     DDRD=DDRD|0x02;sbi(PORTD,1);Delay(5)
#define    SDA_CLR     DDRD=DDRD|0x02;cbi(PORTD,1);Delay(5)
#define    SCL_SET     DDRD=DDRD|0x01;sbi(PORTD,0);Delay(5)
#define    SCL_CLR     DDRD=DDRD|0x01;cbi(PORTD,0);Delay(5)

//定義全局變量
unsigned CHAR ErrFlag=0;
unsigned CHAR Sourcecode[]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99};
unsigned CHAR Destcode[]={0};

void StartSignal(void)                   //開(kāi)始信號(hào)         
{
    SDA_SET;
    SCL_SET;
    SDA_CLR;
    SCL_CLR;
}

void StopSignal(void)                   //停止信號(hào)          
{
    SDA_CLR;
    SCL_SET;
    SDA_SET;
    SCL_CLR;
}

void SendAck(void)                      //發(fā)送應(yīng)答
{
    SDA_CLR;
    SCL_SET;
    SCL_CLR;
}

void SendNAck(void)                    
{
    SDA_SET;
    SCL_SET;
    SCL_CLR;
}
                
unsigned CHAR CheckAck(void)      //檢查應(yīng)答
{                   

    unsigned int ErrTime=3000;           
    unsigned CHAR i=0;
    DDRD=DDRD&0xfd;    
    SCL_SET;
    while(PIND&0x02)
    {
        ErrTime--;
        if(!ErrTime)        
        {
            i=0;                     
            SCL_CLR;                      
            return i;
        }
    }
    SCL_CLR;
    i=1;
    return i;
}

void  Delay(unsigned int i)                        
{
    unsigned CHAR j;
    while(i--)
    {
        for(j=0;j<10;j++);
    }
}

void WriteCode(unsigned CHAR Command,unsigned CHAR Haddr,unsigned CHAR Laddr,unsigned CHAR *p)
{
    unsigned CHAR i,ok=0;
    unsigned CHAR a[3];
    unsigned CHAR CodeLength;
    unsigned CHAR k=0;

    a[0]=Command;
    a[1]=Haddr;
    a[2]=Laddr;
    p=Sourcecode;
    CodeLength = 9;        //要寫(xiě)入的數(shù)據(jù)長(zhǎng)度

    do
    {
        StartSignal();    //發(fā)起始信號(hào)
        for(i=0;i<3;i++)    //寫(xiě)命令和地址
        {
            Write1Byte(a[i]);
            ok=CheckAck();
            SetCursor(12*i,1);
            lcd_printhex(&a[i],0,1);
            if(!ok)
            {
                ErrFlag=1;
                cbi(PORTF,3);    //置錯(cuò)誤燈                break;
            }
            else
                ErrFlag=0;
        }
    }while(ErrFlag);

    
    if(!ErrFlag)    //如無(wú)應(yīng)答位
    {
        for(k=0;k<CodeLength;k++,p++)    
        {
            Write1Byte(*p);
            ok=CheckAck();
            if(!ok)
            {
                ErrFlag=1;
                cbi(PORTF,3);    //置錯(cuò)誤燈
                break;
            }
        }
    }
    else
    {
        cbi(PORTF,3);        //置錯(cuò)誤燈
        ErrFlag=1;
    }

    StopSignal();
}

void Write1Byte(unsigned CHAR data)
{
    unsigned CHAR k;
    DDRD=DDRD|0x03;       
2樓: >>參與討論
yh21ic
去下一個(gè)吧,有例程的
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)問(wèn)老耿:在工控儀表上使用哪種AVR??
MEGA8的最小系統(tǒng)是什么樣的?
在成都哪能買(mǎi)到ATMEGA?
請(qǐng)問(wèn)老耿:AVR如何擴(kuò)展外存嗎??
關(guān)于CVARV的UART。。。。。。。
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào)