10.4 串行中断源的C51程序设计
51系列单片机的片内串口接口提供了发送中断源TI和接收中断源RI。串行接口中断请求的请求号为4。这里举例讲解定时中断的程序设计。假设使用串行口的发送中断源TI来发送数据,每发送一个数据都要软件对TI清零。如果采用C51语言进行程序设计,其程序示例如下。
include<reg51.h>//头文件
void SISR(void)interrupt 4//串行中断服务例程
{
TI=0;
}
void main(void)//主函数
{
int i;
SCON=0x00;//初始化串行口模式0
ES=1;//开启串行中断
EA=1;//开总中断
i=0x65;//初始化数据
SBUF=i;//将数据送到SBUF,启动串行输出
while(1)//主循环
{
}
}
该程序可以在KeilµVision3集成开发环境中执行。在该程序中,定义了串行中断服务程序SISR,用中断号4来标识。在main主函数中,首先初始化串行口为模式0,接着开启串行中断并打开总中断。然后初始化数据,并将数据送到SBUF,启动串行输出。在主循环中不进行任何操作,CPU等待数据发送完毕后,将置TI=1,进入中断服务例程。在中断服务例程中将TI清零,准备下一次数据发送。