Girishs449
Newbie level 5
Serial communication using pic 16f877a
Hi friends, i'm doing a circuit for communicating 2 pic's in master and slave mode.
In this data from port B of master is transmitted in serial to the slave and output the data to port B of slave.
but its not working. there is no response.
I'm using pic 16f877A, 20MHZ xtal.
please help
here is the circuit
code for master
code for slave
Hi friends, i'm doing a circuit for communicating 2 pic's in master and slave mode.
In this data from port B of master is transmitted in serial to the slave and output the data to port B of slave.
but its not working. there is no response.
I'm using pic 16f877A, 20MHZ xtal.
please help
here is the circuit
code for master
Code:
TITLE "SERIAL COMMUNICATION MASTER MODE.ASM"
LIST P=16F877A, R=DEC
INCLUDE "P16F877A.INC"
; DATA SEGMENT
PAGE
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
ORG 0X00 ; START PROGRAM AT THE BEGINNING OF MEM
BCF STATUS, RP0 ;
BCF STATUS, RP1 ; BANK0
CLRF PORTB
BSF STATUS, RP0 ; SELECT BANK 1
MOVLW 0XFF
MOVWF TRISB
BCF STATUS, RP0 ;
MAINLINE
MOVLW B'00110000' ; ENABLE SPI MODE, CLOCK, MASTER
MOVWF SSPCON
MOVF PORTB, W ; READ PORTB VALUE
MOVWF SSPBUF ; TRANSMIT VALUE TO SLAVE
NOP
NOP
NOP
GOTO MAINLINE ; REPEAT THE PROCESS
END
code for slave
Code:
TITLE "SERIAL COMMUNICATION SLAVE MODE.ASM"
LIST P=16F877A, R=DEC
INCLUDE "P16F877A.INC"
; DATA SEGMENT
PAGE
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC& _WRT_OFF & _LVP_OFF & _CPD_OFF
ORG 0000H ; RESET ADDRESS
GOTO start
ORG 0020H ; MAIN PROGRAM ADDRESS
start
BCF STATUS, RP0 ;
BCF STATUS, RP1 ; BANK0
CLRF PORTB
BSF STATUS, RP0 ; SELECT BANK 1
MOVLW 0X00
MOVWF TRISB
MAINLINE:
BSF STATUS, RP0 ; BANK 1
BSF PIE1, SSPIE ; ENABLE SSP INTERRUPT
BCF STATUS, RP0 ; BANK 0
BCF PIR1, SSPIF ; CLEAR SSP INTERRUPT FLAG
BSF INTCON, PEIE ; ENABLE PERIPHERAL INTERRUPT
BSF INTCON, GIE ; ENABLE GLOBAL INTERRUPT
LOOP: GOTO LOOP ; INFINITE LOOP
ORG 0004H ; INTERRUPT SUB-ROUTINE ADDRESS
MOVF SSPBUF, W ; READ SSPBUF
MOVWF PORTB ; WRITE SSPBUF VALUE TO PORT B
RETIE ; RETURN
END
Last edited: