Autor Tópico: Contrôle de motores com PIC16F628A  (Lida 60543 vezes)

Description:

0 Membros e 1 Visitante estão vendo este tópico.

Offline aguizan

  • Fuso
  • **
  • Posts: 158
  • Sexo: Masculino
  • GUIA-CNC
Re: Contrôle de motores com PIC16F628A
« Resposta #105 Online: 10 de Julho de 2010, 10:05 »

Isto posto, considere a sugestão do Gil, use RS422 ou RS485, a confiabilidade e o alcance sempre serão muito maiores e em nada onera o projeto.



Perfeito, vou estudar a forma de utilizar um dos dois métodos.

Offline aguizan

  • Fuso
  • **
  • Posts: 158
  • Sexo: Masculino
  • GUIA-CNC
Re: Contrôle de motores com PIC16F628A
« Resposta #106 Online: 10 de Julho de 2010, 16:34 »
BOM,
A rotina sample do meu código está ficando assim:





GIL,   RETIREI OS COMANDOS REFERENTES A INTERRUPÇÕES E NÃO SEI SE ESTÁ TUDO OK  ;D
« Última modificação: 10 de Julho de 2010, 16:57 por aguizan »

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Contrôle de motores com PIC16F628A
« Resposta #107 Online: 11 de Julho de 2010, 01:07 »
Anderson,

Coloque seu programa como texto no corpo da mensagem, para que possa ser editado e alterado.

Voce está usando o MPLAB para testar?

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Contrôle de motores com PIC16F628A
« Resposta #108 Online: 11 de Julho de 2010, 07:54 »

Segue programa que eu fiz para testar o conversor A/D do PIC16F877A, simulei no Proteus e funcionou conforme previsto.


    list P=16F877A
   #include "P16F877A.INC"

   __CONFIG _CP_OFF & _WDT_OFF & _XT_OSC & _PWRTE_ON
   ;__CONFIG 0x3F32

   ERRORLEVEL -302      ; turn off bank bits warning

        cblock H'20'
       
      endc

; Inicio do Programa
   ORG   0h         

; Inicialização do PIC e do display
   bcf      STATUS,RP1

   bsf      STATUS,RP0 ; Habilita banco 1
   clrf   TRISD    ; porta do display, de saída
   movlw    B'00000010' ; setup do conversor A/D
   movwf    ADCON1   ; left justify result
               ; port A = analogue inputs
   
   bcf      STATUS,RP0 ; Habilita banco 0
   clrf   PORTD    ; zera saídas do display
   movlw    B'01000001' ; setup da entrada
   movwf    ADCON0    ; f/8, AN0, DONE, A/D On
;
; Loop principal
;
start:
   call   read_ad
   call   display
   goto   start
;
; Conversor A/D
;
read_ad:
   bsf      ADCON0,GO ; Iniciar conversão
wait:
   btfsc    ADCON0,GO ; Testa se terminou conversão
   goto   wait
   movf   ADRESH,W
   return
;
; Display de LEDs
;
display:
   movwf   PORTD
   return

END



Diagrama elétrico:

[attachthumb=1]

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Contrôle de motores com PIC16F628A
« Resposta #109 Online: 11 de Julho de 2010, 10:10 »

Apesar do conversor A/D estar funcionando, tenho uma perguntinha básica, não fica +fácil e +robusto usar um joystick baseado em microswitches? Usando 4, dá pra fazer: +X, -X, +Y, -Y. Poderia até usar 4 botões NA, não haveriam duas velocidades para cada movimento.
« Última modificação: 11 de Julho de 2010, 10:15 por minilathe »

Offline aguizan

  • Fuso
  • **
  • Posts: 158
  • Sexo: Masculino
  • GUIA-CNC
Re: Contrôle de motores com PIC16F628A
« Resposta #110 Online: 11 de Julho de 2010, 10:31 »
Coloque seu programa como texto no corpo da mensagem, para que possa ser editado e alterado.
Gil, aí está o programa. Fiz algumas alterações com base no código que você enviou e parece-me que está funcionando.

