13823761625

技术分享

用外中断方式读按键,控制灯的亮灭
发布时间:2025-05-19 08:53:00    浏览:27次

    这一颗,我们学习外中断的用法。也就是外部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变处于亮着的状态。
    作业:
    用中断方式的按键K1,控制一个LED灯的亮和灭两种状态
    提示:需要去抖操作,否则按键抖动会引起多种中断。







    免责声明: 本文章转自其它平台,并不代表本站观点及立场。若有侵权或异议,请联系我们删除。谢谢!

    Disclaimer: This article is reproduced from other platforms and does not represent the views or positions of this website. If there is any infringement or objection, please contact us to delete it. thank you!
    矽源特科技ChipSourceTek

版权所有 © 2017 深圳市矽源特科技有限公司All Rights Reserved 粤ICP备17060179号