在用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==