;**************************************************************************************
;*                     PROJETO DE PLACA DE COMANDO POR MEIO DE JOYSTICK PARA ROV                                       *
;*                         DESENVOLVIDO POR ANDERSON GUIZAN SILVA                            *
;* VERSÃO 1.0                                                                                                                  DATA 07/2010 *
;*------------------------------------------------------------------------------------------------------------*
;* MODELO DESENVOLVIDO PARA PIC 16F877                                                                                              *
;**************************************************************************************



;**************************************************************************************
;*                                                         ARQUIVOS DE DEFINIÇÕES                                                           *
;**************************************************************************************

#INCLUDE    <P16F877.INC>                    ;ARQUIVO PADRÃO DA MICROCHIP PARA PIC16F877

         

         __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _XT_OSC & _WRT_ENABLE_ON &
                            _LVP_OFF & _CPD_OFF
   
ERRORLEVEL -302                     ;



;**************************************************************************************
;*                                                          PAGINAÇÃO DE MEMÓRIA                                                            *
;**************************************************************************************
; DEFINIÇÃO DE COMANDOS DE USUÁRIO PARA ALTERAÇÃO DA PÁGINA DE MEMÓRIA

#DEFINE   BANK0   BCF   STATUS,RP0      ;SETA BANK 0 DE MEMÓRIA
#DEFINE BANK1   BSF STATUS,RP0         ;SETA BANK 1 DE MEMÓRIA



;************************************************************************************************************
;*                                                   VARIÁVEIS                                              *
;************************************************************************************************************
; DEFINIÇÃO DOS NOMES E ENDEREÇOS DE TODAS AS VARIÁVEIS UTILIZADAS PELO SISTEMA

   CBLOCK   0X020                  ;ENDEREÇO INICIAL DA MEMÓRIA DE USUÁRIO
      
      CNTR1                     ;CONTADOR VARIÁVEL TEMPORÁRIO
      CNTR2                     ;CONTADOR VARIÁVEL TEMPORÁRIO
      SER_DATA_1                  ;PRIMEIRO BYTE DE DADOS A SER TRANSMITIDO SERIALMENTE
      SER_DATA_2                  ;SEGUNDO BYTE DE DADOS A SER TRANSMITIDO SERIALMENTE
      SER_LOOP_1                  ;NUMERO DE LOOPINGS PARA TRANSMISSÃO DOS BITS DO 1º BYTE
      SER_LOOP_2                  ;NUMERO DE LOOPINGS PARA TRANSMISSÃO DOS BITS DO 2º BYTE
      SER_TIME                  ;TEMPO DE ESPERA DA TRANSMISSÃO
      LAST_BTN                  ;GUARDA ULTIMO ESTADO DO BOTÃO PARA COMPARAÇÃO
      CURRENT_BTN                  ;GUARDA ESTADO ATUAL DO BOTÃO PARA COMPARAÇÃO
      BTN_COUNT                  ;CONTADOR DO NUMERO DE LLOPINGS QUE MANTEM O BOTÃO ACIONADO
      LIGHT_STATUS               ;GUARDA O ESTADO DO EQUIPAMENTO DE ILUMINAÇÃO

   ENDC



;************************************************************************************************************
;*                                                    CONSTANTES                                            *
;************************************************************************************************************
; DEFINIÇÃO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA

BTN_RST   EQU         .200            ;CONTADOR DO TEMPO DE ACIONAMENTO DO BOTÃO



;************************************************************************************************************
;*                                                    ENTRADAS                                              *
;************************************************************************************************************
; DEFINIÇÃO DE TODOS OS PINOS QUE SERÃO UTILIZADOS COMO ENTRADA

