在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 通過(guò)MSP430的IO口模擬I2C總線(xiàn)對(duì)AT24C25進(jìn)行讀寫(xiě)程序

            通過(guò)MSP430的IO口模擬I2C總線(xiàn)對(duì)AT24C25進(jìn)行讀寫(xiě)程序

            作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏


            unsigned char EEPROM_ByteWrite(unsigned int addr,unsigned char data)
            {
            unsigned char Dev_addr; //設(shè)備地址
            unsigned char AddrLow;
            unsigned char AddrHigh;
            AddrLow = (unsigned char)addr;
            AddrHigh = (unsigned char)(addr>>8);
            Dev_addr = 0xa0|(AddrHigh<<1);
            i2c_start();
            i2c_SendByte(Dev_addr);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            i2c_SendByte(AddrHigh);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            i2c_SendByte(AddrLow);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            i2c_SendByte(data);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            i2c_stop();
            i2c_delay_ms(10);
            return 0;
            }

            unsigned char EEPROM_RandomRead(unsigned int addr)
            {
            unsigned char Dev_addr; //設(shè)備地址
            unsigned char AddrLow;
            unsigned char AddrHigh;
            unsigned char tmp;
            AddrLow = (unsigned char)addr;
            AddrHigh = (unsigned char)(addr>>8);
            Dev_addr = 0xa0|(AddrHigh<<1);
            i2c_start();
            i2c_SendByte(Dev_addr);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            i2c_delay_ms(5);
            i2c_SendByte(AddrHigh);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            i2c_SendByte(AddrLow);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            i2c_delay_ms(5);
            i2c_start();
            Dev_addr = 0xa1|(AddrHigh<<1);
            i2c_SendByte(Dev_addr);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            i2c_delay_ms(5);
            tmp = i2c_RevByte();
            i2c_SendNoAck();
            i2c_stop();
            i2c_delay(100);
            return tmp;
            }

            本文引用地址:http://www.biyoush.com/article/201611/322430.htm


            unsigned int EEPROM_PageWrite(unsigned int page,unsigned char* p,unsigned char n)
            {
            unsigned char Dev_addr;
            unsigned char AddrLow;
            unsigned char AddrHigh;
            unsigned int tmp;
            if((n > 64)|(page > 512)) //根據(jù)讀寫(xiě)的設(shè)備而變更為適合的頁(yè)數(shù)和每頁(yè)字節(jié)數(shù)
            {
            return OutOfRang;
            }
            tmp = ((unsigned int)page) << 6; //得出頁(yè)首地址
            AddrLow = (unsigned char)tmp;
            AddrHigh = (unsigned char)(tmp>>8);
            Dev_addr = 0xa0 | (AddrHigh << 1);
            i2c_start();
            i2c_SendByte(Dev_addr);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            i2c_delay_ms(5);
            i2c_SendByte(AddrHigh);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            i2c_SendByte(AddrLow);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            while(n--)
            {
            i2c_SendByte(*p++);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            }
            i2c_stop();
            i2c_delay_ms(10);
            return 0;
            }

            unsigned char EEPROM_SequentialRead(unsigned int addr,unsigned int n,unsigned char* p)
            {
            unsigned char Dev_addr; //設(shè)備地址
            unsigned char AddrLow;
            unsigned char AddrHigh;
            if(n > (32768 - addr)) //檢查預(yù)寫(xiě)入地址是否有效
            {
            return OutOfAddr;
            }
            AddrLow = (unsigned char)addr;
            AddrHigh = (unsigned char)(addr>>8);
            Dev_addr = 0xa0|(AddrHigh<<1);
            i2c_start();
            i2c_SendByte(Dev_addr);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            i2c_delay_ms(5);
            i2c_SendByte(AddrHigh);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            i2c_SendByte(AddrLow);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            i2c_delay_ms(5);
            i2c_start();
            Dev_addr = 0xa1|(AddrHigh<<1);
            i2c_SendByte(Dev_addr);
            if(i2c_check_ACK() == FALSE)
            {
            return AckError;
            }
            while(n--)
            {
            *p = i2c_RevByte();
            p++;
            if(n)
            i2c_SendAck();
            else
            i2c_SendNoAck();
            }
            i2c_stop();
            return 0;
            }

            main()
            {
            //unsigned char tt,tt1;
            WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
            DCOCTL = 0X73;
            BCSCTL1= 0X87; // 設(shè)置時(shí)鐘頻率4.00MHz
            P5DIR |=0X03;
            P5OUT |=0X03;
            //EEPROM_ByteWrite(0x0,12);
            //tt=EEPROM_RandomRead(0x0);
            //tt1=tt;
            EEPROM_PageWrite(2,dat,14);
            EEPROM_SequentialRead(128,14,x);
            }


            上一頁(yè) 1 2 下一頁(yè)

            評(píng)論


            技術(shù)專(zhuān)區(qū)

            關(guān)閉