标题:
请问大神,单片机如何输出P0/P1/P2口状态数据到串口?
[打印本页]
作者:
mxdkey
时间:
2022-7-5 13:32
标题:
请问大神,单片机如何输出P0/P1/P2口状态数据到串口?
单片机小白一个,目前遇到一个疑问如下:
例如P2=0xFF;想通过串口输出P2的这个十六进制值,请问如何实现?(P2口已使用上拉电阻,默认高电平)
代码示例:
void main()
{
P2=0xff;
dat0=P2;
EA=1;
Init_USART();
while(1)
{
PutString(dat0);
Delay(1000);
}
}
以上示例报错:main.c(25): error C214: illegal pointer conversion //PutString(dat0); 这一行
PutString为串口通信协议函数
//串口发送函数
void PutString(unsigned char *TXStr)
{
ES=0;
while(*TXStr!=0)
{
SBUF=*TXStr;
while(TI==0);
TI=0;
TXStr++;
}
ES=1;
}
实测发送文本数据,例如
PutString("Hallo!");
可以通过;烦请各位大神答疑!感谢!
作者:
Hephaestus
时间:
2022-7-5 16:55
PutString(&dat0);
作者:
lkc8210
时间:
2022-7-5 17:42
while(1)
{
SBUF = P2;
Delay(1000);
}
复制代码
作者:
bioger
时间:
2022-7-5 18:07
你这不是单片机的问题 这是C语言的问题,PutString的输入变量的函数指针,您给的变量值 这肯定是要操作的。好好看看C语言的书籍吧
作者:
wulin
时间:
2022-7-6 16:32
#include <reg51.H>
#define uint unsigned int
#define uchar unsigned char
uchar dat0[3];
void UartInit(void) //9600bps@11.0592MHz
{
SCON = 0x50; //8位数据,可变波特率
TMOD= 0x20; //设置定时器模式
TL1 = 0xFD; //设置定时初始值
TH1 = 0xFD; //设置定时重载值
ET1 = 0; //禁止定时器中断
TR1 = 1; //定时器1开始计时
}
//串口发送函数
void PutString(unsigned char *TXStr)
{
while(*TXStr!=0)
{
SBUF=*TXStr;
while(TI==0);
TI=0;
TXStr++;
}
}
void Delay(uint t)
{
uint i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
UartInit();
while(1)
{
dat0[0]=P0;
dat0[1]=P1;
dat0[2]=P2;
PutString(dat0);
Delay(1000);
}
}
作者:
lyonkon
时间:
2022-7-10 09:46
sbuf = p2;
作者:
laowang123222
时间:
2022-7-11 01:39
SBUF = P2;
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1