|
刚开始学习编程,我写的一个小程序,用pic16f636芯片设计要求检测电源掉电时有报警,而且在RA2口的中断在0.5s后无变化也会报警。以下程序编译成功,在仿真运行时会出现堆栈溢出,不知道是什么原因引起,请指点一下,谢谢啦
#include
#define Alarm RC5
#define uint unsigned int
#define uchar unsigned char
__CONFIG(0x33A4);
void init(void)
{
TRISC=0X04; //00000100
TRISA=0X0f; //00001111
PORTA=0;
PORTC=0;
INTE=1;
CMCON0=0x07;
}
void delay_ms(uint xms)
{
uint i,j;
for(i=0;i<=xms;i++)
{
for(j=0;j<71;j++);
}
}
///警灯报警时间//
void alarm_time(void)
{
uint i;
for(i=0;i<60;i++)
{
delay_ms(1000);
}
}
unsigned char check_power(void)
{
while(1)
{
if(!RC2)
return 0;
if(RC2)
return 1;
}
}
void main(void)
{
uint cnt,power;
TMR1IF=0;
cnt=8;
init();
T1CON=0x01;
while(1)
{
power=check_power();
if(!power)
{
PORTC=0x30;
alarm_time();
}
if(TMR1IF)
{
TMR1IF=0;
while((--cnt)!=0)
{
cnt=8;
if(INTF==1)
{
INTF=0;
PORTC=0x30;
alarm_time();
}
break;
}
}
}
}
|
|