uart_write显示错误的值

时间:2015-02-10 06:50:32

标签: uart

我正在使用pic16f877a创建一个项目。在uart上写作时我遇到了问题。我是uart的新手 这是我的代码。

int x;
int x1;
char y[3];
char y1[3];
void main() {
UART1_Init(9600);
delay_ms(100);
TRISE = 0;

       TRISC = 0xff;
      // UART1_Write_Text("Length:");
      UART1_Write_Text("Length:");
       delay_ms(100);
       x=20;
       IntToStr(x,y);
       PORTE = 0b000;
       if(PORTC.f0==1){        // For senors 1-4
       x++;}
       delay_ms(200);
       if(PORTC.f1==1){        //For sensors 5-8
       x++;}
       delay_ms(200);
       PORTE = 0b010;
       if(PORTC.f0==1){
       x++;}
       delay_ms(200);
       if(PORTC.f1==1){
       x++;}
       delay_ms(200);
       PORTE = 0b100;
       if(PORTC.f0==1){
       x++;}
       delay_ms(200);
       if(PORTC.f1==1){
       x++;}
       delay_ms(200);
       PORTE = 0b110;
       if(PORTC.f0==1){
       x++;}
       delay_ms(200);
       if(PORTC.f1==1){
       x++;}
       IntToStr(x,y);
       delay_ms(200);
       UART1_WRITE_TEXT(y);
       UART1_Write(13);

       delay_ms(500);
       UART1_Write_Text("Width:");
       delay_ms(100);
       x1=10;
       IntToStr(x1,y1);
       PORTE = 0b000;
       if(PORTC.f0==1){        // For senors 1-4
       x1++;}
       delay_ms(200);
       if(PORTC.f1==1){        //For sensors 5-8
       x1++;}
       delay_ms(200);
       PORTE = 0b010;
       if(PORTC.f0==1){
       x1++;}
       delay_ms(200);
       if(PORTC.f1==1){
       x1++;}
       delay_ms(200);
       PORTE = 0b100;
       if(PORTC.f0==1){
       x1++;}
       delay_ms(200);
       if(PORTC.f1==1){
       x1++;}
       delay_ms(200);
       PORTE = 0b110;
       if(PORTC.f0==1){
       x1++;}
       delay_ms(200);
       if(PORTC.f1==1){
       x1++;}
       IntToStr(x1,y1);
       delay_ms(200);
       UART1_WRITE_TEXT(y1);



}

这是输出:

长度:26个
宽度:166•

y = 26的值是正确的,但是当显示y1 = 16时,它显示错误答案 - 宽度应为16。

0 个答案:

没有答案