搜索
bottom↓
回复: 4

正在读 马潮 老师的AVR,遇到一些问题想在请教各位

[复制链接]

出0入0汤圆

发表于 2014-2-1 19:35:26 | 显示全部楼层 |阅读模式
中断那一章有点疑问

首先 中断的时候要保护现场这个现场我想象不出来是什么除了 SREG 还需要保存其他东西了吗?


其次 关于中断还有一个问题

程序运行到中断向量函数中的时候(例如串口中断) 全局变量 I 自动被清0,此时我重新打开为1 然后在此中断函数中等待串口再次中断? 可以吗?

举个例子



Ustar_RS_chose()
{
uchar a;

chose=0;
ack=1;

for(a=0;a<8;a++)
{

while(ack)
{
send_byte(date[a]);
RX_complete=1;
SEI;
while(RX_complete);
}


}

}




#pragma interrupt_handler  RX_over:12  ///接受中断



void RX_over()
{

RX_complete=0; //   (为全局变量)

if(chose)                   //   (chose为全局变量)
Ustar_RS_chose();
else
ack=UDR;  // ack为全局变量)



}


这函数在中断第一次后进入发送函数开始发送数据,但在向量子函数中 等待主机回答开了中断,请问能否实现? 这样在中断向量函数中调用的子函数 算中断函数吗? 有点搞不懂 求指点

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2014-2-2 00:15:53 | 显示全部楼层
楼主没接触过汇编
进入中断前除了要保存当前程序指针外,还要保存临时寄存器里的值,这些内容都要入栈
退出中断时,恢复临时寄存器值,以及程序指针,这叫出栈
如果中断嵌套过多,会导致栈的溢出,程序就会出现运行错误!
在程序设计中,是要避免在同一中断中再次进出中断的,无限制的嵌套必然导致程序运行混乱

出0入0汤圆

发表于 2014-2-3 09:57:02 | 显示全部楼层
STM出来基本上就放弃AVR了.......

出0入0汤圆

发表于 2014-2-8 13:22:54 来自手机 | 显示全部楼层
sync765 发表于 2014-2-2 00:15
楼主没接触过汇编
进入中断前除了要保存当前程序指针外,还要保存临时寄存器里的值,这些内容都要入栈
退出 ...

51就没怎么接触                      c语言中由编译器自动编译  不需要人工加上保护现场了用到的变量自动保护了

出0入0汤圆

发表于 2014-2-8 13:23:33 来自手机 | 显示全部楼层
prince2010 发表于 2014-2-3 09:57
STM出来基本上就放弃AVR了.......

还有用avr开发产品的呢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 12:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表