【TI 技术资料分享】+Proteus7.6仿真MSP430单片机PORT1外部中断...

2019-07-30 19:50发布

图片2.jpg
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;
  }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
shenmu2012
1楼-- · 2019-07-30 23:31
这个功能很简单的啊,,基本的只要实现IO口的中断功能的就可以的啦。
firstblood
2楼-- · 2019-07-31 02:02
楼主分享的程序也很简洁的。

一周热门 更多>