Olá a todos, sou novo por aqui, e venho por meio deste pedir a ajuda em um problema que estou tendo em um projeto. É o seguinte:
Estou utilizando dois PIC16F628A, sendo um transmissor e o outro receptor e dois módulos HC-05, um como mestre e o outro como escravo, o compilador para o programa dos PICs é o MPLAB IDE e a programação em Assembly. Os PICs estão trabalhando com um oscilador externo (cristal) de 12 Mhz, todos os componentes estão configurados para um Baud Rate de 38400 bps.
A intenção é utilizar 4 botões no transmissor e 4 Leds para teste no receptor. Quando um botão é pressionado acende 2 leds selecionados no programa, a cada botao os 2 leds alternam, e quando não há botões pressionados os leds não acendem.
O teste foi realizado antes sem os módulos Bluetooth, os pics foram programados para uma comunicação serial assíncrona, e utilizando os terminais RX e TX, os leds não acendiam como desejado, um deles sempre ficava aceso, e os outros nao acendiam como desejado, o teste foi feito com o bluetooth e funcionou da mesma forma.
A solução foi acrescentar uma rotina de tempo na programação do receptor que destacarei quando mostrar o código, desta forma os pics sem os bluetooth funcionaram perfeitamente como desejado, mas com o bluetooth não funciona, parece q ele trava ao receber a informaçao, se eu deixo um botao pressionado e reinicio o circuito receptor, ele acende os leds desejados e não realizada mais nada, se faço o mesmo procedimento com outro botao, ele acende os leds desejados com o determinado botao e trava.
Antes da nova rotina de tempo o bluetooth funcionava perfeitamente, e até com boa distancia, mas não com os leds desejados.
Alguém teria uma ideia do que pode estar causando este problema? Ja tentei resolver de todas as formas que meu breve conhecimento permitiu.
Código do receptor: (sem as configurações iniciais)
INICIO
BANK1
MOVLW B'00111111'
MOVWF TRISA
MOVLW B'00000110'
MOVWF TRISB
MOVLW B'10000100'
MOVWF OPTION_REG
MOVLW B'00000000'
MOVWF INTCON
BANK0
MOVLW B'00000111'
MOVWF CMCON
CLRF PORTA
CLRF PORTB
MAIN
CALL RECEBER
GOTO MAIN
RECEBER
BANK1
BSF TXSTA,BRGH
MOVLW .19
MOVWF SPBRG
BCF TXSTA,SYNC
BANK0
BSF RCSTA,SPEN
BSF RCSTA,SREN
BSF RCSTA,CREN
CALL MOSTRAR
RETURN
MOSTRAR
MOVLW B'11110000'
ANDWF RCREG,W
MOVWF PORTB
CALL TEMPO ;<<< Modificação que ser a fonte do problema (nova rotina de tempo)
RETURN
TEMPO
movlw .215
movwf Reg_1
movlw .156
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
RETURN
END
Código do transmissor: (sem configurações iniciais)
MAIN
BTFSS BT1
GOTO $+2
GOTO AJUSTE1
BTFSS BT2
GOTO $+2
GOTO AJUSTE2
BTFSS BT3
GOTO $+2
GOTO AJUSTE3
BTFSS BT4
GOTO $+2
GOTO AJUSTE4
MOVLW B'00000000'
MOVWF TXREG
CALL ENVIAR
GOTO MAIN
AJUSTE1
MOVLW B'10100000'
MOVWF TXREG
CALL ENVIAR
GOTO MAIN
AJUSTE2
MOVLW B'01010000'
MOVWF TXREG
CALL ENVIAR
GOTO MAIN
AJUSTE3
MOVLW B'10010000'
MOVWF TXREG
CALL ENVIAR
GOTO MAIN
AJUSTE4
MOVLW B'01100000'
MOVWF TXREG
CALL ENVIAR
GOTO MAIN
ENVIAR
BANK1
BSF TXSTA,BRGH
MOVLW .19
MOVWF SPBRG
BCF TXSTA,SYNC
BANK0
BSF RCSTA,SPEN
BANK1
BSF TXSTA,TXEN
BTFSS TXSTA,TRMT
GOTO $-1
BANK0
CALL TEMPO
RETURN
TEMPO
movlw .215
movwf Reg_1
movlw .156
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
RETURN
END