导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→该“IC_24C16”程序可以操作2401——2416的所有

* 9093: 初学者:救救我吧

   傲气雄鹰 
傲气雄鹰发表的帖子 

 该“IC_24C16”程序可以操作2401——2416的所有器件。

;---------IC_24C16----------------------------------------------------
IC_24C16_SDA    BIT    P2.5
IC_24C16_SCLK    BIT    P2.4

;----------
IC_24C16_WRITE:            ;DPTR=ADDR,ACC-->EEPROM
    ;写一个字节
    PUSH ACC
    SETB IC_24C16_SDA
    CLR IC_24C16_SCLK
    CALL IC_24C16_START
    MOV A,DPH
    ANL A,#00000111B
    CLR CY
    RLC A
    ORL A,#0A0H        ;DEVICE ADDR_H,WRITE MODE
    CALL IC_24C16_SHIFT8
    CALL IC_24C16_ACK
    MOV A,DPL        ;ADDR_L
    CALL IC_24C16_SHIFT8    ;WT ADDR TO 24C16 BEEFOR READ;
    CALL IC_24C16_ACK
    POP ACC            ;DATA
    CALL IC_24C16_SHIFT8
    CALL IC_24C16_ACK
    CALL IC_24C16_STOP
    CALL IC_24C16_DELAY
    RET
;----------
IC_24C16_READ:            ;DPTR=ADDR,EEPROM-->ACC
    SETB IC_24C16_SDA
    CLR IC_24C16_SCLK
    CALL IC_24C16_START

    MOV A,DPH
    ANL A,#00000111B
    CLR CY
    RLC A
    ORL A,#0A0H        ;DEVICE ADDR=0,WRITE MODE
    CALL IC_24C16_SHIFT8

    CALL IC_24C16_ACK
    MOV A,DPL        ;ADDR_L OF DATA
    CALL IC_24C16_SHIFT8    ;WT ADDR_L TO 24C16 BEEFOR READ;
    CALL IC_24C16_ACK

    CALL IC_24C16_START

    MOV A,DPH
    ANL A,#00000111B    ;ADDR_H
    SETB CY
    RLC A
    ORL A,#0A0H        ;DEVICE ADDR=0,READ MODE
    CALL IC_24C16_SHIFT8

    CALL IC_24C16_ACK
    SETB IC_24C16_SDA
    MOV R7,#8        ;READ DATA
    CLR A
    SETB IC_24C16_SDA
IC_24C16_READ_0:
    RL A
    SETB IC_24C16_SCLK
    MOV C,IC_24C16_SDA
    MOV ACC.0,C
    CLR IC_24C16_SCLK
    DJNZ R7,IC_24C16_READ_0

    LCALL IC_24C16_STOP
    RET
;--------- 24C01 READ & WRITE SUB --------------------
IC_24C16_START:
    CLR IC_24C16_SDA
    SETB IC_24C16_SDA
    SETB IC_24C16_SCLK
    CLR IC_24C16_SDA    ;START
    CLR IC_24C16_SCLK
    RET
;----------
IC_24C16_STOP:
    CLR IC_24C16_SDA
    SETB IC_24C16_SCLK
    SETB IC_24C16_SDA
    RET
;----------
IC_24C16_ACK:
    SETB IC_24C16_SCLK
    CLR IC_24C16_SCLK
    RET
;----------
IC_24C16_SHIFT8:
    PUSH 07H
    MOV R7,#8
IC_24C16_SH01:
    RLC A
    MOV IC_24C16_SDA,C
    SETB IC_24C16_SCLK
    CLR IC_24C16_SCLK
    DJNZ R7,IC_24C16_SH01
    POP 07H
    RET
;----------
IC_24C16_DELAY:
    PUSH 07H
    MOV R7,#00H
IC_24C16_DELAY_01:
    DJNZ R7,IC_24C16_DELAY_01
    POP 07H
    RET
;---------IC_24C16_END----------------------------------------------------


发表时间:2002年7月17日11:15:00

  
回复该帖

本主题共有 4 帖,分页:>>>>>该主题的所有内容[4]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:C51编程:有没有带有两个串口(UART)的单片机(51,AVR,PIC都可)请教各位大侠:有没有带
[下一篇帖子]:硬件:有谁能提供测量距离在0-1000mm的确传感器,精度为1mm,拜托各位!