⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iicmrc.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************IICMRC********************
;本程序实现IIC主控方式接收N个字节数据。
;入口参数:从机地址在SADR中,接收数据存放的首地址在DADR中,读取数据字节数在CNT中。
;出口参数:接收到的数据在指定RAM中。
;占用资源:W,STATUS,FSR,020H,022H,023H,028H,029H,07FH,07EH,17FH,SSP模块,1重堆栈。
;说明:    1.使用该程序需在中断入口程序中填入如下两条指令
;           BTFSC	PIR1,SSPIF
;           GOTO	MRCINT
;          2.本程序可以从EEPROM的当前地址读取N个字节,EEPROM控制字在SADR中。

           IFNDEF       IICMRC1
            #DEFINE     IICMRC1

SAVEW      EQU          07FH            ;现场保护中保存W的地址
SAVES      EQU          07EH

            INCLUDE     "INITIICM.ASM"

IICMRC     MOVF         DADR,W
           MOVWF        FSR
           GOTO         INITIICM        ;初始化配置
           RETURN
;*****************中断服务程序***************
MRCINT     MOVWF        SAVEW
           SWAPF        STATUS,W
           CLRF         STATUS
           MOVWF        SAVES           ;保护现场
           
           BCF          PIR1,SSPIF
           BSF          STATUS,C
           RLF          TEMP1,F
           BTFSS        TEMP1,1
           GOTO         PROG111         ;第一次进入中断
           BTFSS        TEMP1,2
           GOTO         PROG222         ;第二次进入中断
           GOTO         PROG333         ;第三次以后的中断


PROG111    MOVF         SADR,W
           IORLW        01H             ;R/W=1,接收模式
           MOVWF        SSPBUF          ;发送地址(控制字)
           GOTO         DONE17           
PROG222    MOVLW        0FH
           MOVWF        TEMP2           ;TEMP2用来区分接收完毕和应答结束中断
           BSF          STATUS,RP0
           BSF          TRISC,4
           BSF          SSPCON2,RCEN    ;使能接受
           BCF          STATUS,RP0
           GOTO         DONE17          ;第二次中断
PROG333    SWAPF        TEMP2,F
           BTFSC        TEMP2,0
           GOTO         ACKDONE         
           MOVF         SSPBUF,W
           MOVWF        INDF            ;接收数据
           INCF         FSR,F
           DECFSZ       CNT,F                      
           GOTO         SENDACK
           BSF          STATUS,RP0
           BSF          SSPCON2,ACKDT   ;不应答
           BSF          SSPCON2,ACKEN   ;应答位使能  
           BTFSC        SSPCON2,ACKEN   ;应答完成?
           GOTO         $-1
           BSF          SSPCON2,PEN     ;停止位                   
           BCF          PIE1,SSPIE      ;SSP中断禁止
           BCF          STATUS,RP0
           BCF          SSPCON,SSPEN    ;释放总线
           CLRF         TEMP1   
           GOTO         DONE17
SENDACK    BSF          STATUS,RP0
           BCF          SSPCON2,ACKDT   ;应答
           BSF          SSPCON2,ACKEN   ;应答位使能
           BCF          STATUS,RP0
           GOTO         DONE17
ACKDONE    BSF          STATUS,RP0          
           BSF          SSPCON2,RCEN    ;使能接受
           BCF          STATUS,RP0
DONE17     SWAPF        SAVES,W
           MOVWF        STATUS
           SWAPF        SAVEW,F
           SWAPF        SAVEW,W         ;恢复现场
           RETFIE
          ENDIF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -