您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机PIC16C74B单片机与AT24C64通讯程序 正文
PIC16C74B单片机与AT24C64通讯程序

PIC16C74B单片机与AT24C64通讯程序

点击数:7974 次   录入时间:03-04 11:46:02   整理:http://www.55dianzi.com   PIC单片机
;   4. 如果为高电平,设置错误状态,返回
;   5. 如果为低电平,延时2个指令周期后,将RC口SCL设置为低电平,继续执行
;---------------------------------------
        BSF        STATUS,RP0
        BCF        TRISC,SCL
        BSF        TRISC,SDA
        NOP
        NOP
        BSF        TRISC,SCL
        NOP
        BCF        STATUS,RP0
        BTFSC      RC,SDA
        GOTO       TX_ERR
        BSF        STATUS,RP0
        BCF        TRISC,SCL
        BCF        STATUS,RP0
        BCF        BUSSTA,TX_PROGRESS
        BSF        BUSSTA,TX_SUCCESS
        BCF        BUSSTA,ACK_ERROR
        GOTO       TX_END
TX_ERR  BCF        BUSSTA,TX_PROGRESS
        BCF        BUSSTA,TX_SUCCESS
        BSF        BUSSTA,ACK_ERROR
TX_END  RETURN
;=======================================
;从EEPROM中读出 8 位的数据,并发送发送ACK信号
;入口:  EEPROM  存储器
;       BUSCON  寄存器
;出口:  RXBUF   寄存器
;       BUSSTA  寄存器
;=======================================
I2CRXB  BCF        STATUS,RP0
        BSF        BUSSTA,RX_PROGRESS
        BCF        BUSSTA,RX_SUCCESS
        MOVLW      0X08
        MOVWF      BCOUNT
RXLOOP  CLRWDT
        BSF        STATUS,RP0
        BCF        TRISC,SCL          ;定义TRISC<SCL>为输出
        BSF        TRISC,SDA          ;定义TRISC<SDA>为输入       
        NOP              
        NOP
        BSF        TRISC,SCL          ;TRISC<SCL>输出高电平
        NOP
        BCF        STATUS,RP0
        BCF        STATUS,C
        BTFSC      RC,SDA             ;原指令为BTFSC TRISC,SDA
        BSF        STATUS,C
        RLF        RXBUF,F
        DECFSZ     BCOUNT,F
        GOTO       RXLOOP
;---------------------------------------
;发送ACK信号到EEPROM
;判断接收的是否为最后一个字节
;LAST_BYTE_RX为1,是    SDA发送一个高电平,结束
;LAST_BYTE_RX为0,不是  SDA发送一个低电平ACK,继续接收
;---------------------------------------
        BSF        STATUS,RP0
        BCF        TRISC,SCL      
        BCF        TRISC,SDA      
        BTFSC      BUSCON,LAST_BYTE_RX      ;检测是否是最后一个字节
        BSF        TRISC,SDA                ;是最后一个字节
        NOP                             ;发送ACK信号
        BSF        TRISC,SCL
        NOP
        NOP
        NOP
        NOP
        BCF        TRISC,SCL
        BCF        STATUS,RP0
        BCF        BUSSTA,RX_PROGRESS   
        BSF        BUSSTA,RX_SUCCESS
        RETURN
;=======================================
;I2C 开始信号
;输入:  无
;输出:  BUFSSTA<BUS_BUSY>
;=======================================
I2CSTART
        BSF     STATUS,RP0
        BSF     TRISC,SDA    ;1US
        NOP                     ;1US

上一页  [1] [2] [3] [4] [5] [6]  下一页


本文关键字:单片机  程序  PIC单片机单片机-工控设备 - PIC单片机