Moderadores: andre_luis, 51, guest2003, Renie
cristian escreveu:o display é lcd ...
Djalma Toledo Rodrigues escreveu:Marcelo
O Cristian fala em Cinco Displays --- Subentendo que seja Display LEDs 7 Segmentos
Nada há ver com ASCII, este é para Display LCD
É óbvio que a Saída do ADC (Que aliáis ninguém ainda falou em ADC aqui) é Bánáriio e para se tranformar em Tensão necessita o "tratamento" com a respectiva Referência do ADC
Se a Referência for 4.096 V e o ADC 10 Bits tranquílo cada Bit 4 mV
RLF f,1
RLF f,1 ; Convertido para mV
Converte para BCD e tem os 2 Digitos 0 a 9 e 0 a 9 em cada Byte
- Código: Selecionar todos
Ex.: 12658 em BCD:
00000001 (MSB) 00100110 01011000 (LSB)
DJ
float velocidade = 1500;
long int k=0;
float perfil_vel=0;
float ciclo=20000000;
for (k=0;k<=555555;k++)
{
perfil_vel = velocidade/ciclo*k;
}
MOV 0x0000,k
REPETE:
MOV velocidade,W0
MOV ciclo , W1
DIV W0,W1
MOV k,W2
MUL W1,W2
MOV W2,perfil_vel
INC k,F
MOV D'55555',W0
CPFSEQ K
BRA REPETE
Marcelo Samsoniuk escreveu:perae! vc converteu de base 16 para base 10 usando duas instrucoes?!? como isso?
vtrx escreveu:Desafio esquisito,usando mls sabendo-se que em ASM usa-se abaixo de µs...
Olha um desafio bom,implemente a rotina erquivalente num DSPIC,mais eficaz(pois a citada fica lenta) em C doque o DSPIC pode fazer:float velocidade = 1500;
long int k=0;
float perfil_vel=0;
float ciclo=20000000;
for (k=0;k<=555555;k++)
{
perfil_vel = velocidade/ciclo*k;
}
Em ASM:
- Código: Selecionar todos
MOV 0x0000,k
REPETE:
MOV velocidade,W0
MOV ciclo , W1
DIV W0,W1
MOV k,W2
MUL W1,W2
MOV W2,perfil_vel
INC k,F
MOV D'55555',W0
CPFSEQ K
BRA REPETE
A rotina em C fica inviável para audio em tempo real.
Djalma Toledo Rodrigues escreveu:Marcelo Samsoniuk escreveu:perae! vc converteu de base 16 para base 10 usando duas instrucoes?!? como isso?
Não foi nada disso
Veja bem, Quando se faz a Conversão no ADC o Número Binário que se obtem
é Admencional, é apenas o Conteúdo de um Contador ( Contador de Aproximação
Sucessíva mas, Contador )
Para que ele se Transforme em um Valor de Tensão que é a finalidade da Converção
há que relacionar com a Tensão de Referência do ADC
Concordam ?
Então eu supuz uma Tensão de Referência de 4.096 V que dividida por 1024
do ADC de 10 Bits da Exato 4 mV por Bit. Lógico que se há que Multiplicar
por 4 para obter a tensão em mV
Daí as duas Instruções RLF Faltou é bem verdade esclarecer que é Word,
Rotacionar para a Esquerda o Word duas vezes.
Para "converter" para Volts no Display não há necessidade de Cálculo, basta apenas
deslocar o Ponto Decimal Ex.: 4096 mv 4.096 V
-- Conforme ja coloquei aqui no Forum em outro Tópico.
O Humano julga pelo deslocamento do DP que esta sendo Multiplicado ou Dividido por 10
(Coisa de Cinema rs )
DJ
vtrx escreveu:Desafio esquisito,usando muls sabendo-se que em ASM usa-se abaixo de µs...
Marcelo Samsoniuk escreveu:...jah comeca que normalmente as tensoes de referencia sao 5V, 3.3V ou qq coisa que *nunca* vai ser 2^n para vc resolver a vida assim facil ...
Djalma Toledo Rodrigues escreveu:Então eu supuz uma Tensão de Referência de 4.096 V que dividida por 1024 do ADC de 10 Bits da Exato 4 mV por Bit. Lógico que se há que Multiplicar por 4 para obter a tensão em mV
vtrx escreveu:Olha um desafio bom, implemente a rotina erquivalente num DSPIC,mais eficaz(pois a citada fica lenta) em C doque o DSPIC pode fazer:
- Código: Selecionar todos
float velocidade = 1500;
long int k=0;
float perfil_vel=0;
float ciclo=20000000;
for (k=0;k<=555555;k++)
{
perfil_vel[k] = velocidade/ciclo*k;
}
float velocidade = 1500;
long int k=0;
float perfil_vel=0;
float ciclo=20000000;
perfil_vel[0] = velocidade/ciclo;
for (k=1;k<=555555;k++)
{
perfil_vel[k] = perfil_vel[k-1] + perfil_vel[0];
}
Jozias del Rios escreveu: ... Então vamos relançar um novo desafio para o DJ!! dessa vez eu aposto R$ 20!! Para o mesmo PIC16F*
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante