标题: STC15F104W单片机外部中断怎么不工作呢?程序如下,求大神帮我看看 [打印本页]

作者: cfancfan    时间: 2018-6-29 21:38
标题: STC15F104W单片机外部中断怎么不工作呢?程序如下,求大神帮我看看
本帖最后由 cfancfan 于 2018-6-30 09:49 编辑

#include <STC15F2K60S2.H>
#define uchar unsigned char

sbit Inductorium = P3^4;         //土壤湿度感应器
sbit WaterPump = P3^0;                 //接水泵控制继电器
sbit LED = P3^5;                        //水泵工作指示灯
uchar temp = 0x00;
uchar cnt = 0;
void main()
{
        WaterPump = 1;
        Inductorium = 1;
        LED = 1;
        TMOD = 0x01;
        TH0 = (65536-10000)/255;
        TL0 = (65536-10000)%255;        //设定内部晶振为12MHz刚好0.01秒

        EX0 = 1;                                        //打开外部中断0
        ET0 = 1;                                        //打开定时器中断0

        IT0 = 0;                                        //外部中断0采用低电平触发
        TR0 = 1;                                        //定时器开始计时
        EA = 1;                                                //中断总开关
        while(1)
        {
                if(temp == 0x00)
                {
                        LED = 1;
                        WaterPump = 1;
                }
                else if(temp == 0xFF)
                {
                        LED = 0;
                        WaterPump = 0;
                }
                else
                {
                }
        }
}

void intautorun() interrupt 1 //定时器中断函数
{
        TH0 = (65536-10000)/255;
        TL0 = (65536-10000)%255;
        cnt ++;
        if(cnt >= 5)
        {
                cnt = 0;
                temp = (temp << 1)|Inductorium;
        }
}
void interrupt_INT0() interrupt 0 //外部中断函数
{
        LED = 0;
        WaterPump = 0;
}
外部中断采用2引脚按键连接GND,也在P3^2引脚上加过上拉电阻试过,还是没用。
在按下外部中断上的按键时LED灯闪了一下,继电器没反应,放开按键时也LED灯也闪了一下。但是不管IT0 = 1还是 IT0 = 0 都一样的情况




作者: cfancfan    时间: 2018-6-29 22:14
在按下外部中断上的按键时LED灯闪了一下,继电器没反应,放开按键时也LED灯也闪了一下。但是不管IT0 = 1还是 IT0 = 0 都一样的情况
作者: cfancfan    时间: 2018-6-30 16:42
问题自己找到了,但是没有解决办法了吧,15F104W这芯片不支持低电平触发中断,只能边缘触发。而以前我用的89C52RC是支持低电平触发中断的。我在资料里面已经找到答案了。该如何解决这问题?

89C52RC.png (10.17 KB, 下载次数: 56)

89C52RC支持电平触发

89C52RC支持电平触发

15F104W.png (86.2 KB, 下载次数: 64)

15F104W不支持电平触发

15F104W不支持电平触发

作者: lxd411468700    时间: 2018-6-30 17:57
用边沿触发咯
作者: m182892    时间: 2019-5-31 14:11
手册上说IT0被置1,下降沿中断,IT0=1; 对应开关接的情况,开关断开是外部中断脚高电平,开关接通才是低电平,从高到低组成下降沿。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1