1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標題: STC89C5單片機串口發送數據時我使用單引號發送正確,雙引號提示我指向的不是指針的... [打印本頁]

作者: SKYLAR123    時間: 2020-6-4 13:39
標題: STC89C5單片機串口發送數據時我使用單引號發送正確,雙引號提示我指向的不是指針的...
#include <reg51.h>

void uart_init(void);
void uart_send_byte(unsigned char m);
void delay500ms(void);
void main()
{
  uart_init();
  while(1)
  {
    uart_send_byte("x");
      delay500ms();
  
  }
}

void uart_init(void)    //第一步單片機初始化
{
  SCON=0x50;             //通信方式一
  PCON=0x00;             //波特率加倍

  TMOD=0X20;             //方式2
  TH1=243;
  TL1=243;             //波特率4800

  TR1=1;
  ES=1;
  EA=1;
}
void uart_send_byte(unsigned char m)
{
   SBUF=m;

   while(!TI);

   TI=0;
}


void delay500ms(void)   //誤差 0us
{
    unsigned char a,b,c;
    for(c=205;c>0;c--)
        for(b=116;b>0;b--)
            for(a=9;a>0;a--);
}
就是 uart_send_byte("x");但改為uart_send_byte('x');沒有問題,這個是什么原因

作者: carpcarey    時間: 2020-6-4 14:25
void uart_send_byte(unsigned char m)
調用你申明的這個函數
如果是單引號uart_send_byte('x');
等同于uart_send_byte(0x78); //x的ASCII碼是0x78   ‘x'這時是字符,不是字符串。
如果是雙引號,表示字符串。字符串是用指針表示起始位置的。不符合你申明的unsigned char,所以類型不正確。

unsigned char str[]="xyz";
uart_send_byte(*str);
uart_send_byte(*(str+1));
這是可以的.

作者: qq659848755    時間: 2020-6-4 14:29
雙引號引起來的是字符串,是char*類型。單引號引起來的是字符,是char類型。
作者: 51hei**1140    時間: 2020-6-4 14:41
雙引號引用的是字符串,
單引號引用的是一個字符




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1