/**************************************************
实验名称:串口实验一
实验目的:在上位机上用串口调试助手发送一个字符X,单
片机在收到字符后返回给上位机,显示"I got
X",串口波特率设定为9600bps。
实验备注:SMOD处在TCON第一位,TCON在单片机复位上电
后清零。所以不设置TCON的话,串口方式在1、
2、3时,波特率处于正常不加倍状态,也不用
特意去设置TCON。
**************************************************/
#include<reg52.h>
//#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag, temp, i;
uchar code table[] = "I got ";
void init();
void main()
{
flag = 0;
temp = 0;
i = 0;
init();
while(1)
{
if(flag == 1)
{
ES = 0;
for(i = 0; i < 6; i++)
{
//TI = 1;
//printf("I got the ");
SBUF = table[i];
while(!TI);
TI = 0;
}
SBUF = temp;
while(!TI);
TI = 0;
flag = 0;
ES = 1;
}
}
}
void init()
{
TMOD = 0X20;//在定时器工作模式2时,
TH1 = 0xfd;//处在自动填装八位寄存器状态
TL1 = 0xfd;//波特率为9600两寄存器各填装0xfd
EA = 1;
ES = 1;
SM0 = 0;//10位异步收发,8位数据,
SM1 = 1;//定时器1溢出控制,波特率可控制
REN = 1;//串口接受允许位
TR1 = 1;