#DEFINE X_AXIS      PORTA,0            ;PINO 2 - ENTRADA DE SINAL ANALÓGICO VINDO DO JOYSTICK - EIXO X
#DEFINE Y_AXIS      PORTA,1            ;PINO 3 - ENTRADA DE SINAL ANALÓGICO VINDO DO JOYSTICK - EIXO Y
#DEFINE DEPTH      PORTA,2            ;PINO 4   - ENTRADA DE SINAL ANALÓGICO DO POTENCIÔMETRO DE PROFUNDIDADE      
#DEFINE BUTTON      PORTA,3            ;PINO 2 - ENTRADA DE SINAL DIGITAL VINDO DO BOTÃO - ILUMINAÇÃO
#DEFINE SEROUT      PORTA,



;************************************************************************************************************
;*                                                    SAÍDAS                                                *
;************************************************************************************************************
; DEFINIÇÃO DE TODOS OS PINOS QUE SERÃO UTILIZADOS COMO SAÍDA

#DEFINE SERIAL_OUT   PORTA,4            ;PINO 3 - SAÍDA DE SINAL - TRANSMISSÃO SERIAL



;************************************************************************************************************
;*                                                 VETOR DE RESET                                           *
;************************************************************************************************************


   ORG   0X00                     ;ENDEREÇO INICIAL DE PROCESSAMENTO
   GOTO INICIO

   ;ORG   0X04                     ;ENDEREÇO DO VETOR DE INTERRUPÇÃO
   ;GOTO INTR


;************************************************************************************************************
;*                                            INICIO DO PROGRAMA                                            *
;************************************************************************************************************


INICIO
         CLRF    PORTA            ;LIMPA PORTA
         CLRF    PORTB            ;LIMPA PORTB

         BANK0                  ;RETORNA AO BANK0
         MOVLW    0X0F            ;RA4=OUTPUT RA0...RA3=INPUT; DEMAIS SÃO IRRELEVANTES
         TRIS   PORTA
         MOVLW   0XC3            ;TMR0 HABILITADO COM PREESCALER DE 1:16
         MOVWF   OPTION_REG

;************************************************************************************************************
;*                                         INICIALIZAÇÃO DE VARIÁVEIS                                       *
;************************************************************************************************************


         CLRF   CURRENT_BTN         ;SETA O ESTADO ATUAL DO BOTÃO EM ZERO
         CLRF   LIGHT_STATUS      ;SETA O ESTADO ATUAL DE ILUMINAÇÃO EM ZERO
         
         MOVLW   BTN_RST            ;CARREGA O VALOR DA CONSTANTE "BTN_RST" NO REGISTRO DE TRABALHO "W"
         MOVWF   BTN_COUNT         ;CARREGA O TIMER DO CONTADOR PARA O VALOR DE START.
         GOTO    MAIN

;************************************************************************************************************
;*                                         ROTINAS E SUB-ROTINAS                                            *
;************************************************************************************************************

;************************************************************************************************************
;* SAMPLE A/D - RECOLHE AMOSTRAGEM ANALÓGICA E ARMAZENA O VALOR EM "W"                                      *
;************************************************************************************************************

;***CONFIGURANDO O MÓDULO A/D

SAMPLE                           
            MOVWF   ADCON0
         BANK1
         MOVLW   0X82         
         MOVWF   ADCON1            ;CONFIGURA O REGISTRADOR ADCON1 COM: RELOGIO DE CONVERSÃO FOSC/32
                              ;AN0...AN4 ANALÓGICAS   AN5...AN7 DIGITAIS    JUSTIFICADO A DIREITA
         BANK1                   ;SELECIONO BANK1
         MOVLW   0X86
         MOVWF   ADCON0            ;CONFIGURA O REGISTRADOR ADCON COM: CONVERSÃO DO RELÓGIO FOSC/32
                              ;CANAL ANALÓGICO=RA1/AN1   CONVERSÃO ATIVADA

