Ir ao conteúdo

Programar PIC em C


CIS

Posts recomendados

Postado

Vamos ver se posso dar uma mão:

TRISA = esse registrador apenas diz se voce quer o pino RAX como entrada ou saida, assim sendo se escrever 0 o bit é esaida se 1 é entrada.

PORTA = aqui efetivamente voce escreve do dado no pino correspondente, se o mesmo la no TRIS estiver como saida e você escrever 1 nele o mesmo ira sair 5V, se escrever 0 sairá 0V

Veja só:



BSF STATUS,RP0 ; trocamos ao banco 1 onde esta o reg TRISA
BCF TRISA, 0 ; pino RA0 escrevermos 0 nele para transforma-lo em saida
BCF STATUS,RP0; voltamos ao banco0 para poder operar o PORTA

PISCALED:
BSF PORTA,0 ; usando oreg PORTA escrevemos 1 na sua saida e ligamos o led
CALL DELAY
BCF PORTA,0 ; aguora colocamos 0 no reg PORTA para apagar o LED
CALL DELAY

TRANSFORMAPINOELEBOTAO:
BSF STATUS,RP0; voltamos ao banco1 para operar o TRISA
BSF TRISA,1 ; escrevo agora 1 no bit 1 do TRISA e RA1 vira entrada


BCF STATUS,RP0; voltamos ao banco 0 para operar o PORTA
BTFSC PORTA,1 ; agora testamos o pino para saber o que tem ali se 0 ou 5V
CALL ISSO
CALL AQUILO




resumindo TRIS voce diz se o dado ta entrando ou saindo, e no PORT você escreve e le o dado que esta entrando ou saindo.

tendeu?

Abs.

Postado
Vamos ver se posso dar uma mão:

TRISA = esse registrador apenas diz se voce quer o pino RAX como entrada ou saida, assim sendo se escrever 0 o bit é esaida se 1 é entrada.

PORTA = aqui efetivamente voce escreve do dado no pino correspondente, se o mesmo la no TRIS estiver como saida e você escrever 1 nele o mesmo ira sair 5V, se escrever 0 sairá 0V

Veja só:



BSF STATUS,RP0 ; trocamos ao banco 1 onde esta o reg TRISA
BCF TRISA, 0 ; pino RA0 escrevermos 0 nele para transforma-lo em saida
BCF STATUS,RP0; voltamos ao banco0 para poder operar o PORTA

PISCALED:
BSF PORTA,0 ; usando oreg PORTA escrevemos 1 na sua saida e ligamos o led
CALL DELAY
BCF PORTA,0 ; aguora colocamos 0 no reg PORTA para apagar o LED
CALL DELAY

TRANSFORMAPINOELEBOTAO:
BSF STATUS,RP0; voltamos ao banco1 para operar o TRISA
BSF TRISA,1 ; escrevo agora 1 no bit 1 do TRISA e RA1 vira entrada


BCF STATUS,RP0; voltamos ao banco 0 para operar o PORTA
BTFSC PORTA,1 ; agora testamos o pino para saber o que tem ali se 0 ou 5V
CALL ISSO
CALL AQUILO




resumindo TRIS voce diz se o dado ta entrando ou saindo, e no PORT você escreve e le o dado que esta entrando ou saindo.

tendeu?

Abs.

agora sim

kkkkkkkkkkkk

veja se é isso ,mesmo??

em TRIS eu escolho se o pino vai receber ou liberar uma tensão, por exemplo

e em PORT eu escolho se a tensão que o pino vai receber ou liberar e de cinco volts( 1 logico) ou zero volts(0 logico).

outro exemplo

suponhamos que os pinos seja homens trabalhando carregando caixas

em TRIS eu decido quem vai trazer ate aqui (entrada), e quem vai vai levar daqui pra outro lugar(saida)

e em PORT eu decido quem vai pegar caixas vazias(0 logico) e quem vai pegar caixas pesadas(1 logico).

sera que é isso??? agora to ansioso.......kkkkkkkkkkkkkkkkkkk

Postado

Veja outro exemplo;

voce tem dois PORTs,o PORT A e o PORT B.

