首要,你要用软件容许中止,
即C言语中EA = 1; 容许总中止ES = 1;
//容许串口中止汇编中可用
SETB EA ;容许总中止
SETB ES ;容许串口中止
当单片机接纳到一帧数据后,RI会置1,向CPU恳求中止,若之前有中止容许,则发作了中止,进入中止效劳程序。
当然,单片机发送完一帧数据,TI也会置1,相同会发作中止!
通常咱们在发送数据时要关中止,由于通常你不必在发送时不必处理数据;
接纳数据时要开中止,以便你在中止效劳程序中将接纳到的数据进行存储并处理。
其他,多见的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;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)