andre_teprom escreveu:Renan,
Na verdade, não entendi muito além de um determinado ponto pois ainda não ficou claro pra mim, e acabei parando na varredura.
Qual seria exatamente o objetivo disso ?
- Código: Selecionar todos
// a variável global dispara, se 1 indica que novo incremento na contagem
/******* EXECUCAO ********/
If ( dispara ) Varredura() ;//poderia explicar para mim a função desta linha?
/****** DECLARACAO *******/
void varredura ( void )
{
static int coluna = 0 ;
if ( coluna++ <= 11 )
coluna=P1;//(não sei se está certo... o objetivo é fazer com q o port P1 controle a varredura, através de um CD4511 contando junto com a variável coluna.)
{
//////// ???(aqui seriam os códigos de soma da coluna e da linha e cada uma delas representa uma tecla... não precisa ser todas as teclas do teclado necessariamente)
}
dispara = 0 ;
}
Mas se serve de consolo, ( respondendo a sua questão inicial ) qualquer lógica pode ser implementada em C.
Vamos entendendo aos poucos e vamos avançando passo-a-passo.
+++
primeiramente feliz ano novo pra vc...
o meu objetivo nisso é aprender a interfacear um teclado matricial grande no microcontrolador... e sem usar um circuito lógico q projetei, ele até facilita a programação, pois só com o comando switch case dá pra fazer alguma coisa, mas quero avançar na programação e sei q assim como eu, você e os outros participantes deste fórum adoramos discutir sobre microcontroladores e eletrônica digital em geral.quero explorar mais do software e menos de hardware...
o q eu disse ali no fluxograma q (tentei fazer) fiz foi basicamente escanear as 11 colunas do teclado e cada vez q ele acende um pino no CD4511, uma variavel contará dentro do programa... se eu aperto alguma tecla q corresponde a coluna X e a linha Y(ex: coluna 0 e linha 4) então o programa vai ler a variavel da contagem da coluna que seria 0(primeira das 11 colunas) e somar com o valor 04h que vai estar no port de retorno do uC.
eu notei no código q vc postou, vc já declarou a variável coluna e limitou sua contagem até 11... preciso fazer com q o valor de 0h a Ah vá para o port P1(P1.0 a P1.3) q irá contar em binário até 11 em um loop infinito. eu acho q daria pra fazer isso apenas com o seguinte comando:
"coluna=P1;"
preciso declarar também uma outra variável chamada ENTRADA que corresponderá aos primeiros quatro pinos de P3(vamos supor q vai ser essa q irá receber as linhas de retorno do teclado), a variavel ENTRADA é iniciada em 0 e enquanto ela estiver em 0, o programa nada fará...só aguardará até q alguma tecla seja pressionada.
vou fazer o esquema pra vc ver.