你好,要利用串口传送,首先要设置单片机串行接口的工作方式,并且REN允许串行接控制位要为1(REN=1)以及设置传送的波特率,串口助手的波特率也要与之对应.并且确定单片机已经与电脑连接成功.连接成功后.在串行口中断程序,可以用a=SBUF来存到里,但a必须在前面定义不能char a; a=SBUF这样.虽然原理是这样.希望对你有帮助
应该用十六进制发送!
#include
void port_init()
{
XBR0=0X01; //UART 的TX0,TX1连到P0.4,P0.5
XBR1=0X40; //交叉开关使能
P0MDOUT=0X10; //P0.4配置为推挽,其他漏极开路
}
void uart0_init()
{
SCON0|=0X10;//UART0接收允许
CKCON=0X01;//系统时钟4分频
TH1=0X64;//波特率为9600
TL1=TH1;
TMOD=0X20;//方式2,8为自动装载定时器
TR1=1;//定时器1允许
TI0=1;//INT1边沿触发
}
void main()
{
unsigned char i;
port_init();
uart0_init();
while(1)
{
while(RI==0);//接收
i=SBUF;
RI=0;
if(i!='\0')
{
SBUF=i;
while(TI==0);//发送
TI=0;
i='\0';
}
}
}
看看后半部分,单片机接收到后RI被置0,进入while。。。。。
接收要么采用查询方式,要么采用中断方式。
直接从SBUF取数并不可靠,无法确定此前是否发生了传输。
好好看书为上……
我的博客里有详细讲解,希望对你有帮助!http://hi.baidu.com/txz01/blog/item/7ae25df4919cf779dcc4743e.html
传送的是BCD码