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. 编译器-FIRST集合(补充:左递归)

    上一篇中实现的First函数没有考虑左递归,在这对此说明和实现 1.立即左递归 A -> Ab|a 1.两步或两步以上产生的左递归 A -> Bc|a B -> Ab|d 前面的实现 ...

  2. Less使用备忘录

    定义 Less (Leaner Style Sheets 的缩写) 是一门向后兼容的 CSS 扩展语言,动态样式语言. 使用方式 直接引入less.js文件 好处:能获取客户端的数据,从而进行进一步的 ...

  3. 【相邻不同型贪心】LeetCode767 重构字符串

    题解 通常直接思考最佳策略是十分困难的,我们不妨思考每一种情况需要如何处理: 整个字符串只有一种字符 若字符串长度为 \(1\),那么字符串本身即为答案: 若字符串长度大于等于 \(2\),那么不存在 ...

  4. iOS Aliyun语音识别&语音合成

    Aliyun 语音识别&语音合成 导入 SDK 将ZIP包中的nuisdk.framework添加到工程中,并在工程Build Phases的Link Binary With Librarie ...

  5. Spring 话题

    我从来不用 spring,项目再大也不会考虑 spring 那套模式.什么依赖注入控制反转,叠床架屋,对开发和运维可以说有害无益.上文 zz Spring 是一种反模式 - Inshua - 博客园 ...

  6. Dockerr安装Oracle以及使用DBeaver连接

    拉取镜像 pull container-registry.oracle.com/database/free:latest 创建容器 说明一下我现在的最新版本是23 docker run -d --na ...

  7. 【Javaweb】在项目中添加MyBatis依赖等

    pom.xml 仓库 如果你没有配置阿里云仓库镜像源,可以到这里来找 https://mvnrepository.com/ 如果你配置了阿里云仓库镜像源,可以来这里找 https://develope ...

  8. 【MyBatis】学习笔记06:各种查询所返回数据的数据类型

    [Mybatis]学习笔记01:连接数据库,实现增删改 [Mybatis]学习笔记02:实现简单的查 [MyBatis]学习笔记03:配置文件进一步解读(非常重要) [MyBatis]学习笔记04:配 ...

  9. startup

    要提取startup/后面的字符,可以使用cut命令或awk命令.以下是两种方法: 使用cut命令: bash #!/bin/bash # 给定的字符串 STR1="startup/valu ...

  10. docker-compose.yml 使用说明

    docker-compose.yml 结构 docker-compose.yml文件分为三个主要部分:services.networks.volumes..services主要用来定义各个容器.net ...