89C52单片机串行通信编程两则

电子常识

2585人已加入

描述

  1.当89C52串行口按工作方式1进行串行数据通信时,假定波特率为1 200b/s,以中断方式传送数据,请编写全双工通信程序。

  #include 《at89x52.h》

  unsigned char data txbuf;

  unsigned char data rebuf;

  void main()

  {

  unsigned char temp;

  SCON=0x50;

  TMOD=0x20;

  TH1=0xE8;

  TL1=0xE8;

  TR1=1;

  ES=1;

  EA=1;

  }

  void comre()

  {

  rebuf=SBUF;

  }

  void comtx()

  {

  SBUF=txbuf;

  }

  void serial_server() interrupt 4

  {

  if(TI)

  TI=0;

  else

  {

  RI=0;

  comre();

  }

  }

  2.当89C52串行口按工作方式3进行串行数据通信时,假定波特率为1 200b/s,第9位数据作奇偶校验位,以中断方式传送数据,请编写通信程序。

  #include 《at89x52.h》

  unsigned char data txbuf;

  unsigned char data rebuf;

  void main()

  {

  unsigned char temp;

  SCON=0xd0;

  TMOD=0x20;

  TH1=0xE8;

  TL1=0xE8;

  TR1=1;

  ES=1;

  EA=1;

  }

  void comre()

  {

  ACC=SBUF;

  if(RB8==P)

  rebuf=ACC;

  else

  error();

  }

  void comtx()

  {

  ACC=txbuf;

  SBUF=ACC;

  TB8=P;

  }

  void serial_server() interrupt 4

  {

  if(TI)

  TI=0;

  else

  {

  RI=0;

  comre();

  }

  }

  void error()

  {

  F0=1;

  }

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分