UART1_Write(13)无法正常运行

时间:2015-11-10 03:24:06

标签: c microcontroller mikroc

我使用PIC16F688从模拟通道2读取并平均压力传感器的值,然后使用ASCII字符方法将4个字节转换为数字。 代码非常简单。将结果发送到UART1_Write(temp[i]);后,我不需要任何延迟 我的问题是UART 13无法正常工作作为回车。 终端的输出如下所示:

000000000
0000
0000
000000000

它应该每次发送0000,并取决于我对传感器的压力,从00001023的值。

char temp[5];
unsigned int adc_value;
char uart_rd;
int i;
unsigned int d[10]={0};
int average = 0;
int counter =0;
 void main() { 
  temp[0]='0';
  temp[1]='0';
  temp[2]='0';
  temp[3]='0';
  temp[4]='\r';


   OSCCON     = 0x77;        //8MHz

   ANSEL = 0b00000100;      
   CMCON0 = 0X07;  //
   TRISA = 0b00001100;

   UART1_Init(9600);               // Initialize UART module at 9600 bps
   Delay_ms(100);                  // Wait for UART module to stabilize


  while (1) {
          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<5; i++)
                {
                 UART1_Write(temp[i]);


                }
                 UART1_Write(13); // back slash

             }

           }

1 个答案:

答案 0 :(得分:0)

我希望temp [4]评估为0x0D(CR),因此'while'循环的每次迭代都写入四位数,然后是两个CR,没有任何Linefeed。尝试在'for'循环之后将0x0A写入UART,而不是13。

如果您不清楚CR和LF之间的区别,这个答案可以很好地解释它: https://stackoverflow.com/a/3098328/5544939