这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 单片机串行口中止程序说明

共2条 1/1 1 跳转至

单片机串行口中止程序说明

工程师
2020-07-11 21:44:10     打赏

 首要,你要用软件容许中止,

  即C言语中EA = 1; 容许总中止ES = 1;

  //容许串口中止汇编中可用

  SETB EA ;容许总中止

  SETB ES ;容许串口中止

  当单片机接纳到一帧数据后,RI会置1,向CPU恳求中止,若之前有中止容许,则发作了中止,进入中止效劳程序。

  当然,单片机发送完一帧数据,TI也会置1,相同会发作中止!

  通常咱们在发送数据时要关中止,由于通常你不必在发送时不必处理数据;

  接纳数据时要开中止,以便你在中止效劳程序中将接纳到的数据进行存储并处理。

  单片机串行口中止程序说明

  抵偿:正本,不论你有没有容许中止,上位机(此刻即给单片机发送信息的机器)只需给单片机发送数据,单片机就会主动接纳数据,并把它放在数据缓冲器SBUF中,假定你之前有容许串行口中止,RI就会置1,向单片机CPU恳求中止,并进入中止效劳程序,做完中止函数后就会主动回来断点。假定你没有容许中止,便不会发作串行中止。正本,其他中止都是某个I/O口电平改动发作。这仅仅外部中止发作条件,不过,你之前也需求用软件容许外部中止。

  其他,多见的51系列单片机有5个中止源三种中止5:

  1、外部中止0和1;

  2、守时器/计数器溢出中止0和1;

  3、串行口中止。

  其他,STC51系列还有守时器/计数器T2中止,A/D改换中止,PWM中止,串行中止2等等。你还有啥不了解的能够自个多翻一翻书,学到后边去了你就了解了。

  中止效劳程序中,那条 RI=0;是不行少的,这是用软件清零RI,预备再次承受一帧数据发作中止,假定你没有这条句子,就会进入死循环,出不来了。

  void serial() interrupt 4

  { P1=SBUF;

  RI=0;

  }




工程师
2020-07-12 21:05:47     打赏
2楼

原来是这样写的呀


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]