打印

求教,中断服务程序中变量不能修改

[复制链接]
1963|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xipengfei2002|  楼主 | 2009-10-13 23:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序中有一个IO口中断服务程序,现在可以确定程序能进入中断,可是终端服务程序内却不能修改变量的值,请问大家这是问什么,我应该怎么做才能修改变量的值,我用的是CY8C27543,谢谢!
沙发
ni_labview| | 2009-10-14 13:13 | 只看该作者
这个倒没发现,全局变量能修改啊。27543只有256字节RAM,你的程序中中断次数多否,是否是全局变量,方便的话发个简单代码上来大家帮忙看看

使用特权

评论回复
板凳
xipengfei2002|  楼主 | 2009-10-14 22:04 | 只看该作者
谢谢回答,io中断次数很少,不过有个定时器中断,每隔5ms中断一次,RAM使用量不到50%

使用特权

评论回复
地板
xipengfei2002|  楼主 | 2009-10-14 22:23 | 只看该作者
#pragma interrupt_handler Time5msISR
void Time5msISR()                //org   30h
{
        RelayDelaycount= RelayDelaycount+1;
        UVP_2s_count = UVP_2s_count + 1;
        //PRT1DR = PRT1DR & 0XBF;
}
#pragma interrupt_handler GPIO_ISR
void GPIO_ISR()                //org   1Ch
{
        TempSat = PRT3DR & 0X08;
        if(TempSat == 0)
        {
                PRT1DR = PRT1DR | 0X40;        //close out put  //可控制该IO口
                StatusFlag = StatusFlag & 0x7f;
                StatusFlag = StatusFlag & 0xef;
                TxBuffer[0] = StatusFlag;       
                StatusFlag = 0;
                               
               
                StatusFlag1 = 0;
                AddTime = 0;
                TxBuffer[0] = 0;
                TxBuffer[1] = 0;
                TxBuffer[2] = 0;
                TxBuffer[3] = 0;
                TxBuffer[4] = 0;
                TxBuffer[5] = 0;
               
                Sav1ADD_Data = 0;
                IoutADD_Data = 0;       
                               
                TxBuffer[0] = 0;
               
                TempSata = 0X55;//该变量不能改变,其他的变量没有具体验证
        }
}

使用特权

评论回复
5
Cypress2009| | 2009-10-14 23:48 | 只看该作者
应该是没有定义成全局变量吧

使用特权

评论回复
6
午夜粪车| | 2009-10-15 22:22 | 只看该作者
确实没有定义

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

25

帖子

1

粉丝