⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trasmit.c

📁 串口与单片机通信程序
💻 C
字号:
#define uchar unsigned char
#define uint  unsigned int
#include <reg52.h>
#include <string.h>
#include <stdio.h>
uchar ccc[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
uchar rec[10];
uchar err[6]={"error"};
uchar i,j,k;
sbit LED1=P2^1;
bit read_flag=0;

void init_serialcom(void)       //初始化串口
{
 P2=0x00;
 SCON=0x50;  //串口工作在方式1
 PCON=0x80;  //SMOD=1
 TMOD=0x20;  //定时器1工作在方式2
 TL1=0xFD;
 TH1=0xFD;   //波特率设置为19200bps
 EA=1;
 ES=1;       //串口中断使能
 TR1=1;      //开启定时器1
 i=0;
 j=0;
 k=0;
}

void send_char_com(uchar chh)    //向串口发送一字符
{
  SBUF=chh;
  while(TI==0);
  TI=0;
}

void send_string_com(uchar *str,uchar strlen)  //向串口发送字符串
{
  uint k=0;
  do
  {
    send_char_com(*(str+k));
    k++;
  } while(k<strlen);
}

void main()
{
 init_serialcom();
 while(1) ;
/* {
   if(read_flag)
   {
    while(k<10)                         //检验收到的字符串是否正确
    {
      if(!(rec[k]==ccc[k]))
      {
        LED1=1;
        send_string_com(err,6);
      }
      k++;
    }
    send_string_com(rec,10);
    read_flag=0;
    k=0;
   }
 }*/
}

void UART() interrupt 4 using 3                   //串口中断服务程序
{
   if(RI)
   {
    uchar ch;
    RI=0;
    ch=SBUF;
    if(i<10)
    {
     rec[i]=ch;
     i++;
     if(i==10)
     {
      i=0;
      //read_flag=1;
        while(k<10)                         //检验收到的字符串是否正确
       {
         if(!(rec[k]==ccc[k]))
          {
           LED1=1;
           //send_string_com(err,6);
          }
          k++;
       }
         send_string_com(rec,10);
         read_flag=0;
         k=0;
      }
    }
   }
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -