您的位置:控制工程论坛网论坛 » 教程与手册 » 单片机学习,C51单片机入门经典30课 第十三课

xilinxue

xilinxue   |   当前状态:在线

总积分:16186  2024年可用积分:0

注册时间: 2008-06-26

最后登录时间: 2020-03-22

空间 发短消息加为好友

单片机学习,C51单片机入门经典30课 第十三课

xilinxue  发表于 2009/2/5 13:52:14      543 查看 1 回复  [上一主题]  [下一主题]

手机阅读

第13课,用外中断方式读按键,控制灯的亮灭


这一颗,我们学习外中断的用法。也就是外部IO的中断INT0,和INT1。对应的引脚是P32和P33。在我们的电路图中,P32也就是接在K1的引脚。所以当我们按下P32接到地的时候,可以触发一个INT0中断,当然,必须预先初始化才会启动。


这种中断方式的按键,可以实现按键的立即响应。对于需要快速响应的场合是很有用的。外部IO中断还常用在用IO模拟通讯的场合,可以对数据的到来立即响应。


下面请看代码:


―――――――――――――――――
#define uchar unsigned char //定义一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include //包括一个52标准内核的头文件
sbit P10 = P1^0; //头文件中没有定义的IO就要自己来定义了
sbit P11 = P1^1;
sbit P12 = P1^2;
sbit P13 = P1^3;
sbit K1= P3^2;
bit ldelay=0; //长定时溢出标记,预置是0
uchar speed=10; //设置一个变量保存默认的跑马灯的移动速度
uchar speedlever=0; //保存当前的速度档次
char code dx516[3] _at_ 0x003b;//这是为了仿真设置的
//用外中断方式读按键K1,点亮一个LED
void main(void) // 主程序
{
IT0=1; //外中断跳变产生中断
EX0=1;
EA=1; //打开总中断
while(1) //主程序循环
{
}
}
//外中断0
int0() interrupt 0
{
P10=0; //在中断里点亮LED
}
――――――――――――――――――――――――――――――――――


这个程序里,按一下K1(P32)之后,就会触发INT0中断,在该中断里点亮LED灯。


请编译运行,并看结果。可以看到,在按下K1之后,LED1变处于亮着的状态。

1楼 0 0 回复
总共 , 当前 /