;***INICIO DA CONVERSÃO ANALÓGICA/DIGITAL
   
         BANK0
         CALL   DELAY_100uS         ;CERETIFICAR-SE DE QUE O TEMPO COLETA DA AMOSTRAGEM JÁ ACABOU.
                              ;SE ACABOU PODE COMEÇAR A DONVERSÃO         
            
         BSF    ADCON0,GO          ;INICIA A CONVERSÃO A/D.
ESPERA:      
         BTFSC   ADCON0,GO         ;TESTA SE TERMONOU A CONVERSÃO
         GOTO    ESPERA
         MOVF   ADRESH,W         ;COLOCA O RESULTADO NO REGISTRO DE TRABALHO "W"
         RETURN                  ;RETORNA AO PONTO DE ESCAPE PARA A ROTINA


;****************************************************************************************************************
;*   DELAY 100uS                                                                                                *
;****************************************************************************************************************

DELAY_100uS

         MOVLW   .3
         MOVWF   CNTR1   
LOOP      NOP
         NOP
         DECFSZ   CNTR1,F
         GOTO   LOOP   
         RETURN


;****************************************************************************************************************
;*   VERIFICA O STATUS DO BOTÃO - LIGA SERVO E LUZ QUANDO NECESSÁRIO                                            *
;****************************************************************************************************************

BTNTEST
         MOVF   CURRENT_BTN, W      ;ESCREVE EM "W" O ÚLTIMO ESTADO DO BOTÃO
         MOVWF   LAST_BTN         ;...E GUARDA O VALOR EM LAST_BTN
         BTFSC   LIGHT_STATUS, 0      ;CHECA O VALOR DE LIGHT_STATUS E PULA A PRÓXIMA LINHA SE FOR "0"
         BSF      SER_DATA_1, 7      ;...E UPDATE O BIT 7 (ILUMINAÇÃO)

BTN_DWN      
            BTFSS   BUTTON         ;CHECA O ESTADO DO BOTÃO E SE ESTE ESTIVER EM "1" PULA A PRÓXIMA LINHA
            GOTO    BTN_UP
            BSF      CURRENT_BTN, 0
            MOVF   BTN_COUNT, F
            BTFSS   STATUS, Z
            DECF   BTN_COUNT, F
            BTFSC   STATUS, Z
            BSF      SER_DATA_1, 6
         RETURN

BTN_UP
         CLRF   CURRENT_BTN
         BTFSS   LAST_BTN, 0
         RETURN



;****************************************************************************************************************
;*   SUBROTINA DE TRANSMISSÃO SERIAL                                                                            *
;****************************************************************************************************************
;* TRANSMITE O CONTEÚDO DOS DADOS CONTIDOE EM SER_DATA_1 E SER_DATA_2 COM BIT DE START,  16 BITS DE DADOS E UM BIT
;* DE PARADA (STOP BIT). TRANSMISSÃO EXECUTADA A 19.2 KBPs

SERIAL
         MOVLW   .9               ;8 BITS DE DADOS + 1 BIT DE COMEÇO (START BIT)
         MOVWF   SER_LOOP_1         ;1º BYTE
         MOVLW   .8               ;8 BITIS DE DADOS PARA O SEGUNDO BYTE
         MOVWF   SER_LOOP_2
         BSF      STATUS, C         ;





;************************************************************************************************************
;*                                            ROTINA PRINCIPAL                                              *
;************************************************************************************************************

