?? iicmwp.asm
字號:
;********************IICMWP********************
;本程序實現IIC主控方式連續發送數據。
;入口參數:從機地址在SADR中,待發送的數據首地址在DADR中,EEPROM字地址在SADRH中,
; 數據個數在CNT中。
;出口參數:無。
;占用資源:W,STATUS,FSR,020H~023H,028H,07FH,07EH,17FH,SSP模塊,1重堆棧。
;說明: 1.使用該程序需在中斷入口程序中填入如下兩條指令
; BTFSC PIR1,SSPIF
; GOTO MWPINT
; 2.同步時鐘頻率為100K
; 3.本程序可以向EEPROM中寫入一頁數據:SADRH中為字地址,DADR為數據首地址,
; SADR中為EEPROM的控制字,CNT中為字節數(不能超過一頁)。
IFNDEF IICMWP1
#DEFINE IICMWP1
SAVEW EQU 07FH ;現場保護中保存W的地址
SAVES EQU 07EH
INCLUDE "INITIICM.ASM"
IICMWP MOVF DADR,W
MOVWF FSR
GOTO INITIICM ;初始化
;*****************中斷服務程序***************
MWPINT MOVWF SAVEW
SWAPF STATUS,W
CLRF STATUS
MOVWF SAVES ;保護現場
BCF PIR1,SSPIF
BSF STATUS,C
RLF TEMP1,F
BTFSS TEMP1,1
GOTO PROG001 ;第一次進入中斷
BTFSS TEMP1,2
GOTO PROG002 ;第二次進入中斷
MOVF CNT,F
BTFSC STATUS,Z
GOTO PROG004 ;數據發送完畢
GOTO PROG003 ;第三次進入中斷
PROG001 MOVF SADR,W
ANDLW 0FEH ;R/W=0,發送模式
MOVWF SSPBUF ;發送地址
GOTO DONE19
PROG002 MOVF SADRH,W
MOVWF SSPBUF ;發送字地址
GOTO DONE19
PROG003 MOVF INDF,W
MOVWF SSPBUF ;發送數據
INCF FSR,F
DECF CNT,F
GOTO DONE19
PROG004 BSF STATUS,RP0
BSF SSPCON2,PEN ;發送停止位
BTFSC SSPCON2,PEN ;停止位結束?
GOTO $-1
BCF STATUS,RP0
BCF SSPCON,SSPEN ;釋放總線
BSF STATUS,RP0
BCF PIE1,SSPIE ;SSP中斷禁止
BCF STATUS,RP0
BCF PIR1,SSPIF
DONE19 SWAPF SAVES,W
MOVWF STATUS
SWAPF SAVEW,F
SWAPF SAVEW,W ;恢復現場
RETFIE
ENDIF
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -