STC15F104E使用了外部中断,发现中断工作有时会失效,必需重新上电才能恢复,使用中不时会失效。

 1 /*******************************************************************
2 INT0 or 1中断函数
3 *******************************************************************/
4 #if(VER==1)
5 void exint1() interrupt 2 //INT1,interrupt 2 (location at0013H)
6 #endif
7 #if(VER==2)
8 void exint0() interrupt 0 //INT0,interrupt 0 (location at0003H)
9 #endif
10 {//static uchar CountTemp=0; //
11 // static bit flag_Hand=0; //标记用于手动开关在开的状态下灯灭,要点亮需再开关一次手动开关。
12 u8_CntTim001=0;
13 if(RelayCtl)
14 // if(DetInput) //read INT1(P3.3)port status,1:上升沿中断 0:下降沿中断
15 { RelayCtl=0; //关灯
16 flag_RelayState=RelayCtl; //存储继电器状态
17
18 flag_countdown_enable=0; //倒计时使能标志,0除能,1使能
19 flag_SetCouDownIndict=0; //倒计时开始指示,0指示关,1指示开,自动清0.【灭一下指示】
20 flag_HandCouDownIndict=1; //机械手动开关倒计时使能标志,0除能,1使能【为1时,HandSwitch_Cnt开始增1计数,为0时,清0】
21 }
22 else
23 { if((HandSwitch_Cnt<=2)&&flag_HandCouDownIndict) //0.25x4=1.0s 如果关灯时间在1.0s内又重新开灯时。//2020/12/03 改0.25x2=0.5s
24 { flag_countdown_enable=1; //倒计时使能标志,0除能,1使能【使能即进入倒计时】
25 flag_SetCouDownIndict=1; //自动关指示标置,0指示关,1指示开,自动清0. 【灭一下指示】
26 u8_CntTim101=0;
27 u8_CntTim102=0; //两计数提前清0
28 RelayCtl=1;
29 flag_RelayState=1; //存储继电器状态
30 DelayTimeSet(BUF_IAP2_ADDRESS_0); //设置延时关时间
31 }
32 else
33 { RelayCtl=1; //开灯
34 flag_RelayState=RelayCtl; //存储继电器状态
35 if(flag_SetCouDownType) //设置自动关类型标置==IapReadByte(IAP2_ADDRESS+1) //20190212 1使能,0除能
36 { flag_countdown_enable=1; //倒计时使能标志,0除能,1使能【使能即进入倒计时】
37 flag_SetCouDownIndict=0; //自动关指示标置,0指示关,1指示开,自动清0. 【灭一下指示】
38 u8_CntTim101=0;
39 u8_CntTim102=0; //两计数提前清0
40 RelayCtl=1;
41 flag_RelayState=1; //存储继电器状态
42 DelayTimeSet(BUF_IAP2_ADDRESS_0); //设置延时关时间
43 }
44 }
45 flag_HandCouDownIndict=0; //机械手动开关倒计时使能标志,0除能,1使能 【为1时,HandSwitch_Cnt开始增1计数,为0时,清0】
46 }
47 }

经查旧版Spec内有说明:A版本的外部中断有时会异常,建议不要使用,C版本的外部中断可正常使用。

最好使用新版本的芯片,如:STC15F104W、STC15W104,如不知芯片有Bug,使用过程中发现异常很让人抓狂。