MAIN
         MOVLW   0X81            ;CANAL 0, PINO 2 RA0, AN0, A/D ON
         CALL   SAMPLE
         ANDLW   0XE0            ;MASCARAR OS TRÊS BITS MAIS SIGNIFICATIVOS, COLOCA O RESULTADO EM "W"
         MOVWF   SER_DATA_1         ;SER_DATA_1 = [X7  X6  X5  0,  O  0  0  0]
         RRF      SER_DATA_1, F
         RRF      SER_DATA_1, F
         RRF      SER_DATA_1, F      ;SER_DATA_1 = [0  0  0  X7,  X6  X5  0  O  0]


         MOVLW   0X89            ;CANAL 1, PINO 3 RA1, AN1, A/D ON
         CALL   SAMPLE            ;VAI PARA A ROTINA SAMPLE
         ANDLW   0XE0            ;MASCARAR OS TRÊS BITS MAIS SIGNIFICATIVOS, COLOCA O RESULTADO EM "W"
         ADDWF   SER_DATA_1, F      ;SER_DATA_1 = [Y7 Y6 Y5 X7, X6 X5 O O]
         RRF      SER_DATA_1, F
         RRF      SER_DATA_1, F      ;SER_DATA_1 = [0 0 Y7 Y6, Y5 X7 X6 X5]

         MOVLW   0X91            ;CANAL 2, PINO 4 RA2, AN2, A/D ON
         CALL    SAMPLE             ;VAI PARA A ROTINA SAMPLE
         MOVWF   SER_DATA_2         ;SEGUNDO BYTE DO DADO SERIAL
         CALL   BTNTEST            ;CHECA ESTADO DO BOTÃO E AJUSTA BITS DO SERVO E ILUMINAÇÃO
         CALL   SERIAL      

         END





Voce está usando o MPLAB para testar?
[/quote]

Offline aguizan

  • Fuso
  • **
  • Posts: 158
  • Sexo: Masculino
  • GUIA-CNC
Re: Contrôle de motores com PIC16F628A
« Resposta #111 Online: 11 de Julho de 2010, 10:40 »

Apesar do conversor A/D estar funcionando, tenho uma perguntinha básica, não fica +fácil e +robusto usar um joystick baseado em microswitches?

O primeiro protótipo que fiz funcionava assim, baseado em microswitches. Os problemas que encontrei foram:

1) No projeto que desenvolvi a comunicação precisava de várias vias para levar os sinais aos relés de acionamento dos motores, ficando com um cabo umbilical muito grosso.
2) Os relés ocupam um espaço muito grande dentro do equipamento e causam muito ruído, interferindo com a câmera de vídeo.
3) Esses Joysticks não são precisos em seus comandos.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Contrôle de motores com PIC16F628A
« Resposta #112 Online: 11 de Julho de 2010, 10:46 »
Anderson,

Gil, aí está o programa. Fiz algumas alterações com base no código que você enviou e parece-me que está funcionando.

Onde foi testado?

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Contrôle de motores com PIC16F628A
« Resposta #113 Online: 11 de Julho de 2010, 10:48 »

Apesar do conversor A/D estar funcionando, tenho uma perguntinha básica, não fica +fácil e +robusto usar um joystick baseado em microswitches?

O primeiro protótipo que fiz funcionava assim, baseado em microswitches. Os problemas que encontrei foram:

1) No projeto que desenvolvi a comunicação precisava de várias vias para levar os sinais aos relés de acionamento dos motores, ficando com um cabo umbilical muito grosso.
2) Os relés ocupam um espaço muito grande dentro do equipamento e causam muito ruído, interferindo com a câmera de vídeo.
3) Esses Joysticks não são precisos em seus comandos.

Não falo em usar relés e enviar os sinais por vários fios, mas apenas usar joysticks com microchaves. Mas se não são confiáveis esqueça...
« Última modificação: 11 de Julho de 2010, 10:53 por minilathe »

Offline aguizan

  • Fuso
  • **
  • Posts: 158
  • Sexo: Masculino
  • GUIA-CNC
Re: Contrôle de motores com PIC16F628A
« Resposta #114 Online: 11 de Julho de 2010, 11:11 »

Não falo em usar relés e enviar os sinais por vários fios, mas apenas usar joysticks com microchaves. Mas se não são confiáveis esqueça...

O Joystick que utilizei é para arcade, extremamente robusto, não gostei do resultado. Veja as fotos:





Offline aguizan

  • Fuso
  • **
  • Posts: 158
  • Sexo: Masculino
  • GUIA-CNC
