STA: BSF PORTA,SDA
BSF PORTA,SCL
NOP
NOP
NOP
NOP
BCF PORTA,SDA
NOP
NOP
NOP
NOP
BCF PORTA,SCL
RETURN
STOP: BCF PORTA,SDA
BSF PORTA,SCL
NOP
NOP
NOP
NOP
BSF PORTA,SDA
NOP
NOP
NOP
NOP
BCF PORTA,SDA
BCF PORTA,SCL
RETURN
CACK: BSF STATUS,RP0
BSF TRISA,SDA
BCF STATUS,RP0
BSF PORTA,SCL
NOP
NOP
NOP
NOP
BCF BIT_SG,F0
BTFSC PORTA,SDA
BSF BIT_SG,F0
CEND: BCF PORTA,SCL
BSF STATUS,RP0
BCF TRISA,SDA
BCF STATUS,RP0
RETURN
WRBYT: MOVLW 08H
MOVWF CUNT1
WLP: RLF WW,F
BTFSS STATUS,C ;SKPC
GOTO WR0
GOTO WR1
WLP1: DECFSZ CUNT1,F
GOTO WLP
RETURN
WR1: BSF PORTA,SDA
BSF PORTA,SCL
NOP
NOP
NOP
NOP
BCF PORTA,SCL
BCF PORTA,SDA
GOTO WLP1
WR0: BCF PORTA,SDA
BSF PORTA,SCL
NOP
NOP
NOP
NOP
BCF PORTA,SCL
GOTO WLP1
;//////////////////////////////////////////////////////////////////////////
;//////////////////////////////////////////////////////////////////////////
EEPROM_R: ;EEPROM 读子程序,把地址ADDR中内容读至DATA0
BCF STATUS,RP1 ;BANK0
BCF STATUS,RP0
MOVF ADDR,W
BSF STATUS,RP0 ;BANK1
MOVWF EEADR
BCF EECON1,WRERR
BSF EECON1,RD
MOVF EEDATA,W
BCF STATUS,RP0 ;BANK0
MOVWF DATA0
RETURN ;不带参数返回
;//////////////////////////////////////////////////////////////////////////
EEPROM_W: ;EEPROM 写子程序,把VALU中数值写入地址ADDR
CLRWDT
BCF STATUS,RP1 ;BANK1
BSF STATUS,RP0
BTFSC EECON1,WR ;等待写允许
GOTO $-1
BCF STATUS,RP0 ;BANK0
MOVF ADDR,W
BSF STATUS,RP0 ;BANK1
MOVWF EEADR
BCF STATUS,RP0 ;BANK0
MOVF VALU,W
BSF STATUS,RP0 ;BANK1
MOVWF EEDATA
BCF EECON1,WRERR
BSF EECON1,WREN
BCF INTCON,GIE
MOVLW 55H
MOVWF EECON2
MOVLW 0AAH
MOVWF EECON2
BSF EECON1,WR
BTFSC EECON1,WR
GOTO $-1
BSF INTCON,GIE ;写结束
BCF EECON1,WREN
BCF STATUS,RP0 ;BANK0
RETURN ;不带参数返回
;////////////////////////////////////////////////////////////////////////
;////////////////////////////////////////////////////////////////////////
DELAY: MOVLW 05H
MOVWF CUNT3
DELAY1: NOP ;2ms
CLRWDT
MOVLW 0FFH
MOVWF CUNT4
DELAY2: NOP
MOVF CUNT4,W
NOP
BTFSC STATUS,Z
GOTO DELAY3
NOP
DECF CUNT4,F
NOP
GOTO DELAY2
DELAY3: NOP
MOVF CUNT3,W
BTFSC STATUS,Z
GOTO DELAY_RET
NOP
DECF CUNT3,F
NOP
GOTO DELAY1
NOP
DELAY_RET: RETURN
;////////////////////////////////////////////////////////////////////////
;////////////////////////////////////////////////////////////////////////
FILL (GOTO $),NEXT_BLOCK-$
ORG 03FFH
NEXT_BLOCK:
END
pic16f627键盘显示+E2PROM存取+模拟I2C总线通信等模块示例程序
上一页 [1] [2] [3] [4]
本文关键字:通信 程序 键盘 PIC单片机,单片机-工控设备 - PIC单片机