Ir ao conteúdo

Apenas ler um botão no 12F675


Diego Dyan

Posts recomendados

Postado

Olá....

Venho ao fórum com uma dúvida simples que o Google não foi capaz de responder da forma que eu queria, pelo menos não usando linhas para o CCS (que é o compilador que eu uso).

Numa das figuras que seguem coloquei como exemplo uma diagraminha do 16F628A. Coloquei o pin_b3 pra ficar em high, daí quando abertava a botão ele vinha para low. Nisso o programa enxergava a mudança e desempenhava um comando qualquer. Até aí beleza, tranquilo.

Daí inventei de tentar usar o 12F675 que é menor e tudo mais, e na outra figura coloquei um esqueminha com ele. Se eu coloco o pino pra iniciar em high, daí um botão para aterrá-lo, ele não vem pra low quando aperto o botão.

Procurando no Google achei apenas exemplos que provavelmente devem ser para outro compilador, pois chamam o pino diretamente de GPIO.

Alguém já mexeu com esse microcontrolador? Como contornaram?

#include <12F675.h>
#use delay (clock=4000000)
#fuses INTRC_IO, NOWDT, PUT, NOBROWNOUT, NOMCLR, BANDGAP_HIGH, NOPROTECT, NOWDT, NOCPD



#define p0 pin_a0
#define p1 pin_a1
#define p2 pin_a2


main()
{

output_low (p1);
output_low (p2);

output_high (pin_a5);



output_high (p0);

}

attachment.php?attachmentid=84457&stc=1&d=1319765235

attachment.php?attachmentid=84458&stc=1&d=1319765235

post-793530-13884960921654_thumb.png

post-793530-13884960922084_thumb.png

Postado

amigo uso o mickroC mas acho que posso te ajudar este pic tem conversores analogico para digital e voce tem que desativalo no mickroC é so escrever cmcon=0x07;

é so nesse problema que consigo pensar se voce testar e não der certo me avisa que eu te ajudo a pesquisar e o amareliho que aparece no isis é que esta passando uma corrente muito alta pelo pino do seu pic

E-mail: [email protected]

Postado

Primeiramente agradeço a atenção de todos pelo tópico, então vamos lá:

mister nintendo:

As minhas buscas no google sempre retornavam exemplo usando o mikroC.

E depois que você falou, realmente eu lembrei desse lance do cmcon, que já usei no 16F628A. Fui lá buscar nos meus exemplos e adicionei as linhas:

 cmcon = 7; 

e lá cabeçalho copiei a linha do 628A:

#byte cmcon = 0x1F

mesmo assim continou não funcionando e ao tentar aterrar o pino aparece o amarelinho indicando curto.

Será que é essa definição do byte que tá errada? De repente para o 16F628A é uma e para o 12F675 é outra né? Sabe se tem algo a ver com isso? E qual será a certa para o 675?

Felipe_Eletronic

Como eu faço isso, cara? Realmente não sei nem que nome esses ports tem. :P

Será que é gp ou algo assim? como ficaria? algo do tipo:

 port_gp_pullups(0);

???

Pode ser que a solução seja algo no sentido que você falou, mas não sei ainda como proceder.

jorgeeletronico

Graaaande Jorge, aqui estou eu de novo com dúvidas juvenis... hehe

Então, meu velho, tentei a rotina que você passou mas não acontece nada. O compilador não dá erro mas também não acontece o esperado. Estranho né? Pra mim que seria quase igual ao 16F628A, mas já nessa coisa simples já embrecou. Será que não tem nenhuma configuração do Proteus q deve ser alterada? Eu to usando o 7.7.

Abraço a todos

Postado

Vamos aos problemas malditos do CCS, o primeiro deles, para acessar os periféricos do PIC não da pra fazer de forma direta ou seja usando os nomes dos registradores que aparecem no datasheet...Essa é uma das coisas que mais detesto nesse compilador...

Enfim veja se esse exemplo aqui para leitura de botões ajuda:



#include<12f675.h>
#fuses INTRC_IO, NOMCLR,NOWDT

#use delay (clock = 4000000)

void main (void)
{
set_tris_a (0x01); //aqui no CCS o tris que é usado no 12f675 é so o A
setup_comparators(NC_NC_NC_NC);
setup_adc(ADC_OFF); //desliga ADC
setup_adc_ports(NO_ANALOGS); //desabilita I/O analogico

while(1)
{
if(!input(PIN_A1))
{
output_high(PIN_A2); //liga A2 se botao pressionado
}
}
}



faça o teste mas de uma examinada nesse código antes.

Abs.

Postado

