日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
I2C總線AT24C01讀寫程序(匯編和C)
I2C總線AT24C01讀寫程序(匯編和C)
 更新時(shí)間:2008-7-26 19:59:02  點(diǎn)擊數(shù):2
【字體: 字體顏色
I2C總線AT24C01讀寫程序(匯編和C)

我要EDA網(wǎng)    發(fā)布日期:2005-11-24  瀏覽次數(shù):1862
; =======================================================
;         24C01存儲(chǔ)器I2C總線實(shí)驗(yàn)        匯編語言例子
; =======================================================
SDA              EQU       P2.0
SCL        EQU       P2.1
Address          EQU       08H
I2CData         EQU       09H
 
ORG 0000H
 
START:
       MOV      SP,#60H
 
       MOV      Address,#00H
       MOV      I2CData,#55H
       CALL      I2C_WRITE   ;寫入數(shù)據(jù)
 
       MOV      I2CDATA,#0AAH   ;
 
       MOV      Address,#00H
       CALL      I2C_READ
       MOV      I2CData,A      ;讀出數(shù)據(jù)
       NOP
       NOP
 
MAIN:
 
       JMP        MAIN
 
/*=======================================================
寫一個(gè)字節(jié)    Address地址  I2CDatata寫入的數(shù)據(jù)
=======================================================*/
I2C_WRITE:
    I2C_WRITE_A:
       LCALL    I2C_START
       MOV      A,#10100000B
       LCALL    I2C_SEND8BIT
       LCALL    I2C_ACK
       JC   I2C_WRITE_A      ;=1,表示無確認(rèn),再次發(fā)送
      
       MOV      A,Address
       LCALL    I2C_SEND8BIT
       LCALL    I2C_ACK      
 
       MOV      A,I2CData
       LCALL    I2C_SEND8BIT
       LCALL    I2C_ACK      
       LCALL    I2C_STOP
RET
 
/*=======================================================
讀一個(gè)字節(jié)    Address地址  Data讀出的數(shù)據(jù)
=======================================================*/
 
I2C_READ:
    I2C_READ_A:
       LCALL    I2C_START
       MOV      A,#10100000B
       LCALL    I2C_SEND8BIT
       LCALL    I2C_ACK
       JC   I2C_READ_A ;=1,表示無確認(rèn),再次發(fā)送
 
       MOV      A,Address
       LCALL    I2C_SEND8BIT
       LCALL    I2C_ACK      
 
    I2C_READ_B:
       LCALL    I2C_START
       MOV      A,#10100001B
       LCALL    I2C_SEND8BIT
       LCALL    I2C_ACK
       JC   I2C_READ_B
 
       LCALL    I2C_RECEIVE8BIT
       MOV      I2CData,A
       LCALL    I2C_ACK
       LCALL    I2C_STOP
RET
;=======================================================
;發(fā)送開始信號(hào)
I2C_START:
       SETB      SCL
       SETB      SDA
       NOP
       NOP
       CLR SDA
       NOP
       NOP
       CLR SCL
RET
;=======================================================
;發(fā)送結(jié)束信號(hào)
I2C_STOP:
       CLR SDA
       NOP
       NOP
       SETB      SCL
       NOP
       NOP
       SETB      SDA
RET
;=======================================================
;發(fā)送接收確認(rèn)信號(hào)
I2C_ACk:
       SETB      SDA
       SETB      SCL
       NOP
       NOP
       JB    SDA,I2C_ACK0
       CLR C    
       SJMP      I2C_ACK_END
    I2C_ACK0:
       SETB      C
    I2C_ACK_END:
       CLR SCL
RET
;=======================================================
;送八位數(shù)據(jù)
I2C_SEND8BIT:
       MOV      B,#08H
I2C_SEND8BIT_A:      
       RLC A
      
       MOV      SDA,C
       SETB      SCL
       NOP
       NOP
       CLR SCL
       DJNZ      B,I2C_SEND8BIT_A
RET
;=======================================================
;接收八位數(shù)據(jù)
I2C_RECEIVE8BIT:
       MOV      B,#08H
       CLR A
       SETB      SDA
