Está en la página 1de 3

list p=16f877A

INCLUDE "P16F877A.INC"
__CONFIG _CP_OFF& _DEBUG_OFF& _WRT_OFF& _LVP_OFF& _BODEN_OFF& _PWRTE_ON& _WDT_O
FF& _XT_OSC
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&
CBLOCK 0X20
DATIN,DATOUT,BKW,BKS,DIREC,R1,R2
ENDC
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&
ORG
0x00
GOTO
INICIO
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&
INICIO
CLRF
PORTC
CLRF
PORTB
BANKSEL
TRISC
MOVLW 0xFF
MOVWF TRISC
MOVWF
TRISB
movlw b'00000001'
movwf TRISA
;AN0 entrada, resto del puerto salidas
movlw b'00000000'
movwf ADCON1
;Canal 0 del ADC, Conversin en 64/Fosc
BANKSEL
SSPCON
MOVLW
B'00101000'
;ACTIVA
MODULO MSSP
MOVWF
SSPCON
BANKSEL
SSPSTAT
MOVLW
B'10000000'
;CONFIGU
RA VELOCIDAD ESTANDAR PARA I2C
MOVWF
SSPSTAT
BANKSEL SSPADD
MOVLW
.9
;CARGA PARA LA VELOCIDAD DE 100KHz
MOVWF
SSPADD
BANKSEL
DATIN
CLRF
DATIN
CLRF
DATOUT
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&
;AQUI SE SELECCIONA EL ESCLAVO Y EL MODO A TRANSMITIR
;01 SLAVE1
;11 SLAVE2
OTRO
MOVLW B'11000001'
MOVWF ADCON0
CALL
RETARDO
BCF PIR1,ADIF
BSF
ADCON0,2;ACTIVAMOS EL GO/DONE=1, CON LO QUE INICIA LA CONVERSION
PREGUNTA
BTFSS PIR1,ADIF
GOTO
PREGUNTA
BCF
PIR1,ADIF
movf ADRESH,W
MOVWF DATOUT
ESC1
BANKSEL
PORTB
BTFSS
PORTB,0
;PREGUNTA POR CONDICION

DE INICIO RB0=1??
GOTO

$-1
BTFSC

PORTB,1

GOTO

ESC2

;PREGUNTA CUAL E

SCLAVO OCUPARA
LAVE1,RB1=1:SLAVE2
MOVLW
MOVWF

0xA0
DIREC

CALL
O EN EL BUFFER

;RB1=0:S
;CARGA LA DIRECCION DEL SLAVE1

WRITE
CALL
GOTO

;MANDA ESCRIBIRL
RETARDO
OTRO

ESC2
MOVLW
ION DEL SLAVE2
MOVWF
CALL

0xB0

DIREC
WRITE
CALL

GOTO

;CARGA LA DIRECC

RETARDO
OTRO

;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&
WRITE
BANKSEL
PIR1
BCF
PIR1,SSPIF
;LIMPIA
LA BANDERA DE ESCRITURA/LECTURA
BANKSEL
SSPCON2
BSF
SSPCON2,SEN
CALL
CHEK
BANKSEL
DIREC
MOVF
DIREC,W
CALL
SENDB
CALL
CHEK
BANKSEL
DATOUT
MOVF
DATOUT,W
CALL
SENDB
CALL
CHEK
BANKSEL
SSPCON2
BSF
SSPCON2,PEN
CALL
CHEK
MOVF
BKS,W
MOVWF
STATUS
MOVF
BKW,W
RETURN
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&
SENDB
BANKSEL PIR1
BCF
PIR1,SSPIF
BANKSEL
SSPBUF
MOVWF
SSPBUF
RETURN
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&
CHEK
BANKSEL
PIR1
BTFSS
PIR1,SSPIF

GOTO
$-1
RETURN
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&
RETARDO
MOVLW
.2
MOVWF
R2
PRIMERO
MOVLW .5
MOVWF R1
SEGUNDO
DECFSZ
R1,F
GOTO
SEGUNDO
DECFSZ
R2,F
GOTO
PRIMERO
RETURN
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&
END

También podría gustarte