STC89C52的串口发字符和汉字

串口发送字符串
什么是ASCLL码
ASCLL码规定了不同字符是用哪个字符去表示的(文本模式)
用串口发送字符串

#include <reg52.h>
sbit key=P3^2;
sbit led=P1^0;
volatile unsigned char sending;
//int i=0;
//unsigned char shuzu[]={0xC7,0xE5};
unsigned char zifuchuan[]="背景欢迎你!\n";
unsigned char *pd=zifuchuan;
void delay(unsigned char i)
{
  unsigned char j,k;
  for(j=i;j>0;j--)
      for(k=90;k>0;k--);
}
//void send(unsigned char d)
//{
//  SBUF=d;
//  sending=1;
//  while(sending);
//  //while(TI);
//}
//void sendc(unsigned char *pd)
//{
//  while((*pd)!='\0')
//  {
   send(*pd);
//   SBUF=*pd;
//   sending=1;
//   while(sending);
//   pd++;
//  }
//}
void main()
{
 TMOD|=0x20;
 SM0=1;
 SM1=1;
 TH1=253;
 TL1=253;
 ES=1;
 TR1=1;
 REN=1;
 EA=1;
 while(1)
 {
   if(key==0)
     delay(20);
     if(!key)
	 {
	   while(!key);
	   //sendc(zifuchuan);
	   led=~led;
	   while((*pd)!='\0')
        {
		  SBUF=*pd;
          sending=1;
          while(sending);
          pd++;
        }
		pd=&zifuchuan[0];
//	   while((*pd)!='\0')
//	   {
//	     SBUF=pd;
//		 pd++;
//		 while(!TI);
//	   }
//	   for(i=0;i<2;i++)
//	   {
//	     SBUF=shuzu[i];
//	     while(!TI);
//	   }
//	   if(i==2)i=0;		
	 }
 }
}
void uart(void) interrupt 4
{
  if(RI)
  {
    RI=0;
  }
  else
  {
    TI=0;
	sending=0;
  }
}

可以用stdio.h中的puts函数和printf函数,用puts前要先TI=1;

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值