Ir ao conteúdo
  • Cadastre-se

Tutorial : Introdução ao uso de PIC´s em BASIC com o PIC Simulator IDE - Parte 1/2


Posts recomendados

Ola a todos! estou iniciando microcontroladores no curso de eletronica e minha cabeça esta dividida entre aprender assembly com 8051 e o projeto de tcc com pic...

Nas minhas pesquisas , pude notar que o pic simulator usa um basic ''diferente'' do outro conhecido como picbasic...esta informação procede ? quer dizer...sao basic's diferentes ? isso me deixa mais confuso ainda...qual devo aprender...os dois ? peguei comandos de picbasic que nao deram certo no pic simulator...

de inicio esta é minha duvida...existem variaçoes de basic para microntroladores ?

abraço

antonio marcos chiavelli

Link para o comentário
Compartilhar em outros sites

Marcos,

Existe sim, é a mesma coisa com todas as linguagens, infelizmente !

Não existe a "portabilidade" direta entre elas, sempre tem algumas pequenas diferenças entre elas.

A grande vantagem do PSI é que ele permite uma simulação do programa, mostrando vários hardwares interagindo, e este é o motivo de eu indicar ele para qualquer iniciante.

Depois que voce aprender bem o PSI, se fôr continuar com PIC, migre para o MikroBasic, que é um Basic bem mais possante.

Mas, se quiser algo ainda mais possante, infelizmente terá de mudar para os microprocessadores AVR.

O BASCOM-AVR é o compilador BASIC mais poderoso de todos, e a saída dos arquivos dele pode ser utilizada pelo PROTEUS e o ISIS, que permitem realizar a simulação de quase qualquer projeto real, com muito mais opções do que as existentes no PSI.

Sugiro que voce baixe o meu tutorial para o PSI, leia ele, e depois baixe o novo Tutorial de Projetos com AVR e compare tanto as duas famílias de microcontroladores como as duas linguagens BASIC.

Qualquer coisa, existem dezenas de pessoas que podem te orientar, seja em Basic, Assembler, C, PIC ou AVR !

Um abraço.

Paulo

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois...

Saudações pessoal!

É o segunte, estou com um projeto que necessita de comunicação entre dois 16F628A via RX/TX, onde o PIC master envia a variável "x" e o PIC slave recebe esta variável, e mostra o valor de "x" em um contador (três displays de 7 segmentos).

A dúvida é a seguinte, comecei enviando "x" sendo o valor 5, o PIC slave recebia o valor correto e em seguida, dava um tempinho na contagem e acrescentava mais 5 ou 6 na contagem.

Gostaria de saber se esse valor "a mais" é o buffer?

Experimentalmente, fiz um código que, ao receber "x" descarrega em uma contagem primária onde o valor de "x" fica certinho, e em seguida abre uma contagem secundária onde é descarregado o buffer (eu acho) e é descartado.

Abraço.

Link para o comentário
Compartilhar em outros sites

Gostaria de saber se esse valor "a mais" é o buffer?

Não, buffer é uma memória fisica que faz parte do modulo UART.

Existe um detalhe na comunicação serial, se você esta enviando em ASCII, o valor enviado é o valor real em hexadecimal, vou te passar um Ex:

x = 1

Envia 1 "serout #x" se você colocou o # significa que esta enviando 1 em ASCII que vale hex 0x31 ou 49 em decimal, esse sera o valor real lido pelo outro PIC, para você receber o valor e correto no outro PIC basta tirar o # da frente da variável.

Para enviar para um terminal de PC tem ser em ASCII.

Link para o comentário
Compartilhar em outros sites

Não tem simulação para comunicação entre 2 PICs, se usou o terminal ele pode mostrar tanto ASCII como HEX.

Realmente entre dois PICs não possui, entretanto, utilizei o "Hardware Simulation Interface" onde simulo o envio TX e depois o recebimento RX, depois é na unha PIC/PIC P2P.

3494h1k.jpg

5dj9k3.gif

RXTX-628 - YouTube

Link para o comentário
Compartilhar em outros sites

Realmente entre dois PICs não possui, entretanto, utilizei o "Hardware Simulation Interface" onde simulo o envio TX e depois o recebimento RX, depois é na unha PIC/PIC P2P.

No Hardware Simulation Interface, existe a caixa para você marcar HEX na barra superior assim vai saber o que realmente esta transmitindo.

Pelo seu print você esta enviando "10" em ASCII, que em Hex vale 0x31 e 0x30 e mais um byte do CrLf não lembro o valor em hex agora, voce esta transmitindo 3 bytes, o CrLf é um pula linha que somente se usa em um terminal de PC ASCII.

Para enviar para outro PIC basta fazer isso:

Hserout i

Mas deve marcar para mostrar em hex no Hardware Simulation Interface, vai aparecer HEX 0A que é 10 em decimal

Link para o comentário
Compartilhar em outros sites

Boa Tarde pessoal

