新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)與pc串口通信-----下位機(jī)程序

單片機(jī)與pc串口通信-----下位機(jī)程序

作者: 時(shí)間:2016-08-03 來(lái)源:網(wǎng)絡(luò) 收藏

  //MCS-51通過(guò)中斷方式接收pc機(jī)發(fā)來(lái)的字符,并回送給主機(jī)

本文引用地址:http://m.butianyuan.cn/article/201608/294951.htm

  #include

  #include

  #define uchar unsigned char

  uchar xdata rt_buf[32];

  uchar r_in,t_out;

  bit r_full,t_empty;

  serial() interrupt 4 //中斷程序

  {

  if(RI && r_full)

  {

  rt_buf[r_in]=SBUF;

  RI=0;

  if(rt_buf[r_in]==0x24)

  {

  r_full=1;

  SBUF=rt_buf[t_out];

  t_empty=0;

  }

  /*接收字符為$,則接收結(jié)束;設(shè)置接收結(jié)束標(biāo)志,開(kāi)始發(fā)送*/

  r_in=++r_in;

  }

  else if(TI && t_empty)

  {

  TI=0;

  t_out=++t_out;

  SBUF=rt_buf[t_out];

  if(t_out==r_in)

  t_empty=1;

  /*t_out=r_in則發(fā)送完,設(shè)發(fā)送完標(biāo)志t_empty*/

  }

  }

  main()

  {

  /*設(shè)置定時(shí)器T1工作于方式2,計(jì)數(shù)常數(shù)為0xfdH */

  TMOD=0x20; //TMOD:GATE C/T1 M1 M0 GATE C/T0 M1 M0 0010 0000 以TR啟動(dòng)定時(shí)

  TL1=0xfd; //定時(shí)3us

  TH1=0xfd;

  SCON=0x50; //在11.0592MHz下,設(shè)置串行口波特率為9600,方式1,允許接收 01010000

  PCON=0xD0; // 11010000 波特率加倍

  IE=0x10; //00010000 允許串行中斷ES=1

  TR1=1;

  EA=1;

  r_in=t_out=0;

  t_empty =1;

  r_full=0;

  for(;;)

  {

  printf ("%s","serial communicationn"); //添加自己的程序處理代碼

  }

  }

  附上: proteus下和pc機(jī)的連接圖

  



關(guān)鍵詞: 單片機(jī) 串口

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