在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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>

            新聞中心

            PIC16F72-AT24C02讀寫(xiě)

            作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò) 收藏
            用PIC單片機(jī)控制EEPROM AT24C02讀寫(xiě)操作程序

            /*************PIC16F72單片機(jī)程序******************************/
            /*********************************************************************/
            /*****File Function : PIC 讀寫(xiě)AT24C02 *****/
            /*****Program Author : ZhengWen(ClimberWin)*****/
            /*****MCU : PIC16F72 外部晶振12MHZ*****/
            /*****Compile Date : 2011/04/15 *****/
            /*****Edition Info : V1.0 *****/
            /*************************************************************/
            #include
            #include"WIN24C02.H"
            __CONFIG(11111110111010);//bit13-bit7=1;bit6 欠壓使能(1 enable);bit5=1;bit4 代碼保護(hù)(0保護(hù));
            //bit3 上電延時(shí)(0 enable);bit2 看門狗(1 enable);bit1-bit0 時(shí)鐘選擇 (11 RC 10 HS 01 XT OO LP)

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

            #define uchar unsigned char
            #define uint unsigned int

            void Init(void); //初始化子程序
            void delayms(unsigned int count);

            #define KEY RB0//外部中斷


            #define LED16 RC0
            #define LED15 RC1
            #define LED14 RC2
            #define LED13 RC3
            #define LED12 RC4
            #define LED11 RC5
            #define LED10 RC6
            #define LED9 RC7


            /*********************************************/
            void delayms(unsigned int count)
            {
            uint i,j;
            for(i=0;ifor(j=0;j<120;j++);
            }
            /*********************************************/
            void Init(void)
            {

            PORTB = 0B00000000;
            PORTC = 0B00000000;

            TRISB = 0B00000001;//設(shè)置RB0為輸入,作為按鍵口
            TRISC = 0B00000000;//設(shè)置RC輸出

            RBPU=0;//PORTB上拉使能

            }


            ////////////主程序/////////////////////////
            void main (void)
            {
            uint win;
            uint i;

            Init();//初始化程序
            delayms(100);
            PORTC=0XFF;
            PORTB=0XFF;
            PORTA=0XFF;


            WIN24C02_write(0x01,0x81);//存數(shù)據(jù)到EEPROM
            delayms(50);
            WIN24C02_write(0x02,0x18);//存數(shù)據(jù)到EEPROM
            delayms(50);

            while(1)
            {
            delayms(1000); //延時(shí)
            PORTC=~WIN24C02_read(0x01);//讀取24C02地址00H中的數(shù)據(jù)
            delayms(1000); //延時(shí)
            PORTC=~WIN24C02_read(0x02);//讀取24C02地址00H中的數(shù)據(jù)
            }

            }

            頭文件:

            WIN24C02.h

            /**********************中文版本*******************************/
            /*****功能描述 : PIC單片機(jī) 24C02 讀寫(xiě)程序*****/
            /*****作 者 : ClimberWin *****/
            /*****編寫(xiě)日期 : 2011年4月14日*****/
            /*****版本信息 : V1.0 *****/
            /*****修改日期 : *****/
            /*************************************************************/
            #ifndef __WIN24C02_H__
            #define __WIN24C02_H__

            #include

            #define uchar unsigned char
            #define uint unsigned int


            #define SCL RB2 //SCL 引腳定義
            #define SDA RB1 //SDA 引腳定義

            uchar WIN24C02_read(uchar address); //從24c02的地址address中讀取一個(gè)字節(jié)數(shù)據(jù)

            void WIN24C02_write(uchar address,uchar info); //向24c02的address地址中寫(xiě)入一字節(jié)數(shù)據(jù)info

            void WIN24C02_init(); //24C02初始化子程序

            void delay1(uchar x);

            void start();

            void stop();

            void writex(uchar j);

            uchar readx();

            void clock();

            void delay1(uchar x)
            {
            uint i;
            for(i=0;i}


            void WIN24C02_init()
            {
            TRISB = 0B00000001;//設(shè)置RB1 SDA為輸出
            SCL=1;
            asm("NOP");
            SDA=1;
            asm("NOP");
            }

            void start()
            {
            TRISB = 0B00000001;//設(shè)置RB1 SDA為輸出
            SDA=1;
            asm("NOP");
            SCL=1;
            asm("NOP");
            SDA=0;
            asm("NOP");
            SCL=0;
            asm("NOP");
            }

            void stop()

            {
            TRISB = 0B00000001;//設(shè)置RB1 SDA為輸出
            SDA=0;
            asm("NOP");
            SCL=1;
            asm("NOP");
            SDA=1;
            asm("NOP");
            }

            void writex(uchar j)

            {
            uchar i,temp;
            TRISB = 0B00000001;//設(shè)置RB1 SDA為輸出
            temp=j;

            for (i=0;i<8;i++)
            {

            SCL=0;
            asm("NOP");

            if (temp & 0x80) //讀取
            {
            SDA=1;
            }
            else
            {
            SDA=0;
            }
            temp=temp<<1;
            //SDA=CY;


            asm("NOP");
            SCL=1;
            asm("NOP");
            }

            SCL=0;
            asm("NOP");
            SDA=1;
            asm("NOP");

            }

            uchar readx()
            {
            uchar i,j,k=0;
            TRISB = 0B00000001;//設(shè)置RB1 SDA為輸出

            SCL=0;
            asm("NOP");

            SDA=1;

            TRISB = 0B00000011;//設(shè)置RB1 SDA為輸入
            for (i=0;i<8;i++)
            {
            asm("NOP");

            SCL=1;
            asm("NOP");

            if (SDA==1) j=1;
            else j=0;
            k=(k<<1)|j;
            SCL=0;

            }
            TRISB = 0B00000001;//設(shè)置RB1 SDA為輸出

            asm("NOP");
            return(k);

            }

            void clock()

            {
            uchar i=0;
            TRISB = 0B00000011;//設(shè)置RB1 SDA為輸入
            SCL=1;

            asm("NOP");
            while ((SDA==1)&&(i<255))i++;
            SCL=0;
            asm("NOP");
            TRISB = 0B00000001;//設(shè)置RB1 SDA為輸出

            }

            uchar WIN24C02_read(uchar address)

            {
            uchar i;
            start();
            writex(0xa0);
            clock();
            writex(address);
            clock();
            start();
            writex(0xa1);
            clock();
            i=readx();
            stop();
            delay1(10);
            return(i);

            }

            void WIN24C02_write(uchar address,uchar info)

            {

            // GIE=0;//關(guān)閉中斷
            start();
            writex(0xa0);
            clock();
            writex(address);
            clock();
            writex(info);
            clock();
            stop();
            // GIE=1;//打開(kāi)中斷
            delay1(50);

            }

            #endif



            關(guān)鍵詞: PIC16F72AT24C02讀

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