UART0中断服务程序.请问在主程序中判断标志位,然后还要不要写输出啊?怎么写?
时间:2011-08-08
来源:互联网
//UART0中断服务程序. 接收/发送字符
void UART0_ISR(void) interrupt 4 using 1
{
if(RI0) //中断标志 RI0=1 数据完整接收
{
RI0 = 0; //软件清零
RecBuf[Rindex] = SBUF0; //存入数组,供发送
Rindex++;
if(Rindex>=60)
Rindex = 0;
TH0=0xd8; //5ms的中断
TR0=1;
}
else
{
TI0=0;
for(i=0;i=SendLen;i++)
{
SBUF0=SedBuf[i];
while(!TI0);
}
}
}
void UART0_ISR(void) interrupt 4 using 1
{
if(RI0) //中断标志 RI0=1 数据完整接收
{
RI0 = 0; //软件清零
RecBuf[Rindex] = SBUF0; //存入数组,供发送
Rindex++;
if(Rindex>=60)
Rindex = 0;
TH0=0xd8; //5ms的中断
TR0=1;
}
else
{
TI0=0;
for(i=0;i=SendLen;i++)
{
SBUF0=SedBuf[i];
while(!TI0);
}
}
}
作者: rxngzq 发布时间: 2011-08-08
写输出是什么意思?
可以在你的void UART0_ISR(void) 里边 同时实现 接收/发送的中断处理,
而你使用 if else 这样结构就不怎么正确了。
可以
void UART0_ISR(void)
{
关闭中断; // 别搞错了,最好保存下当前的中断使能状态
读取中断事件;
没有中断? 退出
swith(中断ID)
{
case RX int:
break;
case TX int:
break;
}
开启中断; // 不要开多了,也不要开少了,最好利用之前保存的中断使能的情况
}
可以在你的void UART0_ISR(void) 里边 同时实现 接收/发送的中断处理,
而你使用 if else 这样结构就不怎么正确了。
可以
void UART0_ISR(void)
{
关闭中断; // 别搞错了,最好保存下当前的中断使能状态
读取中断事件;
没有中断? 退出
swith(中断ID)
{
case RX int:
break;
case TX int:
break;
}
开启中断; // 不要开多了,也不要开少了,最好利用之前保存的中断使能的情况
}
作者: pro_or_gram 发布时间: 2011-08-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28