|
我彻底晕了,搞了一天,还是没有解决!天啊,问题到底出在哪里?
[复制链接]
程序编好了,各种功能都很正常,用的是135,可是今天领导说让在程序初始化的地方先让P5.3=1,P5.0=0,然后经过一段延时在另P5.3=0;P5.0=1;看似很简单,可是当我这样改了之后问题却出来了,程序运行到P5.3=0;P5.0=1;指令后就复位,一直重复不断,我不知道问题出在什么地方,改之前的程序如下:
void main(void)
{
unsigned int i1,d;
///////////////////////////////////外部晶振
BCSCTL1 = 0;
BCSCTL1 &=~XT2OFF;
do
{
IFG1 &=~OFIFG;
for(i1 = 0xff;i1>0;i1--);
}
while((IFG1 & OFIFG) !=0);
BCSCTL2 |=SELM_2; //选择MCLK为XT2
BCSCTL2 |=SELS;
////////////////////////////////////开启看门狗
BCSCTL2 |=SELS+DIVS_3;
WDTCTL=0x5a10;//打开看们狗,复位时间为64.8ms
IE1 &=0XFE;
IFG1 &=WDTIFG;
////////////////////////////////////端口初始化
P1DIR =0xff;//状态管
P2DIR =0xff;//个位管
P3DIR =0xff;//十分位管
P4DIR =0xff;//百分位管
P5DIR =0x1f;
P5SEL =0x10;//选择P5.4第二功能
P5OUT =0X15;//
P6DIR =0x00;//P6.0为模拟信号输入口
P6SEL =0x01;//选择AD功能
///////////////////////////////////AD
ADC12CTL0 &=~(ENC);
ADC12CTL0 =ADC12ON+SHT0_15
ADC12CTL1 =SHP+CONSEQ_2;//
ADC12CTL1 |=ADC12DIV_7;
//ADC12CTL1 |=ADC12SSEL_2;
ADC12MCTL0 =0xa0;//选择0通道,在0通道结束,外部参考源
ADC12IE =0x0001;//开放一通道中断
ADC12IFG =0x0000;//清0通道中断标志位
ADC12CTL0 |=ENC;//开转换允许
ADC12CTL0 |=0x0001;//启动AD转换
for(i1=255;i1!=0;i1--);
_EINT();//开总中断
P1OUT =0Xff;
P2OUT =0X40;
P3OUT =0Xc0;
P4OUT =0Xc0;
改变之后的程序为:
void main(void)
{
unsigned int i1,d;
///////////////////////////////////外部晶振
BCSCTL1 = 0;
BCSCTL1 &=~XT2OFF;
do
{
IFG1 &=~OFIFG;
for(i1 = 0xff;i1>0;i1--);
}
while((IFG1 & OFIFG) !=0);
BCSCTL2 |=SELM_2; //选择MCLK为XT2
BCSCTL2 |=SELS;
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
////////////////////////////////////端口初始化
P1DIR =0xff;//状态管
P2DIR =0xff;//个位管
P3DIR =0xff;//十分位管
P4DIR =0xff;//百分位管
P1OUT =0Xff;
P2OUT =0X40;
P3OUT =0Xc0;
P4OUT =0Xc0;
P5DIR =0x1f
P5SEL =0X00;
P5OUT |=BIT3;/
P5OUT &=~BIT0;
P6DIR =0x00;//P6.0为模拟信号输入口
P6SEL =0x01;//选择AD功能
for(d=4;d!=0;d--)
{
for(i1=60000;i1!=0;i1--)
{
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
}
}
P5OUT &=~BIT3;
P5OUT |=BIT0;
////////////////////////////////////开启看门狗
BCSCTL2 |=SELS+DIVS_3;
WDTCTL=0x5a10;//打开看们狗,复位时间为64.8ms
IE1 &=0XFE;
IFG1 &=WDTIFG;
///////////////////////////////////AD
ADC12CTL0 &=~(ENC);
ADC12CTL0 =ADC12ON+SHT0_15;//
ADC12CTL1 =SHP+CONSEQ_2;//
ADC12CTL1 |=ADC12DIV_7;
//ADC12CTL1 |=ADC12SSEL_2;
ADC12MCTL0 =0xa0;//选择0通道,在0通道结束,外部参考源
ADC12IE =0x0001;//开放一通道中断
ADC12IFG =0x0000;//清0通道中断标志位
ADC12CTL0 |=ENC;//开转换允许
ADC12CTL0 |=0x0001;//启动AD转换
_EINT();//开总中断
请高手指点!
|
|