;SPI komunikace 2xPIC16F690(Slave) ;výstup na PORTC ;**************************************************************** include "P16F690.INC" __CONFIG _CP_OFF & _PWRTE_ON & _WDTE_OFF & _INTRC_OSC_NOCLKOUT ;******************************************************************* ; Definice ;***************************************************************** org 000h goto Start org 004h goto interrupt ;*********************************************************** interrupt bsf STATUS,RP0 ;bank1 btfss SSPSTAT,BF ;test BF = 0 goto $-1 ;BF = 1 bcf STATUS,RP0 ;bank0 movf SSPBUF,W ;načtení obsahu registru andlw b'00111111' ;maskování bitů 6 a 7 movwf PORTC ;zápis na port bcf PIR1,SSPIF ;nulování příznaku od SPI retfie ;návrat z přerušení ;******************************************************************* Start bsf STATUS,RP0 ;bank1 movlw b'01100001' ;vnitřní osc 4MHz movwf OSCCON movlw b'01000000' ;SS-vstup,SDO-výstup,RC0-RC5 výstup movwf TRISC movlw b'11111111' ;SCK-vstup,SDI-vstup movwf TRISB bcf SSPSTAT,SMP ;vzorkování bitů SPI(Slave) bsf PIE1,SSPIE ;povolení přerušení od SPI bcf STATUS,RP0 ;bank0 bsf SSPCON,SSPEN ;zapnutí SPI bsf SSPCON,SSPM2 ;SPI Slave,povolení SS,hodiny SCK bsf STATUS,IRP ;bank2 bsf STATUS,RP1 clrf ANSEL ;vypnutí clrf ANSELH ;analogových vstupů bcf STATUS,IRP bcf STATUS,RP1 ;bank0 ;nastavení přerušení bcf PIR1,SSPIF ;nulování příznaku od SPI bsf INTCON,PEIE ;povolení přerušení od periférií bsf INTCON,GIE ;povolení všech přerušení Opak goto Opak ;nekonečná smyčka ;******************************************************************* end