-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

0

您正在编写换行符,或者\r您可能想要发送的位置,\r\n或者仅\n取决于您的终端。我会推荐一些工具来以十六进制读取您的终端。在linuxcat /dev/ttyUSB0 | hexdump中可以工作。

附言。使用 + '0' 使您的字符转换更加清晰,但我认为 xc8 带有 stdlib.h,因此您可以使用itoa().

祝你好运

于 2015-11-18T14:42:34.390 回答