登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

我都快疯了,帮我看看吧,24C02读程序!

作者:chqy326 栏目:单片机
我都快疯了,帮我看看吧,24C02读程序!
  list             p=16C57
  
  INCLUDE         "d:\pic\lib\p16c5x.inc"
;**************************************************
VAR0            EQU        08H
VAR1            EQU        09H


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

TRISC_RD        EQU       0BFH     ;read rom data
TRISC_WR        EQU      03FH    ;write rom data

COMM_WR           EQU       0A0H
COMM_RD               EQU       0A1H

#DEFINE            PC_SDA    PORTC,7
#DEFINE            PC_SCL    PORTC,6
;**************************************************

                ORG        0000H
                GOTO    RESET

ROM_START:            
                MOVLW    TRISC_RD
                TRIS    7
                CALL    NOP_4
                BTFSS    PC_SDA
                GOTO    START_ERR
                MOVLW    TRISC_WR
                TRIS    7
                CALL    NOP_4
                BSF        PC_SDA
                CALL    NOP_4
                BSF        PC_SCL
                CALL    NOP_4
                BCF        PC_SDA
                CALL    NOP_4
                BCF        PC_SCL
                CALL    NOP_4
                
                BTFSC    PC_SDA
                GOTO    ROM_START
                RETLW    00H


RESET:
                CALL    ROM_START


WR_COM:            MOVLW    08H
                MOVWF    VAR0
                MOVLW    COMM_WR
                MOVWF    VAR1                
                CALL    WR_LOOP

                MOVLW    00H
                MOVWF    VAR1
                MOVLW    08H
                MOVWF    VAR0
                CALL    WR_LOOP

                CALL    ROM_START
                MOVLW    08H
                MOVWF    VAR0
                MOVLW    COMM_RD
                MOVWF    VAR1                
                CALL    WR_LOOP
                
                MOVLW    08H
                MOVWF    VAR1

READ1:            MOVLW    TRISC_RD
                TRIS    7
READ2:            BSF        PC_SCL
                RLF 
2楼: >>参与讨论
xieyuanbin
IIC读写24XX汇编例程
IIC 24XX EEPROM系列写程序
使用连续字节读,EEPROM起始地址IIC_ADD,数据首地址FSR,数据字节个数DATACT
IIC 24系列EEPROM读顺序:START;地址/控制位(写);应答;写入地址;应答;地址/控制位(读);应答;数据,应答,...数据,STOP
READ_24EE
    CALL    START_C
    MOVLW    WRITE_C
    CALL    IIC_M_TB
    MOVF    IIC_ADD,W
    CALL    IIC_M_TB
    MOVLW    READ_C
    CALL    IIC_M_TB
LOOP_READ_IIC
    CALL    IIC_M_RB
    MOVF    TX_BUFF,W
    MOVWF    INDF
    INCF    FSR
    DECFSZ    DATACT
    GOTO    ACK_C
    CALL    STOP_C
ACK_C
    CALL    T_LOW
    GOTO    LOOP_READ_IIC
;****************************************************************************************
IIC 主发送字节程序
IIC_M_TB
    MOVWF    TX_BUFF
    MOVLW    D'8'
    MOVWF    TX_BCNT
LOOP_MTB
    BTFSS    TX_BUFF,7
    GOTO    TX_B0
TX_B1
    CALL    T_HIGH
    GOTO    END_T_BIT
TX_B0
    CALL    T_LOW
END_T_BIT
    RLF    TX_BUFF
    DECFSZ    TX_BCNT
    GOTO    LOOP_MTB
END_T_BYTE
    CALL    GET_ACK
    RETURN        
;---------------------------------------
;IIC 主接收字节程序
IIC_M_RB
    MOVLW    D'8'
    MOVWF    TX_BCNT
    CLRF    TX_BUFF
LOOP_MRB
    RLF    TX_BUFF
    CALL    RX_BIT
    BCF    TX_BUFF,0
    BTFSC    DATA_L
    BSF    TX_BUFF,0
    DECFSZ    TX_BCNT
    GOTO    LOOP_MRB
    MOVF    TX_BUFF,W
    RETURN
;----------------------------------------------------------------------------------------

T_LOW
    CALL    CLR_CLK
    CALL    IIC_TIME
    CALL    CLR_DATA
    CALL    IIC_TIME
    CALL    SET_CLK
    CALL    IIC_TIME
    RETURN
;------------------------------------
T_HIGH
    CALL    CLR_CLK
    CALL    IIC_TIME
    CALL    SET_DATA
    CALL    IIC_TIME
    CALL    SET_CLK
    CALL    IIC_TIME
    RETURN
;------------------------------------
GET_ACK
    CALL    CLR_CLK
    CALL    SET_DATA
    CALL    IIC_TIME
    CALL    SET_CLK
    CALL    IIC_TIME
    BCF    IIC_FLAG,ACKI
    BTFSC    DATA_L
    BSF    IIC_FLAG,ACKI
    CALL    IIC_TIME
    RETURN
;------------------------------------
RX_BIT
    CALL    CLR_CLK
    CALL    SET_DATA
    CALL    IIC_TIME
    CALL    SET_CLK
    CALL    IIC_TIME
    RETURN
;------------------------------------
START_C
    CALL    CLR_CLK
    CALL    SET_DATA
    CALL    IIC_TIME
    CALL    SET_CLK
    CALL    IIC_TIME
    CALL    IIC_TIME
    CALL    CLR_DATA
    CALL    IIC_TIME
    RETURN
;------------------------------------
STOP_C
    CALL    CLR_CLK
    CALL    CLR_DATA
    CALL    IIC_TIME
    CALL    SET_CLK
    CALL    IIC_TIME
    CALL    SET_DATA
    CALL    IIC_TIME
    RETURN
;------------------------------------
SET_DATA
    BSF    STATUS,RP0
    BSF    DATA_L
    BCF    STATUS,RP0
    RETURN
CLR_DATA
    BCF    DATA_L
    BSF    STATUS,RP0
    BCF    DATA_L
    BCF    STATUS,RP0
    RETURN
;------------------------------------
SET_CLK
    BSF    CLK_L
    MOVF    PH_TEMP1,W
    MOVWF    PORTC
    RETURN
CLR_CLK
    BCF    CLK_L
    MOVF    PH_TEMP1,W
    MOVWF    PORTC
    RETURN


3楼: >>参与讨论
梦幻空花
为什么总是有人做重复劳动呢?
买本张明峰教主的书不就有现成的了。
至少可以参考比较哪里ERROR了

4楼: >>参与讨论
heciang
搞不定给我写,我给你搞定。没有问题。我做IIC是大拿。
 
参与讨论
昵称:
讨论内容:
 
 
相关帖子
求PIC16F877的串口通讯程序以及定时器应用的汇编示例程序
12c509输出的问题
为了做MCU,CAN的朋友开了一个 群
绝对优惠价供应dsPIC系列芯片
刚接触这,有谁可以帮我解说一下电路原理?
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号