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

📄 iics.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************IICS********************
;本程序实现IIC从动方式发送或接受2个字节数据。
;入口参数:本机地址在SADR中,待发送的数据在SOUH:SOU中。
;出口参数:接收到的数据在SOUH:SOU中。
;占用资源:W,STATUS,024H,025H,028H,029H,07FH,07EH,17FH,SSP模块,1重堆栈。
;说明:    1.使用该程序需在中断入口程序中填入如下两条指令
;           BTFSC	PIR1,SSPIF
;           GOTO	SSPINT2

           IFNDEF       IICS1
            #DEFINE     IICS1

SAVEW      EQU          07FH            ;现场保护中保存W的地址
SAVES      EQU          07EH
                  
IICS       MOVLW        16H             ;初始化SSPCON,
           MOVWF        SSPCON          ;IIC从动模式,7位寻址
           BCF          PIR1,SSPIF

           BSF          STATUS,RP0
           BSF          TRISC,3         ;设置SCL为输入
           BSF          TRISC,4         ;设置SDA为输入
           MOVLW        80H
           MOVWF        SSPSTAT         ;初始化SSPSTAT寄存器,
           BCF          STATUS,RP0
           MOVF         SADR,W          
           BSF          STATUS,RP0
           MOVWF        SSPADD          ;设定本机地址
           BSF          SSPCON2,7       ;允许通用呼叫地址寻址
           BSF          PIE1,SSPIE      ;SSP中断允许
           BCF          STATUS,RP0      

           CLRF         TEMP1           ;TEMP1记录SSP中断的次数
           BSF          INTCON,GIE
           BSF          INTCON,PEIE     ;开中断
           BSF          SSPCON,SSPEN    ;SSP模块使能

           RETURN
;*****************中断服务程序***************
SSPINT2    BCF          SSPCON,CKP      ;拉低SCL
           MOVWF        SAVEW
           SWAPF        STATUS,W
           CLRF         STATUS
           MOVWF        SAVES           ;保护现场           
 
           BCF          PIR1,SSPIF
           BSF          STATUS,C
           RLF          TEMP1,F
           BTFSS        TEMP1,1
           GOTO         PROG11          ;第一次进入中断
           BTFSS        TEMP1,2
           GOTO         PROG22          ;第二次进入中断
           BTFSS        TEMP1,3
           GOTO         PROG33          ;第三次进入中断
           BTFSS        TEMP1,4
           GOTO         PROG44          ;第四次进入中断
           GOTO         DONE16
           
PROG11     BSF          STATUS,RP0
           BCF          STATUS,C
           BTFSC        SSPSTAT,R_W
           BSF          STATUS,C           
           BCF          STATUS,RP0
           RLF          TEMP2,F         ;TEMP2:0暂存R_W位

           MOVF         SSPBUF,W        ;BF位清0
           BTFSS        TEMP2,0         ;接收或发送
           GOTO         DONE16          ;接收

           BSF          STATUS,RP0
           BCF          TRISC,4
           BCF          STATUS,RP0
           MOVF         SOUH,W          ;发送第一个字节
           MOVWF        SSPBUF
           GOTO         DONE16
PROG22     BTFSS        TEMP2,0
           GOTO         RECEIVE1
           MOVF         SOU,W
           MOVWF        SSPBUF          ;发送第二个字节
           GOTO         DONE16
RECEIVE1   MOVF         SSPBUF,W
           MOVWF        SOUH            ;接收第一个字节
           GOTO         DONE16
PROG33     BTFSC        TEMP2,0
           GOTO         DONE16           
           MOVF         SSPBUF,W
           MOVWF        SOU             ;接收第二个字节
      
DONE16     SWAPF        SAVES,W
           MOVWF        STATUS
           SWAPF        SAVEW,F
           SWAPF        SAVEW,W         ;恢复现场
           BSF          SSPCON,CKP      ;恢复SCL
           RETFIE
          ENDIF

⌨️ 快捷键说明

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