接着,我们来设计按钮处理。在软件处理上,按钮与刀开关差不多。按钮按下后会自动弹起,开关则不会。按钮的元件名称是BUTTON,它的一端接单片机的引脚,另一端接地。单片机的引脚会有3种情况,接高电平、开路(高阻)和接低电平。一般把接高电平和开路(高阻)一样看待,所以只有两种情况了,即高电平和低电平。当按钮接单片机引脚时,开路就是高电平,短路(按下)就是接地了,即低电平。因此,单片机判断按钮是否按下,就看接按钮的引脚是否是低电平。在元件窗口添加按钮BUTTON,如图5-6所示。
图5-6 按钮选择
在单片机P3.2和P3.3引脚分别接一个按钮,按钮一端接地,如图5-7所示。
为什么要接在P3.2、P3.3引脚上呢?这是因为,这两个引脚是单片机的外部中断引脚,只有这两个引脚才能引起外部中断,在下面程序中会用到。关于中断的处理比较复杂,我们可以先套用基本的格式,而不追究它的原理。
什么是中断处理呢?打个比方,我们常规的工作是看书。在看书的时候来了电话,打断了看书,这就是中断。那么,接电话就是中断处理。接完电话继续看书,就相当于程序中的返回主程序。这里的主程序就是看书,中断处理程序就是接电话。
89C52单片机共有5个中断源,2个外部中断,2个定时/计数中断,和一个串口中断(用于通信)。外部中断的引脚是P3.2、P3.3,定时/计数的引脚是P3.4、P3.5,串口通信中断引脚是P3.6、P3.7。
图5-7 按钮处理电路
为了实现中断控制,需要设置一些中断控制寄存器。通过这些寄存器来控制单片机的行为,这些设置都是通过程序实现的。外部中断至少需要用到两种寄存器:定时/外部中断控制寄存器TCON,和中断允许控制寄存器IE。
先看定时/外部中断控制寄存器TCON:
1)高4位用于定时器控制(D4~D7);
2)底4位用于外部中断控制(D0~D3);
3)IT0:外部中断0类控制,通过软件设置或清除;
4)IE0:外部边沿触发中断0类控制,由片内硬件自动清零;
5)IT1:外部中断1类控制,性质同IT0;(www.xing528.com)
6)IE1:外部边沿触发中断1类控制,性质同IE0。
再看中断允许控制器IE:
1)EX0:外部中断0控制位(EX0=1允许中断,EX0=0禁止中断);
2)ET0:定时/计数T0中断控制位(ET0=1允许,ET0=0禁止);
3)EX1,ET1:外部中断1和定时/计数T1中断控制位,性质同EX0、ET0。
4)ES:串口中断控制位,ES=1允许,ES=0禁止;
5)EA:中断总控制位,EA=1开发,EA=0禁止;
最后就是中断处理程序的写法了,我们看一下定义,见表5-3。
表5-3 中断处理编号
■ 定义中断服务函数
■ 函数类型 函数名(形式参数)[interrupt n][using m]
■ n:中断编号m:寄存器组号
■ 例:void intersvr0(void)interrupt 0 using 1
看起来确实有点复杂,一下子看不懂。没有关系,等看了实例以后,慢慢就理解了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。