找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5268|回复: 4
打印 上一主题 下一主题
收起左侧

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 都一样的情况



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:302494 发表于 2018-6-29 22:14 | 只看该作者
在按下外部中断上的按键时LED灯闪了一下,继电器没反应,放开按键时也LED灯也闪了一下。但是不管IT0 = 1还是 IT0 = 0 都一样的情况
回复

使用道具 举报

板凳
ID:302494 发表于 2018-6-30 16:42 | 只看该作者
问题自己找到了,但是没有解决办法了吧,15F104W这芯片不支持低电平触发中断,只能边缘触发。而以前我用的89C52RC是支持低电平触发中断的。我在资料里面已经找到答案了。该如何解决这问题?

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

89C52RC支持电平触发

89C52RC支持电平触发

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

15F104W不支持电平触发

15F104W不支持电平触发
回复

使用道具 举报

地板
ID:362379 发表于 2018-6-30 17:57 | 只看该作者
用边沿触发咯
回复

使用道具 举报

5#
ID:56665 发表于 2019-5-31 14:11 | 只看该作者
手册上说IT0被置1,下降沿中断,IT0=1; 对应开关接的情况,开关断开是外部中断脚高电平,开关接通才是低电平,从高到低组成下降沿。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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