O sistam esta lendo um trem de pulso atraves de uma porta, e armazenando em 02 posições.

segue instrução gerada

registro	equ	0x2c

;**Count PORTC.5, 500, registro
MOVLW 0x07
MOVWF FSR
MOVLW 0x20
MOVWF R2L
MOVLW 0xF3
MOVWF R1L
MOVLW 0x01
MOVWF R1H
CALL CT01
MOVF R0L,W
MOVWF 0x2C
MOVF R0H,W
MOVWF 0x2D

como converter o dado contido em 0x2C e 0x2D

para em decimal ?

        ;movlw  "".0""	'decimal corresponte ao numero de pulso	
;movwf registro

Grato

JCDS

:(

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois...

tenho um probleminha, se alguem puder ajudar...

preciso fazer com que um pic12f675 leia e grave na memoria o codigo de um chaveirinho desses de controle para portão eletrônico.

encontrei alguns codigos em asm mas queria saber fazer em basic pois uso o pic simulator ide. se alguem puder dar uma mãozinha fico grato.

Fernando

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois...
Nao é exatamente o que voce quer mas talvez possa ajudar.

http://www.ucontrol.com.ar/wiki/index.php/Matriz_de_LEDS_de_7x32

Boa sorte

Obrigado pela ajuda. Já tinha visto este site e até montei o circuito no Proteus mais ainda não obtive sucesso. Eu queria fazer sem CIs adicionais, só com o pic. A luta continua.

Link para o comentário
Compartilhar em outros sites

Para voce obter suceeso,vai ter que entender o que é mutiplexação e como funciona.

Sem CIs adicionais,só vai conseguir uma matriz.

Saudações VTRX...

A princípio, seria apenas uma matriz mesmo. Não é um projeto prático e sim treinamento básico. Preciso entender como funciona com apenas uma matriz para depois partir para algo mais complicado. Quanto à multiplexação, já conheço o conceito tentarei desenvolvê-lo na prática progressivamente. Obrigado por sua ajuda.

Link para o comentário
Compartilhar em outros sites

olá amigos ,eu preçiso de uma ajuda de vocês ,estou começando a programar pic atraves psi, nao estou conseguindo fazer um programa ,preçiso fazer um programa bem simples onde eu aperto um botão e na saida de uma porta sai um codigo binario por exemplo 10100011, usando o pic 16f628a nao consegui simular esta dando erro falta alguma instrução que nao compreendi,segue o codigo que escrevi:

TRISB = %00000000

TRISA = %111111

Dim temp As Byte

temp = 10100011b

main:

If PORTA.4 = 1 Then

portb.3= temp

Else

PORTB.3 = 0

Endif

Goto main

End

depois gostaria de estar recebendo este codigo em outro pic usando um trasnmissor 433khz, muito obrigado vou estar postando os resultados aqui!

Link para o comentário
Compartilhar em outros sites

olá amigos ,eu preçiso de uma ajuda de vocês ,estou começando a programar pic atraves psi, nao estou conseguindo fazer um programa ,preçiso fazer um programa bem simples onde eu aperto um botão e na saida de uma porta sai um codigo binario por exemplo 10100011, usando o pic 16f628a nao consegui simular esta dando erro falta alguma instrução que nao compreendi,segue o codigo que escrevi:

TRISB = %00000000

TRISA = %111111

Dim temp As Byte

temp = 10100011b

main:

If PORTA.4 = 1 Then

portb.3= temp

Else

PORTB.3 = 0

Endif

Goto main

End

depois gostaria de estar recebendo este codigo em outro pic usando um trasnmissor 433khz, muito obrigado vou estar postando os resultados aqui!

Ola Edilsonzeh,

Assim como voce ,eu tambem estou aprendedo a programar agora.

Mas voce declarou apenas o BIT3 do prortB, e assim ele nao pode receber o valor de uma variavel do tipo byte, apenas variavel do tipo bit ( 0 ou 1).

Se voce declarar todo portB, ai voce pode receber o valor da variavel tipo byte.

E para fazer a comunicaçao entre pics vai ter que usar cumunicaçao serial.

Sucesso.

jfeliciano

Link para o comentário
Compartilhar em outros sites

OLA AMIGO jfeliciano muito obrigado pela dica vou estar declarando e fazer uma simulação,muito obrigado até mais!

ola jfeliciano você poderia me ajudar nao consegui declarar o portb para enviar um codigo binario,eu preciso enviar o codigo em uma porta do portb toda vez que a tecla é apertada.obrigado

Link para o comentário
Compartilhar em outros sites

OLA AMIGO jfeliciano muito obrigado pela dica vou estar declarando e fazer uma simulação,muito obrigado até mais!

ola jfeliciano você poderia me ajudar nao consegui declarar o portb para enviar um codigo binario,eu preciso enviar o codigo em uma porta do portb toda vez que a tecla é apertada.obrigado

Basta voce usar PORTB no lugar de PORTB.3,

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!