在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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)用 > ATMEGA16驅(qū)動(dòng)內(nèi)部EEPROM程序

            ATMEGA16驅(qū)動(dòng)內(nèi)部EEPROM程序

            作者: 時(shí)間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
            // 8MHZ晶體在ATMEGA16上運(yùn)行

            // 顯示效果:顯示按鍵設(shè)定數(shù)字
            #include
            #include
            #define uchar unsigned char
            #define uint unsigned int
            #pragmadata:code
            const uchar table[]="I LIKE AVR !";
            const uchar table1[]="WWW*FUMANCHE*COM";
            const uchar table_num[]="01234567890";

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

            void delay(uint ms)//延時(shí)
            {
            uint i,j;
            for(i=0;i {
            for(j=0;j<1142;j++);
            }
            }
            void write_com(uchar com) //寫指令
            {
            PORTD&=~BIT(4);
            PORTD&=~BIT(5);
            PORTC=com;
            PORTD|=BIT(6);
            delay(1);
            PORTD&=~BIT(6);
            }

            void write_dat(uchar dat) //寫數(shù)據(jù)
            {
            PORTD|=BIT(4);
            PORTD&=~BIT(5);
            PORTC=dat;
            PORTD|=BIT(6);
            delay(1);
            PORTD&=~BIT(6);
            }

            /*EEPROM讀取函數(shù)*/
            /*addr:地址;number:長(zhǎng)度;p_buff:讀出數(shù)據(jù)存放指針*/

            void eprom_read(unsigned int addr, unsigned char number, unsigned char *p_buff)
            {

            while(EECR & (1 << EEWE));

            EEARH = 0x00;

            while(number --)
            {
            EEARL = addr ++;
            EECR |= (1 << EERE);
            *p_buff++ = EEDR;
            }
            }
            /*EEPROM寫入函數(shù)*/
            /*addr:地址;number:長(zhǎng)度;p_buff:寫入數(shù)據(jù)存放指針*/

            void eprom_write(unsigned int addr, unsigned char number, unsigned char *p_buff)
            {

            EEARH = 0x00;

            while(number --) {
            while(EECR & (1 << EEWE));
            EEARL = addr ++;
            EEDR = *p_buff ++;
            EECR |= (1 << EEMWE);
            EECR |= (1 << EEWE);
            }
            }

            void main()
            {

            uchar i;
            uchar bai,shi,ge,temp;
            DDRB = 0xf0; //PB口低四位設(shè)為輸入
            PORTB = 0x0f; //PB口低四位上拉電阻使能
            DDRC=0XFF; //液晶端口設(shè)定為輸出
            DDRD|=BIT(4)|BIT(5)|BIT(6);

            delay(250); //加入延時(shí),避免影響干擾下一句
            PORTD&=~BIT(6);

            write_com(0X38); //液晶初始化
            delay(5);
            write_com(0X01); //顯示清屏
            delay(5);
            write_com(0X0C); //開顯示
            delay(5);
            // write_com(0X0F); //顯示光標(biāo)并閃爍
            // delay(5);
            delay(250); //啟動(dòng)延時(shí)
            eprom_read(0x10, 0x01, &temp);//讀出記錄

            while(1)
            {
            if(PINB==0x0e) //PB0按鍵檢測(cè)
            {
            delay(250); //啟動(dòng)延時(shí)
            eprom_read(0x10, 0x01, &temp);//讀出記錄
            temp++; //刷新記錄
            eprom_write(0x10, 0x01, &temp);//寫入記錄
            }
            while(PINB==0x0e); //當(dāng)按鍵始終按下時(shí)等待

            if(PINB==0x0d) //PB1按鍵檢測(cè)
            {
            delay(250); //啟動(dòng)延時(shí)
            eprom_read(0x10, 0x01, &temp);//讀出記錄
            temp--; //刷新記錄
            eprom_write(0x10, 0x01, &temp);//寫入記錄
            }
            while(PINB==0x0d);


            delay(5);
            ge=temp%10;
            shi=temp%100/10;
            bai=temp/100;
            write_com(0X80+0X06);//數(shù)據(jù)起始指針設(shè)置--重新設(shè)置為這個(gè)地址開始存放數(shù)據(jù)
            write_dat(table_num[bai]);
            delay(5);
            write_dat(table_num[shi]);
            delay(5);
            write_dat(table_num[ge]);
            delay(5);

            write_com(0X80+0X40);//數(shù)據(jù)起始指針設(shè)置
            delay(5);
            for(i=0;i<16;i++) //循環(huán)13次顯示內(nèi)容
            {
            write_dat(table1[i]);
            delay(5);
            }
            /*
            for(i=0;i<16;i++) //循環(huán)16次從LCD屏幕左邊一直顯示到右邊
            {
            write_com(0X1c);
            delay(500);
            }
            */

            }
            }
            //本程序通過驗(yàn)證,運(yùn)行穩(wěn)定??!



            關(guān)鍵詞: ATMEGA16EEPRO

            評(píng)論


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

            關(guān)閉