单片机向串口调试助手发送数据 c语言

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-06-16
用单片机串口向电脑串口调试助手发送一个字符串,用C语言编程

uchar idata SystemBuf[10]; //用于接收
uchar Rx=0; //接收数据条数
uchar code AT[]="YES,IT IS";
void UART_init (void)
{
TMOD=0x20;//用定时器1
PCON=0x00; //波特率不加倍
SCON=0x50;//串行方式1
TH1=0xFD;//9600
TL1=0xFD;//
EA=1;//
ES=1;//
TR1=1;
}
void sendchar(uchar ch) //串口送一个字节
{
SBUF=ch;
while(TI==0);
TI=0;
}
void sendstring(uchar *p) //送字符串
{

while(*p)
{
sendchar(*p);
p++;
}
}
///////
void receive(void) interrupt 4 using 1 //中断
{

if(RI)
{

if(Rx<10) //这儿最多收10个字节
{
SystemBuf[Rx]=SBUF;
Rx++;
}

RI=0;
}
}
///
void main()
{
uchar i;
UART_init();
while(1)
{
if(SystemBuf=='S')
{
sendstring(AT);
for(i=0;i<10;i++) //接收清0
{
SystemBuf[i]=0;
}
Rx=0;
}
}
}
//////////如有小错误,自己调下,手打的,大小写可能不正常,这是标准程序,直接用,

// 单片机串行口发送/接收程序,每接收到字节即发送出去
// 和微机相接后键入的字符回显示在屏幕上
// 可用此程序测试
//
#include

#define XTAL 11059200 // CUP 晶振频率
#define baudrate 9600 // 通信波特率

void main(void)
{
unsigned char c;

TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1=(unsigned char)(256 - (XTAL / (32L * 12L * baudrate)));
TL1=(unsigned char)(256 - (XTAL / (32L * 12L * baudrate))); // 定时器0赋初值

SCON = 0x50;
PCON = 0x00;

TR1 = 1;
IE = 0x00; // 禁止任何中断

while(1)
{
while(RI == 0);
RI = 0;
c = SBUF; // 从缓冲区中把接收的字符放入c中

SBUF = c; // 要发送的字符放入缓冲区
while(TI == 0);
TI = 0;
}
}

uchar idata SystemBuf[10];  //用于接收
uchar Rx=0;                      //接收数据条数
uchar code AT[]="YES,IT IS";
void UART_init (void)
{
 TMOD=0x20;//用定时器1 
     PCON=0x00;  //波特率不加倍   
   SCON=0x50;//串行方式1
     TH1=0xFD;//9600
     TL1=0xFD;//    
     EA=1;//
     ES=1;//
     TR1=1;
  }
void sendchar(uchar ch)  //串口送一个字节
{
    SBUF=ch;
while(TI==0);
TI=0;
}
void sendstring(uchar *p)   //送字符串
{
  
  while(*p)
  {
  sendchar(*p);
  p++;
}
 }
///////
void receive(void) interrupt 4 using 1   //中断
{
  
 if(RI)
{
   
  if(Rx<10)                      //这儿最多收10个字节
  {
  SystemBuf[Rx]=SBUF;
  Rx++;
  }
  
  RI=0;
 }
 }
///
void main()
{
    uchar  i;
     UART_init();
while(1)
      {
          if(SystemBuf=='S')
              {
                 sendstring(AT);
                 for(i=0;i<10;i++)          //接收清0
                 {
                       SystemBuf[i]=0;
                 }
               Rx=0;
             }
     }
}