voce quer 'ler' 4 botões e acender 4 Leds.

Qual PORT voce quer usar pois voce pode escolher 2,o A e B?

voce decide que vai usar o A.

Quais os pinos vão ser entrada e quais vão ser saída,pois um PORT inteiro pode ser Entrada ou Saída?

voce decide que os 4 primeiros vão ser ligados em botões e os outros quatro a Leds e como voce vai usar o PORT A,voce define que a ordem vai ser assim;

RA1,RA2,RA3e RA4 vão ser setados como Entrada para se ligar os botões;

TRISA b'00001111',o numero 'Um' significa 'entrada' e 'Zero' saída,o 'b' é de Binário,'00001111'.

Assim voce setou o PORT A(pois voce vai usar os pinos desta porta).

Postado
Veja outro exemplo;

voce tem dois PORTs,o PORT A e o PORT B.

voce quer 'ler' 4 botões e acender 4 Leds.

Qual PORT voce quer usar pois voce pode escolher 2,o A e B?

voce decide que vai usar o A.

Quais os pinos vão ser entrada e quais vão ser saída,pois um PORT inteiro pode ser Entrada ou Saída?

voce decide que os 4 primeiros vão ser ligados em botões e os outros quatro a Leds e como voce vai usar o PORT A,voce define que a ordem vai ser assim;

RA1,RA2,RA3e RA4 vão ser setados como Entrada para se ligar os botões;

TRISA b'00001111',o numero 'Um' significa 'entrada' e 'Zero' saída,o 'b' é de Binário,'00001111'.

Assim voce setou o PORT A(pois voce vai usar os pinos desta porta).

vamos la de novo!!!!!!!beleza ate aqui

mas e agora, no PORT eu tenho que colocar todos a nivel logico 1 ou 0? ou as entradas a nivel logico 1 e as saidas a 0, ou vice-versa? ou todos a zero?? tipo, se eu colocar 1 nas entradas eu estarei colocando todas a 5volts, certo?

se eu colocar 0 nas entradas estarei colocando a 0 volts

e se eu colocar zero volts nas saidas os leds não irão acender , ou vão?? essa e a questão, porque eu pensava que, sendo o pic alimentado com 5volts, bastava eu definir os pinos de saidas e ai sairia 5 volts, mas acho que tenho que ligar cada pino pelo PORT , não e isso??

Postado

O nível dos pinos que forem configurados como entrada é definido pelo circuito externo a ele conectado.

Vamos supor que você configurou o pino RA0 com entrada e ligou nele uma chave do tipo push-buttom NA, cujo outro terminal está ligado no GND. No pino RA0 você também ligou um resistor cujo outro terminal está ligado no VCC, que é de +5v, pois, o pino não pode ficar "flutuando", ou seja, sem nível lógico definido.

Quando o botão está solto, o nível lógico no pino é alto.

Quando o botão está pressionado o nível lógico é baixo.

Para saber se o botão está pressionado, você testa o bit 0 do PORTA com a instrução BTFSS ou com a instrução BTFSC. A primeira pula a próxima instrução se o bit for 1 e a segunda a pula se o bit for 0.

Os pinos configurados como entrada somente podem ser "lidos".

Quando um LED está ligado a um pino configurado como saída, o nível lógico que o fará acender depende de como o LED está ligado.

Por exemplo, se o catodo do LED está ligado no pino e o anodo ligado no VCC através de um resistor, o LED acenderá com nível baixo no pino.

Postado

muito bem pessoal, vou arriscar meu primeiro rascunho, sera que isso vão funcionar ou falta alguma coisa??? to querendo simplesmente acender uma led, assim que conseguir vou tentar faze-lo piscar.....

vejam o codigo

;Programa :acende led

;autor :Cristiano Idelfonso da Silva

#include<P12F675.INC>

__config _intosc_osc_noclkout & _wdt_off & _pwrte_off & _mclre_off & _cp_off & _data_cp_off

org 0x00

goto inicio

org 0x04

retie

inicio

bcf status,rp0

bsf status,rp1

movlw b'11111110'

movwf trisio

bcf status,rp0

bcf status,rp1

movlw b'00000001'

movwf gpio,0

end

espero por ajudas sobre o codigo e comentarios geral

espero por ajudas sobre o codigo e comentarios geral

Postado

Este modelo de microcontrolador só tem dois bancos de memória de dados, por isso só existe o bit RP0. Banco 0: RP0 = 0 e Banco 1: RP0 = 1.

O correto é RETFIE.

Veja no datasheet do PIC12F675 que você precisa configurar os registradores ANSEL e CMCON para poder usar os pinos do GPIO como digitais.

Veja no arquivo P12F675.inc que os nomes dos bits de configuração do oscilador são diferentes daqueles do PIC16F628A:


;----- CONFIG Options --------------------------------------------------
_LP_OSC EQU H'3FF8' ; LP oscillator: Low power crystal on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_XT_OSC EQU H'3FF9' ; XT oscillator: Crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_HS_OSC EQU H'3FFA' ; HS oscillator: High speed crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_EC_OSC EQU H'3FFB' ; EC: I/O function on GP4/OSC2/CLKOUT pin, CLKIN on GP5/OSC1/CLKIN
_INTRC_OSC_NOCLKOUT EQU H'3FFC' ; INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
_INTRC_OSC_CLKOUT EQU H'3FFD' ; INTOSC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
_EXTRC_OSC_NOCLKOUT EQU H'3FFE' ; RC oscillator: I/O function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN
_EXTRC_OSC_CLKOUT EQU H'3FFF' ; RC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN

_WDT_OFF EQU H'3FF7' ; WDT disabled
_WDT_ON EQU H'3FFF' ; WDT enabled

_PWRTE_ON EQU H'3FEF' ; PWRT enabled
_PWRTE_OFF EQU H'3FFF' ; PWRT disabled

_MCLRE_OFF EQU H'3FDF' ; GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD
_MCLRE_ON EQU H'3FFF' ; GP3/MCLR pin function is MCLR

_BODEN_OFF EQU H'3FBF' ; BOD disabled
_BODEN_ON EQU H'3FFF' ; BOD enabled

_CP_ON EQU H'3F7F' ; Program Memory code protection is enabled
_CP_OFF EQU H'3FFF' ; Program Memory code protection is disabled

_CPD_ON EQU H'3EFF' ; Data memory code protection is enabled
_CPD_OFF EQU H'3FFF' ; Data memory code protection is disabled

Postado

agora eu zuei mesmo...kkkkkk

sera que alguem tem um fonte bem simples pro PIC12F675, que eu possa conseguir fazer e entender como fiz, se eu conseguir acender um led, ja ta bom, fazer um led piscar, otimo e mais que isso sera maravilhoso...porque aqui ta difícil....

valeu pela dica mulder, mas eu to perdidinho

quero algo pra esse pic porque é o que tenho aqui e e difícil material pra esse pic, ja olhei em tudo que e site do assunto...]

obrigado a todos

Postado
sera que alguem tem um fonte bem simples pro PIC12F675

Amigo, abaixo tem o link para download de alguns exemplos para o modelo que necessita.

A programaçao é em C, mas se souber um pouco de assembly, é apenas transferir de uma linguagem para outra, pois são exemplos muito básicos.

..

Download

..

Abç.

Postado
Amigo, abaixo tem o link para download de alguns exemplos para o modelo que necessita.

A programaçao é em C, mas se souber um pouco de assembly, é apenas transferir de uma linguagem para outra, pois são exemplos muito básicos.

..

Download

..

Abç.

valeu shunt

vou ver com certeza!!!!

Postado

Eu comecei com a linguagem C, usando a versão estudantil do CCS, por ser muito fácil encontrar informações. No final acabei migrando para o assembly, hoje uso só assembly, para PIC16, PIC18, AVR e 8051.

Não estou a fim de desembolsar dinheiro com compiladores. Somente os compiladores da microchip têm um boa otimização do código, suportando tudo que o PIC pode fazer. Um pacote completo que dá suporte a todas as linhas do PIC custa 1999,00 dólares no site da microchip.

Postado

