#include "biosdem.h" #include #include #include #include __CONFIG (0x3D39); //#define MODE_PC void serial_init(void); void serial_putchar(unsigned char x); void serial_puts(const char s[]); const char tabseuil[8]={50,50,50,50,50,50,50,127}; unsigned char commande=0,resultat; void main (void) {char x=1,n=0; #ifdef MODE_PC char j; #endif char tab[10]; char i=0; tab[9]='\0'; tab[8]='\r'; TRISC6=0; RC6=1; DelayMs(200); ADCON1= 0x00; ADCS1=0; ADCS0=1; ADON=1; TRISD=0; serial_init(); for(;;) {//DelayMs(255); ADCON0= ADCON0 & 0xC7; ADCON0= ADCON0 | (n<<3); PORTD=x; DelayMs(20); //Attente entre éclairage Led et Acquisition ADGO=1; while(ADGO==1); // lire la tension sur la voie n // et la comparer à tabseuil[n] // fabriquer un mot binaire 0-255 (m = m + 2^n si piste présente) //DelayUs(255); resultat=ADRESH; if(tabseuil[n]>resultat) {commande=commande|x;} resultat=0; if(x!=0x80) { x=x<<1; n = n + 1 ; } else { x=1; n = 0 ; // transmettre ce mot sur la liaison série // et remettre le mot à 0 #ifdef MODE_PC j=8; i=1; while (j>=0) { if((commande & i)!=0) { tab[i]='1'; } else { tab[j]='0'; } i=i>>1; j=j-1; } serial_puts(tab); #else DelayUs(50); serial_putchar(commande); #endif commande=0; } i=0; } } void serial_init(void) { BRGH=1; SPBRG=25; SYNC=0; SPEN=1; TXEN=1; CREN=1; } void serial_putchar(unsigned char x) { while(TRMT==0) ; TXREG=x; } void serial_puts(const char s[]) { char i=0; while(s[i]!='\0') {serial_putchar(s[i]); i=i+1; } }