STC15F104E的外部中断工作异常
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的外部中断工作异常的更多相关文章
- linux中断与异常
看了<深入理解linux内核>的中断与异常,简单总结了下,如果有错误,望指正! 一 什么是中断和异常 异常又叫同步中断,是当指令执行时由cpu控制单元产生的,之所以称之为异常,是因为只有在 ...
- ASM:《X86汇编语言-从实模式到保护模式》第17章:保护模式下中断和异常的处理与抢占式多任务
★PART1:中断和异常概述 1. 中断(Interrupt) 中断包括硬件中断和软中断.硬件中断是由外围设备发出的中断信号引发的,以请求处理器提供服务.当I/O接口发出中断请求的时候,会被像8259 ...
- STM32之外部中断控制
一.STM32外部中断 1.STM32外部中断结构图 如上图所示:主要包括四个环节,GPIO.AFIO.EXTI.NVIC.以STM32F103VE(100脚)为例说明硬件模块的数量: GPIO: ...
- Linux内核中断和异常分析(上)
中断,通常被定义为一个事件.打个比方,你烧热水,水沸腾了,这时候你要去关掉烧热水的电磁炉,然后再去办之前手中停不下来的事情.那么热水沸腾就是打断你正常工作的一个信号机制.当然,还有其它的情况,我们以后 ...
- Win32下的中断和异常
本文是Matt Pietrek在1997年月10月的MSJ杂志Under The Hood专栏上发表的文章.中断和异常在DOS时代是整个系统的灵魂,但Windows已将其隐藏到了系统深处.Matt P ...
- 《Tsinghua os mooc》第1~4讲 启动、中断、异常和系统调用
资源 OS2018Spring课程资料首页 uCore OS在线实验指导书 ucore实验基准源代码 MOOC OS习题集 OS课堂练习 Piazza问答平台 暂时无法注册 疑问 为什么用户态和内核态 ...
- CC2530外部中断
一.中断基础概念 内核与外设之间的主要交互方式有两种:轮询和中断.中断系统使得内核具备了应对突发事件的能力. 在执行CPU当前程序时,由于系统中出现了某种急需处理的情况,CPU暂停正在执行的程序,转 ...
- x86架构中的外部中断结构-Part 1:中断控制器的演化
本文主要讲解了x86体系架构从外部设备接受中断的过程,本文是系列文章的第一部分,试图回答以下问题: 什么是PIC以及它的用途是什么? 什么是APIC以及它的用途是什么?LAPIC和I/O APIC的目 ...
- STM32f103之外部中断
一.背景 有个需求,IO口检测上升沿,然后做相应的动作.在此记录STM32F103的外部中断结构及配置方法, 以备下次快速上手使用. 有许多不太明白,又是老司机(:-D)帮忙,真的是站在别人的肩膀上会 ...
- 转别人的 STM32外部中断使用注意事项
前言:这些问题都是我之前在工作中遇到的,后来觉得需要总结,自己记忆不好,所以在这个给自己打个mark. 一:触发方式 STM32 的外部中断是通过边沿来触发的,不支持电平触发: 二:外部中断分组 ST ...
随机推荐
- Echarts 颜色管理
1.Echarts的颜色设计 Echarts的颜色的设置分为两种:色盘和具体颜色 色盘适合做全局设置,因为他里面有多个颜色,通俗的说色盘就是颜色预设值列表,色盘统一使用color属性进行配置. 而具体 ...
- Web API 控制器的行为和操作方法的属性
ControllerBase 类 Web API 包含一个或多个派生自 ControllerBase 的控制器类. Web API 项目模板提供了一个入门版控制器 [ApiController] [R ...
- uni-app在微信小程序端自定义组件中样式穿透失效
前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app. 坑位 最近因UI有别 ...
- C/C++源码扫描系列- Joern 篇
文章首发于 https://xz.aliyun.com/t/9277 概述 和 codeql,Fortify 相比 Joern不需要编译源码即可进行扫描,适用场景和环境搭建方面更加简单. 环境搭建 首 ...
- 二进制安装Kubernetes(k8s)v1.32.0
二进制安装Kubernetes(k8s)v1.32.0 介绍 https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 kubernetes(k ...
- 【Amadeus原创】wordpress 从服务器收到预料之外的响应。此文件可能已被成功上传。请检查媒体库或刷新本页。此响应不是合法的JSON响应。解决方法。
两种报错方式: 1.此响应不是合法的JSON响应. 2.从服务器收到预料之外的响应.此文件可能已被成功上传.请检查媒体库或刷新本页. 情况:媒体服务器上传小文件没问题,大一点的文件报这个错误. 原因: ...
- vue keep-alive include无效
1. 检查版本 include和exclude是vue2.1.0新增的两个属性 2. 检查需要缓存的每个组件中的name属性 router.js 中的name和vue组件的name保持一致,不要混乱 ...
- T 语言语法设计方案总结
早在 2015,我就已经精通了 C++.C#.JS,也用过其它语言,比如 PHP.Python.Java 做过一些项目,就觉得这些语言设计得太过复杂.坑多.麻烦,所以就开始设计一门新语言,暂且叫 T ...
- 【Web前端】【JavaScript】实现表格隔行变色
方法1:原生JavaScript 设置CSS table td{ border:red solid 1px; } .tr1{ color:white; background: black; } .tr ...
- 搭建SpringBoot中验证数据机制问题 Add a provider like Hibernate Validator (RI) to your classpath
搭建SpringBoot中的验证数据机制时出现的错误 报错代码 java.lang.IllegalStateException: Failed to load ApplicationContext a ...