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

📄 c51setial_2.txt

📁 C51与PC机通迅程序。。之间需设置通迅协议然后还需奇偶校验。。
💻 TXT
字号:
#include <reg51.h>
#include <string.h>
#define INBUF_LEN 4 //数据长度
unsigned char  inbuf1[INBUF_LEN];
unsigned char checksum,count3;
bit  read_flag=0;
sbit  incept=P2^0;
sbit  send  =P2^1;
void init_serialcomm(void)
{
SCON = 0x50;
TMOD |=0x20;
PCON |=0x80;
TH1   = 0xFa;
IE    =0x90;
TR1   =1;
//TI=1;
}
//向串口发送一个字符
void send_char_com(unsigned char ch)
{
  SBUF=ch;
  while(TI==0);
  TI =0;
  send =1;
  incept=0;
}
//向串口发送一个字符串,strlen为该为该字符串长度
void send_string_com(unsigned char * str,unsigned int strlen)
{
unsigned int k=0;
do
{
  send_char_com(*(str+k));
  k++;
}while(k<strlen);
}
//串口接收中断函数
void serial() interrupt 4 using 3
{
if(RI)
{
  unsigned char ch;
  RI = 0;
  ch = SBUF;
  P0=ch;
  if(ch>127)
  {
    count3 = 0;
	 inbuf1[count3] =ch;
	 checksum = ch-128;
  }
  else{
  
    count3++;
	 inbuf1[count3]=ch;
	 checksum ^=ch;
	 if((count3==(INBUF_LEN-1))&&(!checksum))
	 {
	   read_flag=1;//如果串口接收的数据达到INBUF_LEN个且校验没错,就置位取数标志
	 }
  }
  send=0;
  incept=1;
}
}
main()
{
 init_serialcomm();
 while(1)
 {
    if(read_flag)
	 {
	    read_flag=0;
		send_string_com(inbuf1,INBUF_LEN);
	 }
 }
}

⌨️ 快捷键说明

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