;/*****************************************************************************AT24C256 PROGRAM
; Read and Write AT24c256
;** 传输方式:i2c bus
;** interface: 3 line .
;** SCL---siler clock
;** SDA---siler data
;** WP ---write 保护
;** 功能描述: 内存256k位 ;器件地址:1 0 1 0 0 A1 A0 R/-W
;** 页写可达64 byte;
;** 调用模块: 模拟I2C BUS SUB
;** 现存的缺陷 : 联写尚可 连读不行
;/*****************************************************************
;** 函数名:Write a byte
;** 输 入: EEP_DATA 要写入的字节。
;** EEP_ADH 要写入24c256的高8位地址
;** EEP_ADL 要写入24c256的低8位地址
;** 输 出: NO
;** 功能描述:a byte 写入24c256
;** 全局变量:
;** 调用模块:模拟I2C BUS SUB
;** 作 者:lijun leejun@qingdaonews.com
;** 日 期:2002/6/3
;** 版本 1.0
;****************************************************************/
Write_Byte
BCF EEP_WP ;;打开写保护
CALL STA
MOVLW B'10100000' ;24C256的地址。
CALL WRBYT
CALL CACK
MOVF EEP_ADH,W
CALL WRBYT
CALL CACK
MOVF EEP_ADL,W
CALL WRBYT
CALL CACK
MOVF EEP_DATA,W
CALL WRBYT
CALL CACK
CALL STOP
BSF EEP_WP ;关闭写保护
RETURN
;/*****************************************************************
;** 函数名:Read a byte
;** 输 入:
;** EEP_ADH 要READ OUT 24c256的高8位地址
;** EEP_ADL READ OUT 24c256的低8位地址
;** 输 出: EEP_DATA 要读出的字节。
;** 功能描述:a byte 写入24c256
;** 全局变量:
;** 调用模块:模拟I2C BUS SUB
;** 作 者:lijun leejun@qingdaonews.com
;** 日 期:2002/6/4
;** 版本 1.0
;****************************************************************/
Read_Byte NOP
CALL STA
MOVLW B'10100000' ;slave address and read
CALL WRBYT
CALL CACK
MOVF EEP_ADH,W ;high byte address
CALL WRBYT
CALL CACK
MOVF EEP_ADL,W ;low byte address
CALL WRBYT
CALL CACK
CALL STA ;trans start again
MOVLW B'10100001' ;slave address and read
CALL WRBYT
CALL CACK
CALL RDBYT
MOVWF EEP_DATA
CALL MNACK
CALL STOP
RETURN
;/*****************************************************************
;** 函数名:WR4_24C256 连写
;** 输 入:;y1,y2,y3,y4 是要写入的数据。
;** EEP_ADH 要写入24c256的高8位地址。是起始地址
;** EEP_ADL 要写入24c256的低8位地址。是起始地址
;**
;** 输 出: NO
;** 功能描述:4 byte 写入24c256
;** 全局变量:FSR INDF
;** 调用模块:模拟I2C BUS SUB
;** 作 者:lijun leejun@qingdaonews.com
;** 日 期:2002/6/3
;** 版本 1.0
;****************************************************************/
WR4_24C256
BCF EEP_WP ;;打开写保护
CALL STA
MOVLW B'10100000'
CALL WRBYT
CALL CACK
MOVF EEP_ADH,W
CALL WRBYT
CALL CACK;
MOVF EEP_ADL,W
CALL WRBYT
CALL CACK
MOVF Y1,W ;*****Y1
CALL WRBYT
CALL CACK
MOVF Y2,W ;******Y2;
CALL WRBYT
CALL CACK
MOVF Y3,W ;******Y3
CALL WRBYT
CALL CACK
MOVF Y4,W ;******Y4
CALL WRBYT
CALL CACK
CALL STOP
BSF EEP_WP ;关闭写保护
RETURN
;/*****************************************************************
;** 函数名:RD4_24C256 单读
;** 输 入:
;** EEP_ADH 要写入24c256的高8位地址。
;** EEP_ADL 要写入24c256的低8位地址。
;**
;** 输 出: y1,y2,y3,y4 1吨,10吨;100吨,1000吨;万吨,十万吨;百万吨,千万吨;
;** 功能描述:从24c256中读出4 字节。
;** 全局变量:FSR INDF
;** 调用模块:模拟I2C BUS SUB
;** 作 者:lijun leejun@qingdaonews.com
;** 日 期:2002/6/3
;** 版本 1.0
;****************************************************************/
RD4_24C256 NOP
CALL Read_Byte
MOVF EEP_DATA,W
MOVWF Y1
INCF EEP_ADL
CALL Read_Byte
MOVF EEP_DATA,W
MOVWF Y2
INCF EEP_ADL
CALL Read_Byte
MOVF EEP_DATA,W
MOVWF Y3
INCF EEP_ADL
CALL Read_Byte
MOVF EEP_DATA,W
MOVWF Y4
RETURN
;****************************************************************
文章评论(0条评论)
登录后参与讨论