久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2820|回復: 0
收起左側

單片機學習筆記(十二)EEPROM實驗

[復制鏈接]
ID:108531 發表于 2016-3-12 16:42 | 顯示全部樓層 |閱讀模式
EEPROM實驗板采用ATMEL公司的AT24C02芯片,該芯片為單頁256字節的存儲器,通過IIC總線可以對芯片進行讀寫操作。SCL和SDA分別接單片機的P3.6和P3.7。
C語言源程序:
#include<reg52.h> //52單片機頭文件包含
#define uchar unsigned char //宏定義 uchar 為 unsigned char
sbit sda=P3^6; //定義sda接口引腳
sbit scl=P3^7; //定義scl接口引腳
uchar a; //定義無符號字符變量 a
void delay()//延時函數 執行2條空語句
{ ;;}
void start() //開始信號
{
    sda=1;//sda置1
    delay();//延時
    scl=1;//scl置1
    delay();//延時
    sda=0;//sda置0
    delay();//延時
}
void stop()//停止信號
{
    sda=0;//sda置0
    delay();//延時
    scl=1;//scl置1
    delay();//延時
    sda=1;//sda置1
    delay();//延時
}
void respons() //應答
{
    uchar i;//定義無符號字符變量 i
    scl=1;//scl置1
    delay();//延時
    while((sda==1)&&(i<250)) i++; //如果sda=1并且i<250的話循環執行i++
    scl=0;//scl置0
    delay();//延時
}
void init() //初始化
{
    sda=1;//sda置1
    delay();//延時
    scl=1;//scl置1
    delay();//延時
}
void write_byte(uchar date) //寫一個字節
{
    uchar i,temp; //定義無符號字符變量i,temp
    temp=date;//將參數date賦值給temp
    for(i=0;i<8;i++)    //循環8次逐位寫入
    {
        temp=temp<<1;//左移1位
        scl=0;//scl置0
        delay();//延時
        sda=CY;//進位標志賦值給sda完成寫入
        delay();//延時
        scl=1;//scl置1
        delay();延時
    }
    scl=0;//scl置0
    delay();//延時
    sda=1;//sda置1
    delay();//延時
}
uchar read_byte() //讀EEPROM中的一個字節
{
    uchar i,k; //定義無符號字符變量i,k
    scl=0;//scl置0
    delay();//延時
    sda=1;//sda置1
    delay();//延時
    for(i=0;i<8;i++) //分8次讀取每次讀一位
    {
        scl=1;//scl置1
        delay();//延時
        k=(k<<1) | sda;//k左移1位與sda相或得到1位的值
        scl=0;//scl置0
        delay();//延時
    }
    return k;//讀取完畢返回讀取到的值
}
void delay1(uchar x) //延時函數2
{
    uchar a,b; //定義無符號字符變量a,b
    for(a=x;a>0;a--)//循環x次
    {
        for(b=100;b>0;b--);//循環100次
    }
}        
void wirte_add(uchar address,uchar date) //按地址寫入數據函數
{
    start();//開始信號
    write_byte(0xa0); //寫入指令0xa0;
    respons();//應答
    write_byte(address);//寫入地址
    respons();//應答
    write_byte(date)//寫入數據
    respons()//應答
    stop();//停止
}
uchar read_add(uchar address)//讀取一個地址的數據
{
    uchar date;//定義無符號字符變量date用于接收讀取的數據
    start();//開始信號
    write_byte(0xa0);//讀寫指令寫入
    respons();//應答
    write_byte(address);//寫入地址
    respons();//應答
    start();//開始信號
    write_byte(0xa1);//讀指令寫入
    respons();//應答
    date=read_byte();//讀入地址的數據賦值給date
    stop();//停止
    return date;//返回讀到的值
}
void main() // 入口函數
{
    init();//對EEPROM進行初始化
    write_add(0x01,0x04);//在EEPROM的0x01號地址寫入數據0x04
    delay1(100);//延時100ms
    write_add(0x02,0x08);//在EEPROM的0x02號地址寫入數據0x08
    delay1(100);//延時100ms
    write_add(0x03,0);//在EEPROM的0x03號地址寫入數據0
    delay1(100);//延時100ms
    P1=read_add(0x01)//讀入0x01號地址的值賦值給P1
    while(1);//無限循環
}
//實驗現象由于0x01號地址寫入的是0x04 (00000100)所以第三個發光二極管被熄滅

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久国产 | 国产精品免费播放 | 一区二区在线 | 欧美精品一区免费 | 久久新| 国产高清免费视频 | 中文字幕不卡视频在线观看 | 久在线 | 欧美精品三区 | 网站黄色在线免费观看 | 福利二区| 精品一区二区在线观看 | 精品一区二区三区在线观看 | 青春草国产 | 99精品久久久久久中文字幕 | 亚洲一区二区三区四区五区中文 | 日韩精品一区二区三区中文在线 | 国产精品自拍一区 | 国产91一区 | 欧美激情视频一区二区三区在线播放 | 亚洲免费人成在线视频观看 | 97伦理电影 | 日韩毛片免费看 | 国产1区 | 精品一区二区电影 | 久久国产精品视频 | www.99re| 一区2区 | 欧美在线视频免费 | 欧美精品在线播放 | 亚洲精品一区二区三区蜜桃久 | av三级在线观看 | 波波电影院一区二区三区 | 国产精品99久久久久久宅男 | 综合久久久 | 免费v片 | 四虎永久免费黄色影片 | 91国产精品在线 | 国产电影一区二区在线观看 | 亚洲播放 | 日韩在线观看视频一区 |