您的位置 首页 分销

51学习之外部中止

学习外部中断,因为不了解,直接粘了程序来执行。voidISR0_Key()interrupt0using1{Speak1=~Speak1;}voidISR1_Key(

学习外部中止,由于不了解,直接粘了程序来履行。

void ISR0_Key() interrupt 0 using 1
{
Speak1=~Speak1;
}
void ISR1_Key() interrupt 2 using 2
{
Speak2=~Speak2;
}
void Main()
{
EA=1; //大局中止开
EX0=1; //外部中止0开
EX1=1; //外部中止1开
IT0=1; //边缘触发,为0则为低电平触发
IT1=0; //边缘触发,为0则为低电平触发
while(1);
}
履行成果如同有点乱。不太了解,边缘和电平触发的差异。从网上看了,能了解,可实践履行是不相同的。
1、在第1次扫描到键盘按下时,成果如前面咱们说的相同,不论是低电平触发仍是下降沿触发成果都会触发事情,这儿触发时即指示灯点亮。然后程序持续运转……
2、当程序持续运转到第2次扫描键盘时按键还没铺开,成果就不相同了。
低电平触发:触发条件仍然为低电平,触发条件建立,那么履行事情,指示灯状况改动,此刻指示灯由亮变灭;
下降沿触发:触发条件仍然为低电平,下降沿触发条件不建立,那么不履行事情,指示灯保持本来的亮的状况。
呵呵,明日再研讨吧!
还有便是中止处理程序的一些问题。
中止服务程序经过运用 interrupt 关键字和中止号(0 到 31)来完成中止服务程序处理的是哪一个中止。
using 关键字用来指定中止服务程序运用的寄存器组。用法是:using 后跟一个0 到3 的数,对应着 4 组作业寄存器。一旦指定作业寄存器组,默许的作业寄存器组就不会被压栈,这将节约 32 个处理周期,由于入栈和出栈都需求 2 个处理周期。

今日只试了进入中止这种方法。明日试下查询的方法,应该和定时器是相同的。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/fenxiao/261118.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部