This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

IAR+Proteus7.6仿真MSP430单片机PORT1外部中断功能



msp430程序

#include<msp430x23x.h>
#define uint unsigned int
#define uchar unsigned char
/**************************************************
函数:void delay_1ms(void)    void delay_nms(uint n)
功能:延时1ms                 延时Nms
***************************************************/
void Delay_1ms(void)   //1ms延时函数 

   uint i; 
   for (i=0;i<80;i++); 
}    
void Delay_Nms(uint n)  //N ms延时函数 

   uint i=0; 
   for (i=0;i<n;i++) 
   Delay_1ms(); 
}
/**************************************************
函数:void P1_ISR(void)
功能:外部中断服务函数
***************************************************/
#pragma vector=PORT1_VECTOR 
__interrupt void Port_1(void)
{   
  uchar i;
  for(i=0;i<10;i++)
   {
      P1OUT=0x01;
      Delay_Nms(1000);
      P1OUT=0x00;
      Delay_Nms(1000);
   }
  P1IFG = 0x00;   //清除中断标志
}
/**************************************************
函数:void P1_INIT(void)
功能:PORT1端口初始化
***************************************************/
void P1_INIT(void)
{
  P1SEL = 0x00;   //设置为普通I/O
  P1DIR |= 0X01;  //设置I/O方向
  P1IE = 0x80;    //P1^7中断允许
  P1IES = 0x00;   //上升沿使相应标志位置位
  P1IFG = 0x00;   //清除中断标志
}
/**************************************************
函数:void main(void)
功能:主函数
***************************************************/
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD; 
  P1_INIT();  
  _EINT();        //开总中断
  while(1)
  {
    P1OUT=0x00;
  }
}