alguem tem dicas de que programa usar pra gravar PICs usando o windows 7 ??? to tentando com o ic prog 106c, mas ta dando erro e travando o sistema... tem algum software indicado pro windows 7 ???

Postado
WinPIC800, ja tive relatos que funciona bem no seven:

http://www.winpic800.com/

Duvidas manda ae!

Qual gravador esta usando?

Abs.

to usando um PICBURNER , comprei no mercado livre (valor R$26,00 ), não tenho muitas informaçoes dele...

to tentando iniciar com PIC12F675... como faço pra checar a tensão na saida da serial??

Postado

/* galera , deem uma olhada neste codigo e me digam se estar correto... eu compilei e e consegui gravar mas não obtive resultado pratico, o que pode estar dando errado*/

void main()

{

CMCON =7; //desabilita o comparador

ANSEL =0; //desabilita o conversor A/D.Agora temos operação digital no I/O

TRISIO = 0x08; //todos os pinos = saida, exceto GP3

GPIO = 0x00; //todos os pinos desligados inicialmente

while(1){

GPIO.F0 = 1; //liga GP0.

Delay_ms(500); //aguarda 500 ms.

GPIO.F0 = 0; //desliga GP0.

Delay_ms(500); //aguarda 500 ms.

GPIO.F1 = 1; //liga GP1.

Delay_ms(500); //aguarda 500 ms.

GPIO.F1 = 0; //desliga GP1.

Delay_ms(500); //aguarda 500 ms.

GPIO.F2 = 1; //liga GP2.

Delay_ms(500); //aguarda 500 ms.

GPIO.F2 = 0; //desliga GP2.

Delay_ms(500); //aguarda 500 ms.

GPIO.F4 = 1; //liga GP4.

Delay_ms(500); //aguarda 500 ms.

GPIO.F4 = 0; //desliga GP4.

Delay_ms(500); //aguarda 500 ms.

GPIO.F5 = 1; //liga GP5.

Delay_ms(500); //aguarda 500 ms.

GPIO.F5 = 0; //desliga GP5.

Delay_ms(500); //aguarda 500 ms.

} /*retorna para GP0 e fica neste ciclo infinito enquanto

houver alimentação*/

}

Postado
deem uma olhada neste codigo e me digam se estar correto... eu compilei e e consegui gravar mas não obtive resultado pratico, o que pode estar dando errado.


void main()
{
CMCON =7; //desabilita o comparador
ANSEL =0; //desabilita o conversor A/D.Agora temos operação digital no I/O
TRISIO = 0x08; //todos os pinos = saida, exceto GP3
GPIO = 0x00; //todos os pinos desligados inicialmente

while(1){
GPIO.F0 = 1; //liga GP0.
Delay_ms(500); //aguarda 500 ms.
GPIO.F0 = 0; //desliga GP0.
Delay_ms(500); //aguarda 500 ms.

GPIO.F1 = 1; //liga GP1.
Delay_ms(500); //aguarda 500 ms.
GPIO.F1 = 0; //desliga GP1.
Delay_ms(500); //aguarda 500 ms.

GPIO.F2 = 1; //liga GP2.
Delay_ms(500); //aguarda 500 ms.
GPIO.F2 = 0; //desliga GP2.
Delay_ms(500); //aguarda 500 ms.

GPIO.F4 = 1; //liga GP4.
Delay_ms(500); //aguarda 500 ms.
GPIO.F4 = 0; //desliga GP4.
Delay_ms(500); //aguarda 500 ms.

GPIO.F5 = 1; //liga GP5.
Delay_ms(500); //aguarda 500 ms.
GPIO.F5 = 0; //desliga GP5.
Delay_ms(500); //aguarda 500 ms.

} /*retorna para GP0 e fica neste ciclo infinito enquanto
houver alimentação*/
}

Não existe erro no código. Agora precisa ver como ficou as opções do projeto na IDE. Lembre-se que deve informar o valor do osccal value caso contrario não irá funcionar mesmo.

Com o picburner você pode usar o programa do idealizador do projeto.

Ele necessita da plataforma .Net para "rodar" e por isso vai dar certo no W7.

pp4u1_en.gif

Link: http://feng3.nobody.jp/en/pp4u.html

