串口发送字符串
什么是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;