51单片机中断处理函数能否影响全局变量

本文探讨了51单片机在中断处理函数中是否能修改全局变量的问题。作者通过keil4.60进行编程,并在Proteus仿真及实际开发板上进行测试,结果显示中断处理函数可以改变全局变量的值。实验中,根据全局变量的改变控制LED状态,验证了这一结论。
摘要由CSDN通过智能技术生成

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

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

#include <reg52.h>
#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==
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值