51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机源码 > 详细内容
24c02的读写程序
作者:佚名  发布时间:2009/10/16  阅读次数:695  字体大小: 【】 【】【
;=============================
;24c02的读写程序
;AUTHOR:LIXIN
;CREATE DATE:2004-5-23
;MODIFY DATE :2004-5-23
;电协资料001.DOC
;用于2号板
; ===================
BITCNT EQU 41H
SUBADR EQU 40H
SDA         BIT         P0.5
SCL         BIT         P0.4
ORG 00H
JMP MAIN
ORG 0100H
MAIN:
         MOV R7,#01010101B
         ACALL WRITE_24C02
         ACALL DELAY
         ACALL READ_24C02
         ;MOV P2,A
         MOV P3,A
         ACALL DELAY
         ;MOV P2,#0FFH
         MOV P3,#0FFH
         ACALL DELAY
         JMP MAIN
;===================================
DELAY:   MOV         R0,#0FFH
DELAY0: MOV         R1,#0FFH
DELAY1: NOP
               NOP
               NOP
               DJNZ       R1,DELAY1
               DJNZ       R0,DELAY0
               RET
;============================
WRITE_24C02:
                       ACALL START         ;发送IC总线起始条件
                       MOV A,#0A0H           ;24C02总线地址
                       ACALL SENTBYTE     ;发送24C02器件总线地址
                       JB F0,SENDRETURN ;出错返回
                       MOV A,SUBADR             ;取存储地址
                       ACALL SENTBYTE
                       JB F0,SENDRETURN
                       MOV A,R7
                       ACALL SENTBYTE         ;发送一次数据
                       JB F0,SENDRETURN       ;出错返回
                       ACALL STOP                         ;发送IC总线停止条件
DELAY10:                                                 ;延时10MS等待数据写完
               MOV 44H,30H
D1: MOV 45H,#34H
       DJNZ 45H,$
       DJNZ 44H,D1
SENDRETURN:
RET
;=======================================
READ_24C02:                                                         ;读24C02
                     ACALL START                               ;发送IC总线起始条件
                     MOV A,#0A0H
                     ACALL SENTBYTE                                 ;24C02总线地址
                     JB F0,RCVRETURN                                 ;出错返回
                     MOV A,SUBADR                             ;取存储地址
                       ACALL SENTBYTE                         ;发送24C02器件总线地址
                       JB F0,SENDRETURN                         ;出错返回
                     ACALL START                                           ;发送IC总线重复起始条件
                     MOV A,#0A0H                                           ;24C02总线地址
                     SETB ACC.0                                                             ;取总线读操作数
                     ACALL SENTBYTE                                               ;发送被控制总线地址
                     JB F0,RCVRETURN                                             ;出错返回
                     ACALL RCVBYTE                               ;接受数据
RCVRETURN:
RET
;=========================================
START:
         SETB SDA                             ;发送起始条件的数据信号
         NOP
         NOP
         NOP
         SETB SCL                           ;发送起始条件的时钟信号
         NOP                                       ;起始条件建立时间大于4.7s
         NOP
         NOP
         CLR SDA                                   ;发送起始信号
         NOP                                               ;起始条件锁定时间大于4s
         NOP
         NOP
         CLR SCL                                 ; 钳住IC总线准备发送或接受数据
         RET
;==================================
STOP:
         CLR SDA                                     ;发送停止条件的数据信号
         NOP
         NOP
         NOP
         SETB SCL                                             ;发送停止条件的时钟信号
         NOP                                                           ;起始条件建立时间大于4s
         NOP
         NOP
         SETB SDA                                             ;发送IC总线停止信号
         NOP
         NOP
         NOP
         NOP
         RET
;===============================
SENTBYTE:                                                               ;送数8位
                 MOV BITCNT,#08H
SENTB:
           RLC A                                                 ;要发送的数据左移,发送入位C
           MOV SDA,C
           NOP
NOP
           NOP
           SETB SCL                                       ;置时钟线为高,通知被控制开始接受数据位
           NOP                                                   ;保证时钟高周期大于4s
           NOP
           NOP
           CLR SCL                                         ;钳住总线准备接受下一个数据位
           DJNZ BITCNT,SENTB                   ;8位没发送完继续发送
           NOP
         NOP
         SETB SDA                                                 ;8位发送完后释放数据线准备收应答位
         NOP
         NOP
         SETB SCL                                                 ;开始接受应答信号
         NOP
         NOP
         CLR F0                                                 ;预先清发送数据出错标志
         JNB SDA,ACKEND                                 ;判断是否接受应答信号正常转ACKEND
         SETB F0                                               ;未受到应答置位错误标志
ACKEND:
               NOP
               CLR SCL                                       ;发送结束钳住总线准备下一步发送或接受数据或进行其他处理
               RET
;=================================
RCVBYTE:
               SETB SDA                                 ;置数据线为输入方式
               MOV BITCNT,#08H               ;要传送的数据长度为8位
RCV:
       NOP
       CLR SCL                                       ;置时钟线为低,准备接受数据
         NOP                                       ;时钟低周期大于4.7s
         NOP
         NOP
         NOP
         NOP
         SETB SCL                                 ;置时钟线为高使数据线上数据有效
         NOP
         NOP
         MOV C,SDA
         RLC A                                           ;接受的数据位放入ACC
         NOP
         NOP
         DJNZ BITCNT,RCV                             ;8位没收完继续接受
         CLR SCL                                               ;8位接受完置时钟线和数据线
         NOP
         NOP
         CLR SDA
         SETB SDA                                           ;接受非应答信号
               NOP
         NOP
         SETB SCL                                             ;置时钟线为高使应答位有效
         NOP                                                           ;时钟高周期大于4.7s
         NOP
         SETB SDA
         NOP
         NOP
         NOP
         CLR SCL                       ;清时钟线钳住IC总线以便发送停止条件
         RET


         END
  

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号