STC15F104E的外部中断工作异常的更多相关文章

  1. linux中断与异常

    看了<深入理解linux内核>的中断与异常,简单总结了下,如果有错误,望指正! 一 什么是中断和异常 异常又叫同步中断,是当指令执行时由cpu控制单元产生的,之所以称之为异常,是因为只有在 ...

  2. ASM:《X86汇编语言-从实模式到保护模式》第17章:保护模式下中断和异常的处理与抢占式多任务

    ★PART1:中断和异常概述 1. 中断(Interrupt) 中断包括硬件中断和软中断.硬件中断是由外围设备发出的中断信号引发的,以请求处理器提供服务.当I/O接口发出中断请求的时候,会被像8259 ...

  3. STM32之外部中断控制

    一.STM32外部中断 1.STM32外部中断结构图 如上图所示:主要包括四个环节,GPIO.AFIO.EXTI.NVIC.以STM32F103VE(100脚)为例说明硬件模块的数量: GPIO:   ...

  4. Linux内核中断和异常分析(上)

    中断,通常被定义为一个事件.打个比方,你烧热水,水沸腾了,这时候你要去关掉烧热水的电磁炉,然后再去办之前手中停不下来的事情.那么热水沸腾就是打断你正常工作的一个信号机制.当然,还有其它的情况,我们以后 ...

  5. Win32下的中断和异常

    本文是Matt Pietrek在1997年月10月的MSJ杂志Under The Hood专栏上发表的文章.中断和异常在DOS时代是整个系统的灵魂,但Windows已将其隐藏到了系统深处.Matt P ...

  6. 《Tsinghua os mooc》第1~4讲 启动、中断、异常和系统调用

    资源 OS2018Spring课程资料首页 uCore OS在线实验指导书 ucore实验基准源代码 MOOC OS习题集 OS课堂练习 Piazza问答平台 暂时无法注册 疑问 为什么用户态和内核态 ...

  7. CC2530外部中断

    一.中断基础概念  内核与外设之间的主要交互方式有两种:轮询和中断.中断系统使得内核具备了应对突发事件的能力. 在执行CPU当前程序时,由于系统中出现了某种急需处理的情况,CPU暂停正在执行的程序,转 ...

  8. x86架构中的外部中断结构-Part 1:中断控制器的演化

    本文主要讲解了x86体系架构从外部设备接受中断的过程,本文是系列文章的第一部分,试图回答以下问题: 什么是PIC以及它的用途是什么? 什么是APIC以及它的用途是什么?LAPIC和I/O APIC的目 ...

  9. STM32f103之外部中断

    一.背景 有个需求,IO口检测上升沿,然后做相应的动作.在此记录STM32F103的外部中断结构及配置方法, 以备下次快速上手使用. 有许多不太明白,又是老司机(:-D)帮忙,真的是站在别人的肩膀上会 ...

  10. 转别人的 STM32外部中断使用注意事项

    前言:这些问题都是我之前在工作中遇到的,后来觉得需要总结,自己记忆不好,所以在这个给自己打个mark. 一:触发方式 STM32 的外部中断是通过边沿来触发的,不支持电平触发: 二:外部中断分组 ST ...

随机推荐

  1. 《JavaScript 模式》读书笔记(6)— 代码复用模式1

    我们有开始进入新篇章了.这篇内容主要讲代码复用模式,实际上代码复用,就是继承啊,原型啊,构造函数啊等等这一类的内容.对于前端进阶来说,是很重要的基础知识.这一篇内容会对原型. 继承有很深入的讲解.我也 ...

  2. Mysql的个人习惯

    一定要有主键 一般使用的innodb引擎中会根据主健创建聚簇索引,这种方式会使得数据排列的更连续,减少随机IO 关于数据长度 考虑数据范围,够用的前提下,数据长度是越简单越好,数据类型是越小越好. 尽 ...

  3. 在腾讯云 EMR 上使用 GooseFS 加速大数据计算服务

    GooseFS 是腾讯云对象存储团队最新推出的高性能.高可用以及可弹性伸缩的分布式缓存系统,依靠对象存储(Cloud Object Storage,COS)作为数据湖存储底座的成本优势,为数据湖生态中 ...

  4. 小程序,用户授权手机号,node需要检验和解析

    1. 第一步需要先在小程序api文档中下载对应语言的解密算法,解压之后就可以看到 https://developers.weixin.qq.com/miniprogram/dev/framework/ ...

  5. NoSQL 述评

    作为主库的 nosql 只有 CockroachDB.TiKV 以及 MongoDB(从4.0后事务似乎可用了),CockrouchDB 已经收费,另外 YugabyteDB 也可选,但大家的反馈都不 ...

  6. Netty 中ChannelOption的含义以及使用的场景Netty 中ChannelOption的含义以及使用的场景

    一.概述 最近在写一个分布式服务框架,打算用netty框架做底层网络通信,关于netty的学习可以参考如下资料: http://blog.csdn.net/column/details/enjoyne ...

  7. Qt视频监控系统一个诡异问题的解决思路(做梦都想不到)

    一.前言 由于Qt版本众多,几百个版本之间存在不兼容的情况,为此如果要兼容很多版本,没有取巧的办法和特殊的捷径,必须自己亲自安装各个版本编译运行并测试,大问题一般不会有,除非缺少模块,小问题还是不断有 ...

  8. MySql中的driverClassName、url

    在Java桌面开发或者Java Web开发(基于SSM框架)配置MySQL数据源时,driverClassName属性如果填错了,会导致了这一系列错误.归结其原因就是 mysql-connector- ...

  9. Web网页端IM产品RainbowChat-Web的v5.0版已发布

    一.关于RainbowChat-Web RainbowChat-Web是一套Web网页端IM系统,是RainbowChat的姊妹系统(RainbowChat是一套基于开源IM聊天框架 MobileIM ...

  10. 即时通讯技术文集(第11期):IM通信格式的选型及Protobuf专题 [共16篇]

    为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第11 期. [- 1 -] 如何选择即时通讯应用的数据传输格式 [链接] http://www. ...