【问题标题】:error with task in microc for picmikroc for pic 中的任务错误
【发布时间】:2011-12-07 18:52:45
【问题描述】:
char uart_rd;
int b;

void main() {
  ANSEL  = 0;    
  ANSELH = 0;
  C1ON_bit = 0;  
  C2ON_bit = 0;
  TRISC = 0;
  PORTC = 0x00;
  UART1_Init(9600);               
  Delay_ms(10);                  
  UART1_Write_Text("Start");          
  UART1_Write(10);             
  UART1_Write(13);

  while (1) {                     
    if (UART1_Data_Ready()) {     
      uart_rd = UART1_Read();     
      UART1_Write(uart_rd);       
      **WordtoInt(uart_rd, b)**- this line code is my error

       if(b <= 20)
       {
              PORTC = 0x01;
       }
       if(b > 20)&&(b <= 40)
       {
              PORTC = 0x03;
       }
       if(b > 40)&&(b <= 60)
       {
              PORTC = 0x07;
       }
       if(b > 60)&&(b <= 80)
       {
              PORTC = 0x0F;
       }
       if(b > 80)&&(b <= 100)
       {
              PORTC = 0x1F;
       }


    }
  }
}

这是我的任务。当我构建它时,它向我显示了一个错误。

我从0 to 100 读取数字,这些数字表示电池电量,根据充电情况,port C0 to 5 引脚会发光。

有人可以帮我吗,如何找到将 word 转换为 int 的函数?

【问题讨论】:

    标签: c embedded integer type-conversion microcontroller


    【解决方案1】:

    uart_rd 是一个单字节字符变量。 b 在整数变量中。要将 uart_rd 转换为 b,只需这样做:

    b = (int) uart_rd;
    

    【讨论】:

    • 不必要的/暗示的(int)演员的目的是什么?
    • 只是为了在警告级别设置为高时防止任何编译器警告。
    • 只有 sizeof(int)=sizeof(char) 且 char 为 unsigned char 时才会出现警告。不太可能的组合。
    • 我同意在没有类型转换的情况下进行赋值可以完成这项工作,但为了安全起见,无论数据类型如何,我总是添加类型转换。并非所有 C 编译器在类型转换警告方面的行为都相同。
    • 除非满足条件,否则没有什么可警告的。
    【解决方案2】:

    简单的b = uart_rd;b = (unsigned char)uart_rd; 怎么样?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      相关资源
      最近更新 更多