cada familia de pic tem o seu jeito de se configurar eu usei o 12f629 e era so isso

cmcon=0x07;

intcon=0x00;

mas pesquisa por

adcon

ansel

anselh

C1ON_bit = 0;

C2ON_bit = 0;

ADCON1

cmcon=0x04

tenho uns vinte doc debulhando o ccs mas não sei anexa eles aqui me mandem um post ensinado que eu coloco

só uma dica de todos os compiladores C's que eu mexi eu achei o microc o melhor

ele tem bibliotecas boa nele, e um vasto material na net

Postado

Primeiramente olá a todos e desculpas pela demora em responder o tópico... Os últimos dias foram meio atribulados.

Então jorgeeletronico, vou ter que seguir o Felipe_Eletronic nos xingamentos ao CCS, pois tudo indica que o não funcionamento se dá a precária biblioteca do programa.

Vi um exemplo de leitura de teclas bem didático num livro do Fábio Pereira e pelo jeito a solução é isso mesmo que vocês tem me orientado: configurar as portas como entradas e saídas digitais e não como analógicas, e em todos os exemplos que eu tenho encontrado são as rotinas simples que terminam isso, tais como o cmcon, que desativa as entradas do comparador AD, e ansel, que configura as entradas como digitais.

Porém ao abrir a bibilioteca do F12f675 q vem com o CCS não tem nada lá sobre essas palavras chaves. Peguei também uma segunda biblioteca de registradores para a familia 12Fxx lá no site da Editora Erica, mas mesmo assim o prorgrama tá dando erro pra ler as definições.

Vou tentando aqui, qualquer informação nova que vocês tiverem será bem-vinda. E eu vou pesquisando e informando aqui os meus avanços.

Postado
qualquer informação nova que vocês tiverem será bem-vinda.

Amigo, confira este material aqui. Tem muita coisa sobre este pic, inclusive com exemplos. Quem sabe não lhe ajuda resolver os problemas encontrados.

Abç.

Postado

Olá...

Pessoal, é com grande vergonha que venho mostrar como fiz para o programa funcionar. Escapou da minha vista (e da vista de vocês também), mas nos esquemas que eu havia montado tinha um erro crasso.

Não tinha reparado de início mas eu COLOQUEI O RESISTOR DE PULLUP NO LUGAR ERRADO!! rsrs...

Deu até vergonha depois, mas estou colocando aqui porque o erro dos outros sempre pode ajudar alguém não é mesmo?

Desculpas a todos e principalmente ao compilador CCS, que foi muito xingado! rsrs

Dá pra fechar o tópico com um resolvido de boa!

attachment.php?attachmentid=84598&stc=1&d=1320584035

post-793530-13884961002491_thumb.png

Postado
E nao culpem mais o ccs por tudo kkkkkkkkkkkkkkkkkkkkkkk,gosto do compilador pow.... kkkkkkkkk

Hahahahah, aposto que isso ai foi pra mim e mais uma meia dúzia, desculpa jorge, mas o CCS tem inclusive nesse caso a parcela de culpa dele...compilador com coisa muito pronta começa a te cegar na montagem, pois você acha que tudo vai funcionar, não tenho nada contra quem usa, pois imagino que saberá o que fazer quando precisar fazer alguma execução em tempo real não é mesmo.

Mas não vou negar ajuda a ninguem so porque usa esse ou aquele compilador...estamos ai pra dar jeito com o que temos...

Alias o que fez com obasic? sendo sincero, um código em basic é mais eficiente e mais elegante do que um feito no ccs.

Abs.

Postado

nao foi pra você nao felipao,sei q sempre ira ajudar como sempre faz.O compilador basic q usava era muito limitado e nao conseguia fazer muitas coisas q em c do ccs da pra fazer.Mais eu uso so pra projetinhos caseiros então pra mim ta otimo,aliais terminei o da torneira e ja ta no banheiro kkkkkkkkkkkk

Postado

Hehehe.. Apesar do pesares acho que ainda devemos dar um voto de confiança ao CCS.

Hein mister nintendo, os exemplos parecem ser muito bons. Acho que já os vi no pc de um conhecido meu.

Mas esses exemplos não vem com esquemáticos para o Proteus? Um diagrama tipo placa de desenvolvimento ou coisa do tipo?

Postado

infelizmente não parece que ele nomeia no documento aonde o pino deve ir

exemplo

vai mexer com o led então ele coloca o nome da porte com led

ou com o buzer ele da um nome para a porta relacionado com o buzer ai tem que deduzir onde o pino vai

pelo menos foi isto que eu notei em alguns doc que vi

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!