domingo, 9 de dezembro de 2012

Desafio 3.1

Segue o link para download do desafio: Conversor Analógico/Digital http://www.4shared.com/office/tbdqlj-V/desafio31.html?

Arquivo de exemplo: http://www.4shared.com/rar/VAKfy5lZ/adclpc2138.html?

Exemplo de Resposta: http://www.4shared.com/rar/gnjYDKFF/desafio31resposta.html?

Meu programa:
#include <lpc21xx.h>
#include <stdio.h>  
                         
#define a (1<<16)      
#define b (1<<17)      
#define c (1<<18)      
#define d (1<<19)      
#define e (1<<20)      
#define f (1<<21)      
#define g (1<<22)
#define num_1 IOSET1=b|c ; IOCLR1=a|d|e|f|g
#define num_2 IOSET1=a|b|e|d|g ; IOCLR1=c|f
#define num_3 IOSET1=a|b|c|d|g ; IOCLR1=e|f
#define num_4 IOSET1=b|c|f|g ; IOCLR1=a|d|e
#define num_5 IOSET1=a|c|d|f|g ; IOCLR1=b|e

unsigned int val;
unsigned char teste[];

int main(void)        
{
IODIR1 = 0xffffffff;
PINSEL1 = 0x400000;
VPBDIV = 0x02;              
ADCR   = 0x00210601;

while(1)
{
atualiza:
ADCR  |= 0x01000000;                
while ((ADDR & 0x80000000) == 0);  
val = ((ADDR >> 6) & 0x03FF);

if (val<204)
{
num_1;
goto atualiza;
}
else if (val>204 & val<408)
{
num_2;
goto atualiza;
}
else if (val>408 & val<612)
{
num_3;
goto atualiza;
}
else if (val>612 & val<816)
{
num_4;
goto atualiza;
}
else if (val>816 & val<1023)
{
num_5;
goto atualiza;
}
}
}

Circuito Proteus:




Nenhum comentário:

Postar um comentário