Ou ainda o PICPGM:

winpicpgm_screen_1.png

Link: http://members.aon.at/electronics/pic/picpgm/

Abç.

Postado
Não existe erro no código. Agora precisa ver como ficou as opções do projeto na IDE. Lembre-se que deve informar o valor do osccal value caso contrario não irá funcionar mesmo.

Com o picburner você pode usar o programa do idealizador do projeto.

Ele necessita da plataforma .Net para "rodar" e por isso vai dar certo no W7.

pp4u1_en.gif

Link: http://feng3.nobody.jp/en/pp4u.html

Ou ainda o PICPGM:

winpicpgm_screen_1.png

Link: http://members.aon.at/electronics/pic/picpgm/

beleza shunt, mas o sera osccal value??? é o oscilador interno ?? e se for, para o pic 12F675 devo coloca-lo em 4MHz, certo??

valeu a dica

Postado
mas o sera osccal value? é o oscilador interno? e se for, para o pic 12F675 devo coloca-lo em 4MHz, certo?

CIS, no material que postei para download isso está bem explicado. Leia com muita atenção desde o começo. São poucas páginas até chegar no osccal.

Resumidamente, as opções são:

1 - Caso não usar um cristal externo, deverá utilizar o Oscilador Interno.

Não lembro agora quantas são as opções de clock interno, mas 4Mhz é uma delas, pois uso sempre.

2 - O Osccal Value é um parametro que apenas a microchip pode determinar. Esse parametro ajusta o oscilador interno para que o mesmo consiga uma boa precisão no valor escolhido de clock, em muitos casos fica em 1%.

3 - Para encontrar o valor do osccal é necessário colocar o pic no gravador e efetuar a leitura, mesmo que ele não contenha nada gravado.

4 - No programa de interface, vá a última posição de memoria. É nela que sempre encontrará ou mandará ser gravado este valor; anote em algum lugar (veja a img abaixo):

piccal2.jpg

5 - Ao abrir seu código no programa de gravação, vá a última posição de memória e veja se o valor anotado é o mesmo. Caso não for, entre com ele manualmente e efetue a gravação.

6 - Faça os testes e retorne com os resultados para que sua dúvida (caso esclarecida) seja compartilhada com os outros amigos.

--

Mais informação para recuperar o osccal veja esta página:

http://picprojects.org.uk/projects/piccal.htm

Outro detalhe é que se aplicados 5v na alimentação do pic, não será possível recuperar o valor. Veja o próximo link:

http://picprojects.org.uk/projects/recal/recal.htm

--

Utilizo um gravador USB nos experimentos. Como o meu é uma versão reduzida do pickit2, ele não controla a VCC e com isso também não consigo recuperar o valor. O que faço é o seguinte: Com uma fonte de tensão ajustavel, coloco ela em 4,3v alimento o pic com ela. Mando efetuar o resgate do numero e anoto. Estes 4,3v de tensão, obtive experimentalmente. Cuidado para não fechar curto e um multímetro monitorando o tempo todo é desejável. Esse método não é muito recomendado, mas feito uma vez, o valor do osccal para o pic alvo será sempre o mesmo, você pode entrar com ele manualmente que não haverá erro.

--

Desculpe o jornal acima, mas é o que faço para brincar com eles.

Abç.

Postado

valeu Shunt, obrigado pelas dicas cara... assim que tiver concluido opor aqui volto com resultados..

valeu Shunt, obrigado pelas dicas cara... assim que tiver concluido opor aqui volto com resultados..

agora sim , fazer piscar os leds deu certo...

mas tentei outro codigo e não estou conseguindo, vejam se tem algo errado no codigo, e mandei opiniões por favor...

/* Meu primeiro programa */

void main() {

CMCON = 7 ; //desabilita o comparador.

ANSEL = 0 ; //desabilita o conversor A/D.Temos agora operação digital nos I/O.

TRISIO = 0x08 ; //faz todos os pinos = saida, exceto GP3.

GPIO = 0x00 ; //desliga iniciamnete todos os pinos.

while (1) {

GPIO.F0 = 1 ; // liga GP0.

delay_ms(1000) ; //aguarda 1000 milisegundos.

GPIO.F0 = 0 ; //desliga GP0

delay_ms(100) ; //aguarda 10 milisegundos.

GPIO.F1 = 1 ; // liga GP1

delay_ms(1000) ; //aguarda 1000 milisegundos.

GPIO.F1 = 0 ; //delisga GP1.

delay_ms(100);

GPIO.F2 = 1 ;

delay_ms(1000);

GPIO.F2 = 0 ;

delay_ms(100) ;

GPIO.F4 = 1 ;

delay_ms(1000) ;

GPIO.F4 = 0 ;

delay_ms(100) ;

GPIO.F5 = 1 ;

delay_ms(1000) ;

GPIO.F5 = 0 ;

delay_ms(100) ;

} //retorna para GP0 e fica neste ciclo infinito.

}

Postado
agora sim , fazer piscar os leds deu certo...

mas tentei outro codigo e não estou conseguindo, vejam se tem algo errado no codigo, e mandei opiniões por favor

Também não vi erro, qual o é problema apresentado?

abç.

Postado
Também não vi erro, qual o é problema apresentado?

abç.

acho que era erro meu amigo SHUNT !!! agora ta tudo certinho, ja mudei de variadas formas o mesmo codigo e deu certinho, fiz varias sequencias e ate simulei um semaforo...kkkkk

obrigado por tudo cara! obrigado mesmo!

obrigado a todos pelas dicas e tira duvidas!

abs!!

Postado

ola pessoal!!! to com um problema aqui no mickroC... to usando o W7 e o mickroC trava na hora de compilar o condigo...ja testei no XP e tava dando certo, então quero criar uma maquina virtual, com o oracle, mas não to conseguindo fazer ela funcionar, sera que alguem tem dicas??

abs...

Postado
ola pessoal!!! to com um problema aqui no mickroC... to usando o W7 e o mickroC trava na hora de compilar o condigo...ja testei no XP e tava dando certo, então quero criar uma maquina virtual, com o oracle, mas não to conseguindo fazer ela funcionar, sera que alguem tem dicas??

abs...

OK, um pouco mais de leitura e ja resolvido!!!!!!!!!!!!!

Postado

voltando com duvidas galera...como ja dito acima, consegui varias sequencias com leds programando em C, mas agora eu queria o seguinte, escrever varias sequencias num mesmo programa, mas de forma que cada sequencia se repetisse por 5 vezes, por exemplo... de forma que ficaria assim: 1ª sequencia(5 vezes)

2ª sequencia(5 vezes)

3ª sequencia(5 vezes)

já tentei fazer isso escrevendo varias vezes as sequencias, mas na hora de compilar não da certo, acho que fica muito longo o programa, se alguém souber como repetir uma sequencia(rotina), postem dicas por favor............

Postado
se alguém souber como repetir uma sequencia(rotina), postem dicas por favor.

Crie arrays para suas sequencias. Muito cuidado com o tamanho das variaveis, pois isso consome muita memória. Declare assim:


const unsigned short seq_[B]1[/B][] = {0b00000001, 0b00000010};
const unsigned short seq_[B]2[/B][] = {0b00000001, 0b00000010};
const unsigned short seq_[B]3[/B][] = {0b00000001, 0b00000010};

while(1){

for(x = 0; x <= 4; x++){
for(j = 0; j <= ao tamanho da sua sequencia; j++){
portX = seq_[B]1[/B][j];
delay_ms();
}
}

for(x = 0; x <= 4; x++){
for(j = 0; j <= ao tamanho da sua sequencia; j++){
portX = seq_[B]2[/B][j];
delay_ms();
}
}

for(x = 0; x <= 4; x++){
for(j = 0; j <= ao tamanho da sua sequencia; j++){
portX = seq_[B]3[/B][j];
delay_ms();
}
}

}
.
.
.
unsigned short x = 0, j = 0;

Só vai precisar corrigir algumas coisas código, como: "ao tamanho da sua sequencia".

É uma dica, espere opiniões dos colegas mais experientes.

Abç.

Arquivado

Este tópico foi arquivado e está fechado para 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...