c - UART1_写(13);没有运行

标签 c microcontroller pic mikroc

我使用 PIC16F688 从模拟 channel 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);
     }
   }

最佳答案

您正在编写换行符或 \r,您可能希望发送 \r\n 或仅发送 \n > 取决于您的终端。我推荐一些工具来以十六进制读取你的终端。在 Linux 中 cat/dev/ttyUSB0 | hexdump 可以工作。

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

祝你好运

关于c - UART1_写(13);没有运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33631776/

相关文章:

c - RN42 蓝牙模块 - 从 C 代码进入命令模式

c - 是否可以连接两个管道/ socket ?

c - 使用指针算术困惑

c - 如何在c中缩放数字/数字范围

c - 按第三次按钮后 AVR 代码停止工作

c - 如何通过 LPC1788 使用 SPI 发送和接收数据

c - printf 中的格式字符串

c - 在C中合并多维数组

c - 为什么这个简单的 PWM 在 xc8 中不起作用

assembly - 写入 PIC 上的 EEPROM