#include <reg52.h>
unsigned char ch=0;
/* 初始化函数 */
void uart_init()
{
TMOD=0x20; //T1为方式2
TL1=0xfd; TH1=0xfd; //波特率为9600的计数初值
SCON=0x50; //串口工作在方式1。允许接收
PCON=0x00; //SMOD=0
TR1=1;
ES=1; EA=1; //开串口中断
}
/* 串行通信中断服务程序; */
void receive(void) interrupt 4 using 0
{
if(RI)
{
ch=SBUF; //读取接收的数据
RI=0;
P2=ch; // 用接收到数据控制LED
SBUF=ch;
}
if(TI)
TI=0;
}
void delay(){
unsigned char i,j;
for(i=0;i<250;i++)
for(j=0;j<250;j++)
;
}
void SendByte(unsigned char data1)
{
SBUF = data1; //发送数据
while(!TI); //等待发送完成
TI=0; //清零发送标志位
}
void Show_u16(unsigned int kk) //显示16位无符号整数
{
unsigned char a,b,c,d,e;
e=kk%10+0x30; //将每一位转换成ASCII码
d=(unsigned char)(( kk/10 )%10)+0x30;
c=(unsigned char)(( kk/100 )%10)+0x30;
b=(unsigned char)(( kk/1000 )%10)+0x30;
a=(unsigned char)(( kk/10000 )%10)+0x30;
SendByte(a); SendByte(b); SendByte(c); SendByte(d); SendByte(e);
SendByte('\r'); //发送回车
SendByte('\n');
}
void SendString(unsigned char *pstr)
{
while(*pstr!='\0') //字符串是否发完
{
SendByte(*pstr); //发送字符串数据
pstr++; //指向下一个字符
}
SendByte('\r'); //发送回车
SendByte('\n');
}
unsigned char Hello[]="Welcome to China! ";
/* 主程序 */
void main()
{
unsigned int temp=0x3214;
uart_init(); //调用初始化函数
ES=0;
while(1){
Show_u16(temp);
delay();
SendString(Hello);
delay();
} ;
}