-2

PIC16F688 を使用してアナログ チャネル 2 から読み取り、圧力センサーの値を平均してから、ASCII 文字方式を使用して 4 バイトをデジタルに変換しています。

結果を UART1_Write(temp[i]) に送信した後、遅延は必要ありません。

私の問題は、UART 13 がキャリッジ リターンとして正しく機能していないことです。端末からの出力は次のようになります: 000000000 0000 0000 000000000 tt は毎回純粋な 0000 を送信する必要があります (センサーへの圧力に応じて、0000 から 1023 まで)。

   char *temp = "0000";
   unsigned int adc_value;
   int i;
   int average = 0;

   void main() 
   {
     OSCCON = 0x77;  //8MHz
     ANSEL = 0b00000100;  //ANS2
     CMCON0 = 0X07;  
     TRISA = 0b00001100;
     UART1_Init(9600);
     Delay_ms(100);

     while (1)  //infinte loop
     { 
       average=0;
       for(i=0;i<10;i++){
         average+= ADC_Read(2);
       }
       average/=10;
       temp[0] = average/1000+48;
       temp[1] = (average/100)%10+48;
       temp[2] = (average/10)%10+48;
       temp[3] = average%10+48;
       for (i=0;i<4; i++){
         UART1_Write(temp[i]);
       }
       UART1_Write(13); // back slash
       //delay_ms(10);
     }
   }
4

1 に答える 1