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

📄 232.c

📁 RS232通信程序
💻 C
字号:
#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int
void inttime(void)
{
    ES = 0; // 禁止串口中断
    SCON = 0x50; // 0101,0000 8 位数据位, 无奇偶校验
    T2CON = 0x34; // 0011,0100, 由T2作为波特率发生器
    RCAP2H = 0xFF; // 时钟12MHz, 1200 波特率RCAP2H = 0xFE; RCAP2L = 0xC8;
    RCAP2L = 0xD9;//9600波特率RCAP2H = 0xFF; RCAP2L = 0xD9;
    ES = 1; // 允许串口中断
}
//串口接收中断
   bit   tflag;
   uchar CT,count3,cs;
   uchar CN[8];
   uchar p;
void ComInINT(void) interrupt 4 using 3
{
    if(RI)
{
     RI = 0; //RI清零
     CT = SBUF;
     if (CT==0xFE)
   {     count3= 0;
        CN[count3]=CT;
       cs=CT;



   }
   else
         {
      count3++;
      CN[count3]=CT;
      if( count3<7)
      cs+=CT;
      else if(count3==7)
             p=CT;
    }

   if ((count3==7)&&(p==cs)) //如果串口接收的数据达到INBUF_LEN个,且校验没错,
     {
      tflag=1;       //就置位取数标志



    P0 =CN[6];   //用第七个字节点亮P0口上的LED
     }
   else
         tflag=0;

       }
}
void Comout(unsigned char OutData)
{
   SBUF = OutData; //输出字符
   while(!TI); //空语句判断字符是否发完
   TI = 0; //清TI
}
void TXD_dat( unsigned char *p, unsigned char num)//发送字符串
{
      uchar k= 0 ;
    do
     {
      Comout(*(p + k));
      k++;
     } while (k < num);
}
main()
{
     while(1)
         {
             if(tflag)       //如果发送标志为真
              {tflag=0;
               TXD_dat(CN,count3);//将收到的数据发送出去
               }
          }
}

⌨️ 快捷键说明

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