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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機的at24c02驅動程序

作者:劉溫電   來源:本站原創   點擊數:  更新時間:2013年11月26日   【字體:

 

//////////////////////////////////////////////////////// 頭文件 /////////////////////////////////////////////////////////////////////////////////////////
/******************************************************************************
* 標題: at24c02 e2prom驅動程序                                                                                                   *
* 文件: at24c02.h at24c02.c                                                                                                             *
* 日期: 2010-3-11                                                                                                                            *
* 版本: 1.10(試驗通過版)可用xl600單片機綜合試驗儀試驗                                                 *
* 郵箱: acsdf139@163.com       qq:526083029                                                                            *
* 網站: 無                                                                                                                                     *
*******************************************************************************
* 描述:                                                                                                                                               *
*         用法:首先在主程序內添加頭文件#include"at2402.c"                                                        *
*             填充 fillbyte(72,0x00);                                                                                                        *
*             寫入wratbyte(7, 55);                                                                                                           *
*             讀取a=readrandom(25);                                                                                                     *
*                                                                                                                                                          *
*******************************************************************************
*【版權】自己參照網上,朋友,以及書本資料上寫的,所以沒有版權                                 *
*【聲明】此程序,可用于學習,參考及實際設計中,歡迎轉載復制以及建議批評             *
*【技術支持】qq:526083029 小張                                                                                             *
******************************************************************************/
 
 
#ifndef _AT2402_H_
#define _AT2402_H_
#include<AT89X52.H>
#include<intrins.h>
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
#define uchar unsigned char
 
 
#define atwrite 0xa0          // 器件地址以及寫入操作
#define atread 0xa1         // 器件地址以及讀取操作
 
 
extern void delayms(uchar ms);
extern void atstart();
extern void atstop();
extern bit atack(void);
extern uchar atmcu();
extern bit mcuat(uchar wratdata);
extern void wratbyte(uchar addr, uchar wratdata);
extern void fillbyte(uchar fillsize,uchar filldata);
extern uchar reatbyte();
extern uchar readrandom(uchar random_addr);
 
#endif
 
///////////////////////////////////////////////////////////////////////c程序/////////////////////////////////////////////////
 

 

#include<AT89X52.H>
#include"at2402.h"
#include <intrins.h>
 
 
sbit SDAat=P3^7;
sbit SCLat=P3^6;
 
/*************************************
函數名:delayms
函數功能:延時
參數:ms(時間)
返回:無
備注:無
*************************************/
void delayms(uchar ms)
{
 uchar k;
 while(ms--)
 {
    for(k = 0; k < 120; k++);
    }
/*************************************
函數名:atstart
函數功能:開始位
參數:無
返回:無
備注:無
*************************************/
void atstart()
{
 SDAat= 1;
 SCLat= 1;
 delayNOP();
 SDAat = 0;
 delayNOP();
 SCLat = 0;
}
/*************************************
函數名:atstop
函數功能:停止位
參數:無
返回:無
備注:無
*************************************/
void atstop()
{
  SDAat = 0;
  delayNOP();
  SCLat = 1;
  delayNOP();
  SDAat = 1;
}
/*************************************
函數名:atack
函數功能:應答
參數:無
返回:ackbit
備注:無
*************************************
bit atack(void)
{
  bit ackbit;
  SDAat = 1;  // 讀取應答
  delayNOP();
  SCLat = 1;
  delayNOP();
  ackbit = SDAat;
  SCLat = 0;
  return ackbit;
 
}
/*************************************
函數名:atmcu
函數功能:從AT24C02移出數據到MCU
參數:無
返回:reatdata
備注:無
*************************************/
uchar atmcu()
{
  uchar i,reatdata;
  for(i = 0; i < 8; i++)
  {
     SCLat = 1;
     reatdata <<= 1;
     reatdata |= SDAat;
     SCLat = 0;
  }
  return(reatdata);
}
/*************************************
函數名:mcuat
函數功能: 從mcu移出數據到24c02
參數:wratdata(數據)
返回:ackbit(應答)
備注:配合wratbyte使用
*************************************/
bit mcuat(uchar wratdata)
{
 uchar i;
 bit ackbit;
 for(i = 0; i < 8; i++) // 循環移入8個位
 {
   SDAat = (bit)(wratdata & 0x80);
    _nop_();
    SCLat = 1;
   delayNOP();
   SCLat = 0;
    wratdata <<= 1;
  }
  ackbit=atack();
  return ackbit; // 返回AT24C02應答位
}
/*************************************
函數名:wratbyte
函數功能: 在指定地址addr處寫入數據write_data
參數:addr    wratdata
返回:無
備注:無
*************************************/
void wratbyte(uchar addr, uchar wratdata)
{
  atstart();
  mcuat(atwrite);
  mcuat(addr);
  mcuat(wratdata);
  atstop();
  delayms(10); // 寫入周期
}
/*************************************
函數名:fillbyte
函數功能:填充數據fill_data到EEPROM內fill_size字節
參數: fillsize(地址),filldata(數據)
返回:無
備注:無
*************************************/
void fillbyte(uchar fillsize,uchar filldata) 
{
  uchar i;
  for(i = 0; i < fillsize; i++)
  {
     wratbyte(i, filldata);
  }
}
/*************************************
函數名:reatbyte
函數功能:在當前地址讀取
參數:無
返回:reatdata(讀取的數據)
備注:配合readrandom使用
*************************************/
uchar reatbyte()
{
  uchar reatdata;
  atstart();
  mcuat(atread);
  reatdata = atmcu();
 atstop();
  return reatdata;
}
/*************************************
函數名:readrandom
函數功能:在指定地址讀取
參數:random_addr(地址)
返回:reatdata(讀取的數據)
備注:無
*************************************/
uchar readrandom(uchar random_addr)
{
  atstart();
  mcuat(atwrite);
  mcuat(random_addr);
  return(reatbyte());
}
 
關閉窗口

相關文章

主站蜘蛛池模板: 日韩在线一区二区三区 | 成人精品一区亚洲午夜久久久 | 精品日韩电影 | 亚洲精品一区二区在线观看 | 特a毛片 | 亚洲精品高清视频在线观看 | 2018中文字幕第一页 | 久久久久国产 | 国产精品99久久久久久www | 久久精品一级 | 国产成人免费视频网站高清观看视频 | 久久人人网 | 日本免费一区二区三区视频 | www.国产.com| 亚洲高清在线视频 | 色网站入口 | 免费xxxx大片国产在线 | 免费看淫片 | 亚洲成人www| 久久久天堂 | 国产一级视频在线观看 | 久久久久久国产 | 国产一级毛片视频 | 亚洲性网 | 亚洲免费在线 | 五月婷婷 六月丁香 | 成人在线视频免费播放 | 欧美视频一级 | 一本一道久久a久久精品综合蜜臀 | 日韩成人 | 中文字幕一区二区三区四区五区 | 久久国产精品久久久久久久久久 | 国产综合久久 | 精品国产一区探花在线观看 | 久久久女女女女999久久 | 国产不卡在线观看 | 国产精品一区二区免费 | 欧美激情精品久久久久久变态 | 夜夜夜操 | 欧美日韩高清免费 | 久久久久久久一级 |