历史上的今天
返回首页

历史上的今天

今天是:2024年12月19日(星期四)

正在发生

2018年12月19日 | 51单片机中断处理函数能否影响全局变量

2018-12-19 来源:eefocus

在用keil4.60写51的定时器中断处理函数的时候,遇到了这么一个纠结的问题,就是我定义了一个全局变量temp,一旦触发定时器中断进入处理函数时将temp=123,在开中断前temp=888,我本用keil调试看看里边的变量变化情况的,无意中发现keil竟然显示不了全局变量,只能显示当前调用函数的局部变量,这样一来靠调试我是完全不知道全局变量的值变成了什么。上网查了一下,竟然有人说中断处理函数不能改变全局变量的值,决定不相信,做个测试就知道了。昨天实验室没有51开发板来做测试,就只好先画了个proteus的仿真电路图,把程序下载进去看看运行的结果。


如果处理函数可以改变全局变量,led2亮,否则led1亮


#include

#define uchar unsigned char

#define uint unsigned int

sbit led1=P0^0;

sbit led2=P0^1;

uint temp0;

 

void main(void)

{

temp0=888;

/******** 定时器0初始化 *******/

TMOD=0X01; //定时器0 : 工作方式1--16位定时器

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

ET0=1;    //允许定时器0中断

TR0=1;     //允许定时器0开始计时

EA=1;    //开cpu总中断源

/******** 进入正式工作 *******/

P0=0xFF;

while(1)

{

if(temp0==888)

{

led1=0;

led2=1;

}

else if(temp0==123)//最终响应这一个

{

led1=1;

led2=0;

}

else

{

P0=0xFF;

}

}

}

 

void timer0(void) interrupt 1 //定时器0中断服务子程序

{

TR0=0;

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

temp0=123;

TR0=1;

}

仿真图片显示


今天把开发板带来了,下载进去效果一样。


结论,中断处理函数可以改变全局变量的值。

推荐阅读

史海拾趣

问答坊 | AI 解惑

射频(RF)技术简介

射频(RF)技术简介RF(Radio Frequency)技术被广泛应用于多种领域,如:电视、广播、移动电话、雷达、自动识别系统等。专用词RFID(射频识别)即指应用射频识别信号对目标物进行识别。RFID的应用包括:  ● ETC(电子收费)  ● 铁路机车车辆识别与 ...…

查看全部问答>

不錯

應該供有商業價值吧…

查看全部问答>

控制类的快来看哪,历年题目下载,分享啦

本帖最后由 paulhyde 于 2014-9-15 09:25 编辑 今年清单出来了,与往年相比,小车还是有的,用光电传感器,最大的不同是“无线收发模块”,可以猜想是通信方面的问题,或者是两车,或者是遥控操作,或是上位机。  …

查看全部问答>

单电源运放图集

单电源运放图集…

查看全部问答>

有没有 乐于助人的CE GG 可以帮帮小女子?

现在公司准备用c#开发一个项目  运行在wince平台上。 我现在还没搞清楚 这个环境应该怎么搭建。 有没有乐于助人的?  帮帮我这个可怜的人吧。 感谢  万分感谢。    Q:252847391   非诚勿 ...…

查看全部问答>

大家都画蛇行线吗?

来自eeworld合作群:63762526用哪款软件好啊 …

查看全部问答>

关于程序下载的问题

请问MSP430F5438的程序使用ISP 下载用什么软件,有什么相应的参考电路没? 我在使用JTAG的时候,在debug模式可以下载仿真,但是我要realse程序的话,就报错,不知道这个在设置上有什么讲究,还有程序有没有像PIC那样进行程序加密的选项,希望大虾 ...…

查看全部问答>

尝试一下TI的cortex-m3

  这次eeworld发力团购   DK-KM3S9B96开发板,确实是给了大家一个认识TI新产品的机会,TI的产品我用的非常多了,其优点就是稳定、可靠。   DK-LM3S9B96开发板是支持10/100M以太网、USB OTG、3.5寸触摸屏、SD卡、I2S音频,扩 ...…

查看全部问答>

关于DSP2812的学习

我是新手,还没有DSP2812的开发板,已经有TI官网上下的例子了,想问问能不能只在CCS3.3的软件下对例子进行仿真和学习,不用开发板,可以实现吗?…

查看全部问答>