📄 iicmwb.asm
字号:
;********************IICMWB********************
;本程序实现IIC主控方式发送2个字节数据。
;入口参数:待发送的数据在SOUH:SOU中,从机地址在SADR中。
;出口参数:无。
;占用资源:W,STATUS,020H,024H,025H,07FH,07EH,17FH,SSP模块,1重堆栈。
;说明: 1.使用该程序需在中断入口程序中填入如下两条指令
; BTFSC PIR1,SSPIF
; GOTO MWBINT
; 2.同步时钟频率为100KHZ
; 3.本程序可以向EEPROM中写入一个字节数据:SOUH中为字地址,
; SOU中为数据,SADR中为EEPROM的控制字
IFNDEF IICMWB1
#DEFINE IICMWB1
SAVEW EQU 07FH ;现场保护中保存W的地址
SAVES EQU 07EH
INCLUDE "INITIICM.ASM"
IICMWB GOTO INITIICM ;初始化
;*****************中断服务程序***************
MWBINT MOVWF SAVEW
SWAPF STATUS,W
CLRF STATUS
MOVWF SAVES ;保护现场
BCF PIR1,SSPIF
BSF STATUS,C
RLF TEMP1,F
BTFSS TEMP1,1
GOTO PROG1 ;第一次进入中断
BTFSS TEMP1,2
GOTO PROG2 ;第二次进入中断
BTFSS TEMP1,3
GOTO PROG3 ;第三次进入中断
BTFSS TEMP1,4
GOTO PROG4 ;第四次进入中断
GOTO PROG5 ;第五次进入中断
PROG1 MOVF SADR,W
ANDLW 0FEH ;R/W=0,发送模式
MOVWF SSPBUF ;发送地址
GOTO DONE15
PROG2 MOVF SOUH,W
MOVWF SSPBUF ;发送第一个字节
GOTO DONE15
PROG3 MOVF SOU,W
MOVWF SSPBUF ;发送第二个字节
GOTO DONE15
PROG4 BSF STATUS,RP0
BSF SSPCON2,PEN ;发送停止位
BCF STATUS,RP0
GOTO DONE15
PROG5 BCF SSPCON,SSPEN ;释放总线
BSF STATUS,RP0
BCF PIE1,SSPIE ;SSP中断禁止
BCF STATUS,RP0
DONE15 SWAPF SAVES,W
MOVWF STATUS
SWAPF SAVEW,F
SWAPF SAVEW,W ;恢复现场
RETFIE
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -