串口在本单片机内承担输入和输出数据的工作,串行口中有两个缓冲寄存器SBUF,一个是发送寄存器,一个是接收寄存器,在物理结构上是完全独立的。它们都是字节寻址的寄存器,字节地址均为99H。中断函数后增加interrupt 4(用户手册6.6)。串口数据发送采用查询方式,数据接收采用中断方式。在51单片机的串口通信中,串口的波特率是可变的,取决于定时器1的溢出率,也就是说定时器1每溢出1次,串口就发送一次数据。
#include "STC15F2K60S2.H"
#include "stdio.h"
typedef unsigned char u8;
typedef unsigned int u16;
u8 org[11]="12345678\r\n",tran[9],wei,i,delay;
u16 count;
void close()
{
P0=0;
P2=P2&0X1F|0XA0;
P2=P2&0X1F;
P0=0XFF;
P2=P2&0X1F|0X80;
P2=P2&0X1F;
}
void open()
{
EA=1;
ET0=1;
ES=1;
}
void UartInit(void) /*通过STC-ISP可以直接计算出,内容理解可查看之前的定时器章节*/ //9600bps@11.0592MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xE0; //设定定时初值
TH1 = 0xF