I don't think you have set the mssp port correctly and
is a dangerous way to wait for tx to complete before latching dataPAUSEUS 10
SSP1BUF = TXDATA
PAUSEUS 10
try this , it works perfectly for me
Code:'**************************************************************** '* Name : SPI_74HC595.BAS * '* Author : RICHARD * '* Notice : * '* : * '* Date : 2/26/2018 * '* Version : 1.0 * '* Notes : * '* : * '**************************************************************** #CONFIG __config _CONFIG1, _FOSC_INTOSC & _CP_OFF & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _CLKOUTEN_OFF __config _CONFIG2, _PLLEN_OFF & _LVP_OFF #ENDCONFIG TxData var BYTE define OSC 4 OSCCON = %01101010 HC_Data var PORTA.4 'SDO HC_Clk var PORTC.0 'SCK HC_latch var LATA.2 'Digital output LED_RED var LATA.1 TRISA = %11101001 PORTA = 0 'make all pins low ANSELA = 0 TRISC = %11111110 'digital output C.0 PORTC = 0 'make all pins low ANSELC = 0 APFCON0 = %01000000 'set SPI pin alternative SSP1CON1=$22 SSP1STAT=$40 pause 200 'prove LED function LED_red = 1 pause 200 LED_red = 0 Main: 'set up sequence of signals for output TxData = 0 Gosub Send_Data TXDATA = 1 Gosub Send_Data TxData = 2 Gosub Send_Data TxData = 4 Gosub Send_Data TxData = 15 Gosub Send_Data goto main end Send_Data : LED_RED=!LED_RED pir1.3=0 SSP1BUF = TXDATA while ! pir1.3 :wend ;WAIT TILL TX COMPLETES HC_Latch=0 ;LATCH IN NEW DATA ;@ NOP ; IF NEEDED FOR HIGHER CLOCK SPEEDS HC_Latch=1 pause 500 return




Bookmarks