51单片机中断概念 如何应用于实战 单片机 中断的问题

在学习51单片机 的中断系统,概念什么的都应该算是理解了。但是到编程还是无法进行。因为不知道这个在实战中应用到什么场合,还有就是程序有些思考不透,不知道是那方面的原因缺乏,希望前人指点迷津。请看具体事例程序:
利用外部中断来控制P0.0口的LED,当有外部中断时LED取反;
#include <reg52.h>
sbit LED = P0^0;
//为什么不定义P3.2口,外部中断INT0那。
void main()
{
P0 = 0xff; //单片机上电默认高电平,加这个语句什么作用 ?我看中断里都加这个语句了;
EA = 1;
IT0 = 1; //这个IT0 和EX0指令调换顺序是否可以?
EX0 = 1;
while(1);
}

void inter() interrupt 0
{
LED = !LED;
}

有些问题不知道怎么说,希望前人把学习这块的要点点明下,谢谢。
其实只是想借着这个小程序,了解下实际中的应用,这些突发事件是怎么来的,而且主函数中是通过那个语句产生的中断。判断出产生了中断。然后再去执行中断服务程序的。
void main()
{
P0 = 0xff;
EA = 1;
IT0 = 1;
EX0 = 1;
while(1);
}

sbit LED = P0^0;
//为什么不定义P3.2口,外部中断INT0那。

int0是固定在P3.2口的 不需要定义~

P0 = 0xff; //单片机上电默认高电平,加这个语句什么作用 ?我看中断里都加这个语句了;

这个可以不加 不过加上更加直观

IT0 = 1; //这个IT0 和EX0指令调换顺序是否可以?

可以的 没什么区别

中断是单片机的重要部分 要理解就要好好看特殊寄存器的功能 还有这些功能的关系图(就是那些开关图)

interrupt 0表示了实在int0的时候产生中断,在你的图上就是按下按钮 产生一个低电平 从而出发中断

IT0 = 1;
EX0 = 1
就表示了要使用中断
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-09-11
我就说说应用到什么场合吧:

主要是用在检测突发事件的发生.

就是说有些事情发生了,你要立即处理,但这个事件你不知什么时侯发生,你又不能老是查询它.这时就要用到中断了.

例如:电视机里的单片机,它接收红外遥控器发来的信息,就是接到中断输入的.
第2个回答  2009-09-11
sbit LED = P0^0;
//为什么不定义P3.2口,外部中断INT0那。
答:只需要定义程序中使用的位,INT0不用定义。

P0 = 0xff;
//单片机上电默认高电平,加这个语句什么作用 ?我看中断里都加这个语句了;
答:是多余的语句,不用也可,用了呢,更使人放心。

EA = 1;
IT0 = 1; //这个IT0 和EX0指令调换顺序是否可以?
答:可以,把EA=1放在后面更合理。
第3个回答  2009-09-11
中断其实很简单,中断就是为了处里一些紧急事件或突发事件而应用。

EA=1;EX0=1;这两句说明你打开了总中断和外部中断0,那么只要P3.2口有负跳变信号(IT0=1)过来则引发中断,不必定义P3.2口,因为这是硬件决定的。
P0=0xff;这个语句要不要无所谓,一般在主程序里开始时初始化所有IO口为高。
IT0 和EX0指令可以调换顺序。
第4个回答  2009-09-15
S1一旦被按下就相当个int0输入地电平,就换打断main函数进入中断服务程序。 IT0和 EX0他们的顺序可以调换。PO=0xff这条指令可以去掉,但是你的PO口要做输出的话必须加上拉电阻。我觉得你这样接的话,led会一直亮。
相似回答