0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机C语言编程中没有到的中断而中断全部开启的错误你了解吗

j4AI_wujianying 来源:未知 2019-05-26 11:57 次阅读

我们知道,51单片机有几个不同的中断源。

对于一个系统的设计,通常在初始化程序里面需要定义各个中断等

比如:

TMOD = 0x21; // T1 mode 2 T0,mode 1 //GATE C/T M1 M0 GATE C/T M1 M0

TL1 = 0xfd; // 0xfa=4800 bps 0xfd=9600 bps

TH1 = 0xfd;

TH0 = -(10000/256);

TL0 = -(10000%256);

PCON = 0; //波特率不变等设置

SCON = 0x50; //串口1方式1,允许接收

IT0 = 1; //外部中断0下降沿有效

IT1 = 1; //外部中断1下降沿有效

TR0 = 1; //启动定时器0

TR1 = 1; //启动定时器1

ET0 = 1; //开放定时器0中断

ES = 0; //串行中断

EX0 = 0; //外部中断0

EX1 = 0; //外部中断1

EA = 1;

可以看到,我们一共有:定时中断0,定时中断1,外部中断0,外部中断1,串行中断。

这五个中断是最基本的中断源。对于各位的设计,我相信这一段代码在不同的程序重通常都不会自己重复敲打进去了。应该是从以前某个代码中直接复制过来吧。

此时会有一个小问题存在而被你忽略。

之前已经完成的代码中,你很有可能已经使用了全部5个中断,但是,一个刚开发的系统,也许还只是用到了其中的三个或者两个中断,而中断你全部开启了。这个意味着什么呢?

换算到汇编中可以比较明显的看到问题:

org 0000h

ljmp main

org 0003h //中断0入口

ljmp int1 //中断1处理

org 000bh //中断1入口

ljmp int2 //中断1处理

org 0013h ……

ljmp int3

org 001bh

ljmp int4

org 0023h

ljmp int5

main:

……

ret

int1

reti

int2

reti

……

可以知道,设置EX0 = 1意味着如果在外部中断0上存在中断信号,程序会跳转到0003h处运行

而下一条就是跳转到对应的中断处理程序。

假如我们的系统所有的中断都开启,但是你的中断处理程序此时只有一个。比如是串口中断开启。

那就意味着如果有定时中断也好,外部中断也好,全部都会让你执行串口中断处理函数。

因为你根本就没有让中断跳转到对应处理函数的过程,于是一直往下运行,从而发生未知的故障。

又比如你没有 串口中断处理函数,但是你开启了串口中断,你的程序在调试阶段又有一个串口发送数据的函数,那意味着什么?意味着你发送数据的时候有可能进入串口中断入口,而此时没有一个跳转命令到串口处理函数,那么只好重新运行主函数了。

程序就全部乱套了。

综上,没有用到的中断,就不要开启其标志位,在COPY的时候要记得修改此处的参数,否则搞死人不偿命的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6032

    文章

    44513

    浏览量

    632696
  • C语言
    +关注

    关注

    180

    文章

    7597

    浏览量

    136120
  • 中断
    +关注

    关注

    5

    文章

    895

    浏览量

    41384

原文标题:谈谈单片机C语言编程中不经意间的一个小错误!

文章出处:【微信号:wujianying_danpianji,微信公众号:单片机精讲吴鉴鹰】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是中断单片机中断处理过程详解

    如果单片机没有中断,那么,单片机将失去灵魂。
    的头像 发表于 11-09 11:28 4752次阅读
    什么是<b class='flag-5'>中断</b>?<b class='flag-5'>单片机</b><b class='flag-5'>中断</b>处理过程详解

    C语言单片机编程使用的高级语言

    今天主要分享单片机编程使用的高级语言C语言单片机编程
    发表于 10-20 16:38

    单片机编程技巧-时钟中断

    单片机编程技巧-功能强大的时钟中断 功能强大的时钟中断  在单片机程序设计,设置一个好的时钟
    发表于 04-07 09:18 1258次阅读

    单片机教程十七:单片机中断系统

    单片机教程十七:单片机中断系统 单片机中断系统的概念:什么是中断,我们从一个生活
    发表于 05-15 23:11 5009次阅读
    <b class='flag-5'>单片机</b>教程十七:<b class='flag-5'>单片机</b>的<b class='flag-5'>中断</b>系统

    MCS-51单片机中断软件编程

    MCS-51单片机中断软件编程 MCS-51单片机有多个中断源,以8051为例,有5个中断
    发表于 03-06 10:08 1314次阅读
    MCS-51<b class='flag-5'>单片机</b>外<b class='flag-5'>中断</b>软件<b class='flag-5'>编程</b>

    C51单片机中断号以及中断向量

    本内容简单介绍了C51单片机中断号以及中断向量,方便大家了解和学习
    发表于 02-02 15:25 5786次阅读
    <b class='flag-5'>C</b>51<b class='flag-5'>单片机</b>的<b class='flag-5'>中断</b>号以及<b class='flag-5'>中断</b>向量

    51单片机中断编程实例详解

    51单片机中断编程实例详解.pdf
    发表于 12-16 15:42 17次下载

    如何实现80C51单片机对外中断功能的控制问题详细资料概述

    分析了80C51单片机的2个对外中断入口—INT0—lNT1和 的结构、功能。讨论了通过控制机构的合理设置、编程,实现
    发表于 09-25 17:03 3次下载
    如何实现80<b class='flag-5'>C</b>51<b class='flag-5'>单片机</b>对外<b class='flag-5'>中断</b>功能的控制问题详细资料概述

    单片机中断系统

    单片机中断系统的概念 什么是中断,我们从一个生活的例程引入。 正在家中看书,突然电话铃响了,
    的头像 发表于 06-24 21:57 1w次阅读

    使用单片机实现INT0中断计数的C语言程序免费下载

    本文档的主要内容详细介绍的是使用单片机实现INT0中断计数的C语言程序免费下载。
    发表于 03-21 10:28 8次下载

    使用单片机外部中断的使用C语言程序免费下载

    本文档的主要内容详细介绍的是使用单片机外部中断的使用C语言程序免费下载。
    发表于 04-02 16:01 9次下载

    C51单片机学习笔记(四)——单片机中断系统及应用

    C51单片机学习笔记(四)——单片机中断系统及应用文章目录C51单片机学习笔记(四)——
    发表于 11-14 10:21 17次下载
    <b class='flag-5'>C</b>51<b class='flag-5'>单片机</b>学习笔记(四)——<b class='flag-5'>单片机</b>的<b class='flag-5'>中断</b>系统及应用

    51单片机开启中断和定时器

    51单片机开启中断和定时器关于中断,需要用到中断允许寄存器:定时器中断需要的是:总
    发表于 11-22 12:06 12次下载
    51<b class='flag-5'>单片机</b>:<b class='flag-5'>开启</b><b class='flag-5'>中断</b>和定时器

    89C51单片机中断系统

    89C51单片机中断系统对于在单片机的学习,中断
    发表于 11-22 12:21 32次下载
    89<b class='flag-5'>C</b>51<b class='flag-5'>单片机</b><b class='flag-5'>中</b>的<b class='flag-5'>中断</b>系统

    单片机用按钮中断函数

    的功能,如播放音乐、启动灯光等等。本文将对单片机使用按钮中断函数做详细的阐述,包括实现过程、原理以及相关的编程技巧,以期帮助读者深入了解单片机
    的头像 发表于 09-01 10:17 1461次阅读