Re: Contrôle de motores com PIC16F628A
« Resposta #115 Online: 11 de Julho de 2010, 11:14 »

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Contrôle de motores com PIC16F628A
« Resposta #116 Online: 11 de Julho de 2010, 11:26 »
Então vc só está compilando no MPLAB não é?

Apesar de poder estar compilando, a sua rotina serial não está correta, também não há código de incialização da UART.


Offline aguizan

  • Fuso
  • **
  • Posts: 158
  • Sexo: Masculino
  • GUIA-CNC
Re: Contrôle de motores com PIC16F628A
« Resposta #117 Online: 11 de Julho de 2010, 11:47 »
Apesar de poder estar compilando, a sua rotina serial não está correta.
Ainda estou terminando essa rotina...

, também não há código de incialização da UART.
Lembro-me de já haver algum comentário a repeito da UART anteriormente. Vou procurar por aqui.

...Encontrei algo:

Basta configurar o registro TXSTA ?   
« Última modificação: 11 de Julho de 2010, 12:01 por aguizan »

Offline aguizan

  • Fuso
  • **
  • Posts: 158
  • Sexo: Masculino
  • GUIA-CNC
Re: Contrôle de motores com PIC16F628A
« Resposta #118 Online: 11 de Julho de 2010, 12:29 »

Apesar de poder estar compilando, a sua rotina serial não está correta,

A ROTINA SERIAL FICOU ASSIM:


;****************************************************************************************************************
;*   SUBROTINA DE TRANSMISSÃO SERIAL                                                                            *
;****************************************************************************************************************
;* TRANSMITE O CONTEÚDO DOS DADOS CONTIDOE EM SER_DATA_1 E SER_DATA_2 COM BIT DE START,  16 BITS DE DADOS E UM BIT
;* DE PARADA (STOP BIT). TRANSMISSÃO EXECUTADA A 19.2 KBPs

SERIAL
         MOVLW   .9               ;8 BITS DE DADOS + 1 BIT DE COMEÇO (START BIT)
         MOVWF   SER_LOOP_1         ;1º BYTE
         MOVLW   .8               ;8 BITIS DE DADOS PARA O SEGUNDO BYTE
         MOVWF   SER_LOOP_2
         BSF      STATUS,C         ;

OUT_1
         BTFSC   STATUS,C
         BSF      SEROUT
         BTFSS   STATUS,C
         BCF      SEROUT

         MOVLW   .14
         MOVWF   SER_TIME

OUT_2
         DECFSZ   SER_TIME,F
         GOTO    OUT_2
         NOP
         RRF      SER_DATA_1,F
         DECFSZ   SER_LOOP_1,F
         GOTO    OUT_1

OUT_3
         RRF      SER_DATA_2,F
         BTFSC   STATUS,C
         BSF      SEROUT
         BTFSS   STATUS,C
         BCF      SEROUT

         MOVLW   .14
         MOVWF   SER_TIME

OUT_4
         DECFSZ   SER_TIME,F
         GOTO    OUT_4
         NOP
         DECFSZ   SER_LOOP_2,F
         GOTO    OUT_3
         BCF      SEROUT
         
         MOVLW   .14
         MOVWF   SER_TIME

OUT_5      
         DECFSZ   SER_TIME,F
         GOTO    OUT_5
         NOP

         RETURN

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Contrôle de motores com PIC16F628A
« Resposta #119 Online: 11 de Julho de 2010, 13:22 »
Anderson,

Seu programa é do tipo "bit-bang" e não está usando os registradores da UART (foi feito para o PIC16F84)... Para começar, voce não precisa carregar a quantidade de bits a cada envio e gerar a temporização a cada bit, se for usar a UART.

A sua rotina poderia ficar com 4 ou 5 linhas se voce usar a UART interna do PIC. E acho que o "debug" é mais fácil se usar a UART interna.

Isto não é indispensável, mas entendi que iria isar a UART não é?

 

/** * */