请问下这个程序有错么?为什么送到串口显示错误呢?
时间:10-02
整理:3721RD
点击:
#include<REG52.H>
#include<math.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
void start()
{ TMOD = 0x20;//定时器1工作方式2自动装初值
SCON = 0x50;//方式1允许接收
TH1 = 0xFD;//波特率为9600的初值
TL1 = TH1;
PCON = 0x00;//电源管理寄存器
EA = 1;//开总中断
ES = 1;//开串口中断
TR1 = 1;//开始计数
}
void send(uchar a)
{SBUF=a;
while(!TI)
TI=0;
}
void main()
{start();
send(123);
}
就是送个123呀,结果却显示错误
#include<math.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
void start()
{ TMOD = 0x20;//定时器1工作方式2自动装初值
SCON = 0x50;//方式1允许接收
TH1 = 0xFD;//波特率为9600的初值
TL1 = TH1;
PCON = 0x00;//电源管理寄存器
EA = 1;//开总中断
ES = 1;//开串口中断
TR1 = 1;//开始计数
}
void send(uchar a)
{SBUF=a;
while(!TI)
TI=0;
}
void main()
{start();
send(123);
}
就是送个123呀,结果却显示错误
16进制也不是123呀
while(!ti)后面请记住加分号。
点个赞
数据类型不对吧,send函数发送的是uchar型而send(123)实参类型不对
有道理
你的while(!Ti)的后面要加分号吧
123在255以内,是可以的,没有超过数据上限
头文件都是错的
判断是否发送或者接收完成
头文件都没有
小编你确定编译通过了吗…
去掉tr1那句试试