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

📄 eye121.c

📁 c语言和汇编语言混合编程实例详解.rar
💻 C
字号:
/*********************************************************************
*这是在AT89C2051单片机上运行的程序,文件名为eye121.c
*功能:AT89C2051作为分站与主站W77E58通讯,双方均有RS485接口 ,AT89C2051
*      用T1作波特率发生器, 波特率为9600,配套主站W77E58程序为EYE5.C
**********************************************************************/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
void timedelay(uint timess);

uchar n;
uchar  rbut[12];
uchar  tbut[12];
uchar kc1,kc2,flag;
sbit p13=P1^3;

void timedelay(uint timess)
{
 uint tj;
 for (tj=timess;tj>0;tj--){;}
}

sio0() interrupt 4  using 1
{
  if (RI==0) {
      if  (TI==0) {RI=0;TI=0;return;}
      SBUF=tbut[kc1];
      kc1++;
      if (kc1!=10) {RI=0;TI=0;return;}
      kc1=0;
      p13=0;       //恢复为接收方式
      SCON=0xf0;
      loo1:if (TI==0) goto loo1;
      RI=0;
      TI=0;
  }
  if (SM2==0) {
    rbut[kc2]=SBUF;
    kc2++;
    if (kc2!=10) {RI=0;TI=0;return;}
    rbut[1]=rbut[2]+rbut[3]+rbut[4];  //add check
    if (rbut[1]!=rbut[5]) {flag=1; }
    kc2=0;
    p13=1;         //准备发送
    SCON=0xe8;
    SBUF=0x01;/* 01*/
    TB8=0;
    SM2=0;
    RI=0;
    TI=0;
  }
  if (SBUF!=1) {RI=0; return;}/* 01*/
  SM2=0;
  RI=0;
}
void main()
{
  SP=0x70;
  timedelay(10000);
  kc1=0;
  kc2=0;
  EA=0;
  flag=0;
  tbut[0]=0x01;/* 01*/
  tbut[1]=0x03;
  tbut[2]=0x1; /*tbut[2]-tbut[7]放6个字节 01*/
  tbut[3]=0x2;
  tbut[4]=0x3;
  tbut[5]=0x4;
  tbut[6]=0x5;
  tbut[7]=0x6;
  tbut[8]=21;
  tbut[9]=0x0;
  TMOD=0x20;
  PCON=0x0;
  TL1=0xfd;
  TH1=0xfd;    //11.0592mhz,smod=0:1200==0xe8;9600==0xfd
  TR1=1;
  SCON=0xf0;
  ES=1;
  p13=0;       //准备接收
  EA=1;
  while(1);
}

⌨️ 快捷键说明

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