j是数组下标,在主程序中需要接收数据前清零毕激枝。给你手敏个示例程序吧
if(Usart1_DataCnt >= 8) //接收到8个字节数据
{
Usart1_RXDataTimeCnt = 0
Usart1_DataCnt = 0
SMS_MobileAsked()
}
Usart1_DataCnt表示接收数据计数,相当于你的j。这段程序位于主程序循环体中。
流程是:(主程序中)发送拿棚数据―等待中断―发送成功产生中断―进入中断滚或清除TL,再次发送消备则―中断返回―等待中断―发送成功产生中断―进入中断清除TL,再次发送。。。。循环而已。当出现以下任一情况,中断响应受阻,也就是不会进入中断程序
1)同级或高级的中断服务正在进行;
2)当前轿腔渣的机器周期还不是当前指令的最后一个周期,指令执行完之前,不会响应任何中断请求;
3)正在执行RETI或对IE、IP进行读写 *** 作,至少要执圆键行一条其它指令才会响应;
在每个机器周期的s5p2期间,cpu对中断源依次采样,若遇到上述情况,会把中断请求锁存在各自的中断标志位中,等下一个机器周期再按顺序查询。也就是同级中断不会被打断,在这里TI已经被清零,这个中断退出后不会再响应了
还有点小问题,中断程序一开始应该执行一个if(RI)条件判断,要不然可能会读入垃闭悄圾数据
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)