找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3937|回复: 5
收起左侧

C51 简单的程序求教,为何会执行两次中断?

[复制链接]
ID:143694 发表于 2018-10-27 17:27 | 显示全部楼层 |阅读模式
以下程序的目的是遥控门锁程序,就是我按下按键触发下降沿中断后 执行电动机“正转1秒”,“延时1秒”,“反转1秒”程序如下:
可实验发现,每次中断都执行两个回合以上动作,甚至有时3个回合。
STC15F408as 型单片机。

#include "STC15W4K.H"            // 包含 "STC15W4K.H"寄存器定义头文件
sbit        P1_4=P1^4;          //指示灯
sbit djoff = P1^0;                //电机关信号
sbit djon = P1^1;                //电机开信号
void delay1S(void)                  // 22.1184
{
   unsigned char i,j,k;
   for(i=85;i>0;i--)     //注意后面没分号
   for(j=40;j>0;j--)    //注意后面没分号
   for(k=255;k>0;k--);    //注意后面有分号
}

void main()
{       
//        INT0 = 1;
        IT0=1;                       // 设置为下降沿触发
        EX0=1;                 // 开外部中断0
        EA=1;                                   // 开总中断       
        P1_4 = 0;                                  
        while(1)
        {
                if(P1_4 == 1)
                {
                        djoff = 0;   //电机正转
                        delay1S();           //延时一秒  
                        djoff = 1;   //电机正转停
                        delay1S();           //延时一秒
                        djon = 0;    //电机反转
                        delay1S();           //延时一秒
                        djon = 1;    //电机反转停
                        delay1S();
                        delay1S();
                        delay1S();
                        P1_4 = 0;  //指示灯
                        EA=1;            //开总中断
                }
        }
}
void EXT0(void) interrupt 0
{
        EA=0;      //关总中断
        P1_4 = 1;  //进入中断指示灯               
}

回复

使用道具 举报

ID:164602 发表于 2018-10-28 07:29 | 显示全部楼层
按键要消抖!!!!!!!!!!
外部中断程序执行时间长,则可以不用消抖,或消抖时间不长。
看我的:
void Int0(void)        interrupt 0//外部中断0的中断服务函数
{
        Delay10ms(25);
        IE0=0;
(中断执行的内容)
        Delay10ms(25);
        IE0=0;
}
回复

使用道具 举报

ID:155507 发表于 2018-10-28 13:53 | 显示全部楼层
硬件消抖试一下呢?  用104电容去抖动,相关电路很多,试一下

评分

参与人数 1黑币 +8 收起 理由
张小帅1126 + 8 赞一个!

查看全部评分

回复

使用道具 举报

ID:235438 发表于 2018-10-28 19:19 | 显示全部楼层
这种动作没必要非用中断吧,直接判断不是更好,还可以自由增加软件延时.

评分

参与人数 1黑币 +8 收起 理由
张小帅1126 + 8 很给力!

查看全部评分

回复

使用道具 举报

ID:123289 发表于 2018-10-29 09:25 | 显示全部楼层
按了一次是你的认知,实际是多少次你说了不算,取决于按钮金属片实际接触、弹开的次数!

评分

参与人数 1黑币 +8 收起 理由
张小帅1126 + 8 很给力!

查看全部评分

回复

使用道具 举报

ID:143694 发表于 2018-10-30 11:20 | 显示全部楼层
谢谢大家!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表