原创 AT24c256 子程序 pic16fxxxx

2008-2-1 08:23 2954 6 6 分类: MCU/ 嵌入式

;/*****************************************************************************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


;****************************************************************

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条