使用C语言编程实现单片机与上位机串行通信,其上位机发送数据给单片机,

2024年12月03日 00:42
有3个网友回答
网友(1):

 #include "reg52.h"
 #define  uchar unsigned char
 #define  LLONG 30
 
 //char code table[]="Hello!";
 uchar code table[]={'F','i','r','s','t','C','h','a','r',':',0x0d,0x0a,'W','W','W','.','H','E','B','T','U','.','E','D','U','.','C','N',0x0d,0x0a};
 uchar Flag,FirstChar=0,UARTChar[10]={0};
 
 void uart() interrupt 4
 {
  ES=0;          //---- 中断暂停 ----
  RI=0;          //---- 清标志位 ----
  FirstChar=SBUF;
  Flag=1;
  ES=1;          //---- 中断开启 ----
 }
 
 void main()
 {    
  char i=0;
  TH1=0xFD;
  TL1=0xFD;
  TMOD=0x20;//T1在定时器方式
  TCON=0x40;//TR1=1
  PCON=0x00;//SMOD为0
  SCON=0x50;//串行方式1 REN=1
  IP=0x00;
  IE=0x90;
  
  while(1)
  {  
   if(Flag==1)
   {
    ES=0;          //---- 中断暂停 ----
    Flag=0;        //---- 清标志位 ----
    for(i=0;i<10;i++)
    {
     SBUF=table[i];
     while(!TI);
     TI=0;
    }
    SBUF=FirstChar;
    while(!TI);    //---- 通讯等待 ----
    TI=0;          //---- 清标志位 ----
    for(i=10;i    {
     SBUF=table[i];
     while(!TI);
     TI=0;
    }
    ES=1;          //---- 中断开启 ----
   }
  }
 }

网友(2):

你是哪款的单片机51,ATMEL,ST,还是TI的,需要程序就出单片机相应官网里去找,会有很多例程的,51的话很多论坛里都有资源,找找就有了

网友(3):

51的是最基础的了,有什么不明白的?可以问我。