I2C_RECEIVE8IT_A:
       SETB      SCL
       NOP
       NOP
       MOV      C,SDA
       RLC A
       CLR SCL
       DJNZ      B,I2C_RECEIVE8IT_A
 
RET
 
 
C語言寫的24C01 單字節(jié)讀寫程序
/*=======================================================
                    24C01存儲(chǔ)器I2C總線實(shí)驗(yàn)   C語言例子  
 =======================================================
 
       ew51仿真編程器         配套實(shí)驗(yàn)板學(xué)習(xí)例程
 
       中山單片機(jī)學(xué)習(xí)網(wǎng)       誠電科技       站長(zhǎng):逸風(fēng)
 
       http://www.zsmcu.com
       E-mail:ew51@zsmcu.com
=======================================================*/
#include
#include
sbit  SDA=0x90;
sbit  SCL=0x91;
 
//函數(shù)聲明
unsigned char i2c_read(unsigned char);
void i2c_write(unsigned char,unsigned char);
 
void i2c_send8bit(unsigned char);
unsigned char i2c_receive8bit(void);
void i2c_start(void);
void i2c_stop(void);
bit i2c_ack(void);
//=======================================================
void main(void)
{
       unsigned char dd;
 
       i2c_write(0x00,0x55);
       _nop_();
 
       dd=i2c_read(0x00);
    for(;;)
       {}
}
 
/*=======================================================
i2c_write(地址,數(shù)據(jù)),寫一個(gè)字節(jié)
=======================================================*/
void i2c_write(unsigned char Address,unsigned char Data)
{
       do{
       i2c_start();
       i2c_send8bit(0xA0);
       }while(i2c_ack());
       i2c_send8bit(Address);
       i2c_ack();
       i2c_send8bit(Data);
       i2c_ack();
       i2c_stop();
       return;
}
/*=======================================================
i2c_read(地址,數(shù)據(jù)),寫一個(gè)字節(jié)
=======================================================*/
unsigned char i2c_read(unsigned char Address)
{
       unsigned char c;
       do{
       i2c_start();
       i2c_send8bit(0xA0);
       }while(i2c_ack());                //=1,表示無確認(rèn),再次發(fā)送
       i2c_send8bit(Address);
       i2c_ack();
 
       do{
       i2c_start();
       i2c_send8bit(0xA1);
       }while(i2c_ack());
       c=i2c_receive8bit();
       i2c_ack();
       i2c_stop();
       return(c);
}
//=======================================================
//發(fā)送開始信號(hào)
void i2c_start(void)
{
       SDA = 1;
       SCL = 1;
       SDA = 0;
       SCL = 0;
       return;
}
//發(fā)送結(jié)束信號(hào)
void i2c_stop(void)
{
       SDA = 0;
       SCL = 1;
       SDA = 1;
       return;
}    
//發(fā)送接收確認(rèn)信號(hào)
bit    i2c_ack(void)
{
       bit    ack;
       SDA = 1;
       SCL = 1;
       if     (SDA==1)
       ack = 1;
       else
       ack = 0;
       SCL = 0;
       return      (ack);
}
 
//送八位數(shù)據(jù)
void i2c_send8bit(unsigned char b)
{
       unsigned  char a;
       for(a=0;a<8;a++)
              {
              if     ((b<
              SDA = 1;
              else
              SDA = 0;
              SCL = 1;
              SCL = 0;
              }
       return;
}
//接收八位數(shù)據(jù)
unsigned char i2c_receive8bit(void)
{
       unsigned  char a;
       unsigned char b=0;
       for(a=0;a<8;a++)
              {
              SCL = 1;
              b=b<<1;
              if (SDA==1)
              b=b|0x01;       //按位或
              SCL = 0;
              }
       return      (b);
}
  • 上一篇: 1602LCM液晶顯示屏的驅(qū)動(dòng)函數(shù)和實(shí)例(C)
  • 下一篇: 51讀寫串行EEPROM芯片at2402程序(C)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1