标题:
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://www.51hei.com/bbs/)
Powered by Discuz! X3.1