该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
IAR在Debug下报错 The stack pointer for stack 'C Stack' (currently Page0: 0x01) is outside the stack range (page0:0x03 to page0:0x03),请问只是什么原因?是不是程序有问题,程序编译通过了,但是好像并未进入中断,刚开始用C,请高人指点,谢谢!
#include "ioS3C9488.h"//
#include "iobit.h" //IO端口位操作定义文件
#include "intrinsics.h"//包含内部函数
/**此处为宏定义替换******
#define uchar unsigned char
#define uint unsigned int
#define nop (__no_operation())
#define di (__disable_interrupt())
#define ei (__enable_interrupt())
//************************************************
//**此处定义程序所用到的全局变量*******
uchar work_***1 =0;
uchar time_125us=0;
uchar time_10ms=0;
uchar time_1s=0;
uchar time_1min=0;
uchar time_1hour=0;
//*************************************************************************
//**位变量操作宏定义
//系统运行操作标志位定义
#define Test_tintpnd (TINTPND & 0x1)
#define Clr_tintpnd (TINTPND =TINTPND & ~0x1)
/***程序所用函数声明*****
//***凡程序中所用到的函数请先在这里声明***
__interrupt void int_9488();
void main();
void chip_init();
void display();
//*************************************************************************
//========================主程序控制===========================
void main( )
{
di;
//***初始化过程***//
chip_init();
ei;
while(1)
{
Set_P31;
if(time_1s==60)
{
time_1s=0;
time_1min++;
Clr_P30;
// Set_P31;
}
if(time_1min==60)
{
time_1min=0;
time_1hour++;
}
// void display();
}
}
//******************************************************************
//****启动时IO初始化子过程******
void chip_init()
{
di;
ADCON =0x06; // 0000110B ;hcj禁止AD转换
SYM =0x08; //使能所有中断,选择第0页
TACON =0x8b; //64分频,中断模式,清除定时器A,禁止溢出中断,使能 匹配中断,中断开
TADATA =0x08; //1/(4.19MHZ/64)*8=122US
VLDCON =0x00;
WDTCON =0x00; //使能看门狗
WTCON =0x36; //禁止WTCON中断
//省略一部分
ei;
return;
}
//************************************
//中断子程序
//*********************************
#pragma vector=0x00
__interrupt void int_9488()
{
asm("push SYM");
if(Test_tintpnd)
{
Clr_tintpnd;
time_125us++;
}
if(time_125us==80)
{
time_10ms++;
time_125us=0;
}
if(time_10ms==100)
{
time_1s++;
Set_P30;
time_10ms=0;
}
asm("pop SYM");
return;
}