# -----------------------------------------------------------------------------------------------------------------------------
# PIC - Projeto PC2PIC Spinelli - 04/08/2010
#
# REVISAO: 08/02/2012
# 03/08/2013
# 30/09/2019
# -----------------------------------------------------------------------------------------------------------------------------
session_start();
include "../../session_parm.inc";
include "../../visitas/visitas.inc"; # editado em 29/09/2019
include "../../cab.inc"; # editado em 29/09/2019 # editado em 29/09/2019
?>
O circuito desenvolvido neste projeto permite fazer a comunicação entre a porta serial do PC e a USART do PIC usando algumas macros instruções em linguagem assembler desenvolvidas para essa finalidade.
O circuito proposto usa um integrado MAX232 para fazer a conversão dos sinais que vêm da porta RS232 do PC para o PIC e deste para o PC.
No conector JP1 de 6 pinos, abaixo à esquerda no esquema, temos os sinais Rx (pino 2) e Tx (pino 3) que devem ser ligados aos pinos correspondentes da USART do PIC, isto é, quando estiver usando um PIC16F682A, por exemplo , Rx corresponde ao pino 7 (RB1/RX) e Tx ao pino 8 (RB2/TX).
Os sinais rts ( pino 6 - request to send)) e cts (pino 5 - clear to send) também estão previstos no circuito mas são opcionais e seu uso depende da aplicação.
O pino 1 é o ground e o pino 4 é a alimentação do circuito (5Volts).
Todos os capacitores do circuito são eletrolíticos portanto, a polaridade deve ser cuidadosamente observada conforme mostra o esquema abaixo.
Atenção redobrada deve ser dada ao conector DB9 na hora da soldagem dos cabos pois, na maioria das vezes, as confusões são feitas nesse conector.
A foto abaixo mostra a placa montada num circuito impresso:
Para facilitar a comunicação entre o microcontrolador e o PC algumas macros foram desenvolvidas.
USART_CONFIG ................ para configurar a Usart do PIC.
USART_SET ................... para habilitar ou desabilitar a recepção e/ou a transmissão.
USART_TX .................... para transmitir um cacarter.
USART_RX .................... para receber um cacarter.
XMIT ........................ para transmitir uma string de cacarters.
USART_CONFIG bauds, fosc, "tipo", "inter", "modo"
Essa macro configura a USART de acordo com os seguintes parâmetros:
bauds
Especifica a taxa de transmissão (baud rate) da porta em BPS que deve estar dentro dos limites do microcontrolador.
A sessão de Hyperterminal do PC também deve ser configurada com o mesmo baud rate.
fosc
Especifica a frequência do clock (Fosc) usada pelo microcontrolador.
tipo
Especifica o tipo de comunicação:
"A" para comunicação assíncrona ou
"S" para comunicação síncrona.
Geralmente usa-se "A"
inter
Para gerar leitura da porta Rx através de interrupção.
"Y" configura leitura por interrupção e, neste caso, o programador deverá escrever
uma rotina de interrupção para fazer a leitura.
"N" não configura interrupção para leitura.
modo
Se no parâmetro inter foi especificado "Y" o modo pode ser "C"
para gerar interrupção em modo compatível (famílias 16F e 18F).
Quando se usa um chip da família 18F, modo pode ser "L"
para gerar interrupção de baixa prioridade ou "H" para gerar interrupção de alta prioridade.
Após a execução da macro USART_CONFIG a recepção e a transmissão já estarão habilitadas.
O exemplo abaixo supõe que o clock do processador é 4MHz e configura a USART com velocidade de 9600BPS no modo assíncrono "A" sem interrupção de leitura "N" e no modo compatível "C". Note que mesmo não usando interrupção deve-se informar o modo.
USART_SET rxtxmode
A macro USART_SET serve para habilitar e/ou desabilitar a recepção e a transmissão de
dados pela USART.
O parâmetro rxtxmode pode ser um dos seguintes:
txon ......... habilita transmissao.
txoff ........ desabilita a transmissao.
rxon ......... habilita a recepcao.
rxoff ........ desabilita a recepcao.
Exemplo:
USART_TX
A macro USART_TX transmite para o PC um caracter carregado no registrador W.
Esta macro não possui parâmetros.
Exemplo:
USART_RX
A macro USART_RX recebe do PC um caracter e o carrega no registrador W.
Esta macro não possui parâmetros.
Exemplo:
XMIT label
A macro XMIT transmite, para o dispositivo que estiver lendo a porta serial, uma string nomeada pelo parâmetro label.
A macro XMIT deve ser codificada de maneira adequada, dependendo da família do microcontrolador usado.
Para a família 16F deve-se codificar:
Notar que :
Para ambos os casos (família 16F e 18F) a macro XMIT deve ter um label na coluna 1 (msg001 e msg002) que a nomeia.
O parâmetro label da macro XMIT deve se referir ao label que nomeia a string a ser transmitida.
Em ambos os casos uma instrução CALL (call msg001 e call msg002 ) deve ser usada para fazer a transmissão.
Em ambos os casos as strings (ms01 e ms02) a serem transmitidas devem ser finalizadas com zero binário (0x00).
Para verificar o funcionamento da comunicação entre o PIC e o PC, monte o circuito mostrado no esquema elétrico abaixo e faça o download do projeto MPLAB.
O circuito de teste é muito simples e consiste de um PIC16F628A com um LED conectado ao pino 16 (PORTA<7>) e um resistor de 10K conectado entre a alimentação (+5V) e o pino 4 (MCLR).
Os fios que saem dos pinos 7 (RX) e 8 (TX) desse esquema, devem ser conectados nos pinos 2 (Rx) e 3 (Tx) do circuito do MAX232 mostrado acima.
Após montar o circuito e gravar o programa no PIC, configure uma sessão de Hyperteminal no Windows com as seguintes características:
O programa permite acender, apagar, e piscar um LED através de comandos enviados através do Hyperteminal do Windows para o PIC16F628A. Os seguintes comandos são aceitos:
Todos os arquivos necessários para montar este projeto podem ser baixados aqui.
Talvez seja necessário clicar no link com o botão direito do mouse e em seguida
selecionar a opção "Salvar link como...".
Índice dos |
H P S P I N Desde 04 de Março de 2010 Atualização: 08 de Dec de 2024 |