标题: 基于430f5529的抢答器程序分享 [打印本页]

作者: chenmingsi    时间: 2020-11-1 00:16
标题: 基于430f5529的抢答器程序分享


单片机源程序如下:

  1. #include "msp430f5529.h"
  2. long unsigned int n;
  3. void delay(unsigned int x)
  4. {
  5.    int i,j;
  6.    for(i=x;i>0;i--)
  7.      for(j=110;j>0;j--);
  8. }
  9. #define K1 (P2IN & BIT1)

  10. int flag = 0,flag1 = 0;

  11. void main(void){

  12.   WDTCTL=WDTPW+WDTHOLD; //关闭看门狗

  13.   P1DIR = BIT0;   
  14.   P1OUT &= ~BIT0;// 灯暗
  15.   
  16.   
  17.   P4DIR = BIT7;   
  18.   P4OUT &= ~BIT7;

  19.   P2DIR &= ~BIT1;                         //将P2.1脚设置为输入方式
  20.   P2OUT |= BIT1;            
  21.   P2REN |= BIT1;            //设置为内部上拉
  22.   P2IE |= BIT1;                  //P2.1中断使能
  23.   P2IES |= BIT1;                   //置1,设置为下降沿触发
  24.   P2IFG &= ~BIT1;                      //清除P2.1的中断标志位
  25.   
  26.   P1DIR &= ~BIT1;                         //将P2.1脚设置为输入方式
  27.   P1OUT |= BIT1;            
  28.   P1REN |= BIT1;            //设置为内部上拉
  29.   P1IE |= BIT1;                  //P2.1中断使能
  30.   P1IES |= BIT1;                   //置1,设置为下降沿触发
  31.   P1IFG &= ~BIT1;                      //清除P2.1的中断标志位
  32.   
  33.   TA0CTL = TASSEL_2 + TACLR + MC_1;//设置定时器时钟源为SCMLK,8分频,允许置位,增计计数                           //
  34.   TA0CCTL0 = CCIE;           //允许使能中断
  35.   TA0CCR0 = 1060;           //设置定时周期      1ms
  36.   __bis_SR_register(LPM0_bits + GIE); //复位CPUOFF并打开SCMLK,开可屏蔽中断}//进入低功耗模式

  37.   
  38.   __enable_interrupt();      //开总中断
  39.   
  40.   while(1)
  41.   {
  42.    
  43.   }
  44. }
  45. #pragma vector=TIMER0_A0_VECTOR
  46. __interrupt void Timer_A(void)
  47. {
  48.   n++;

  49.   if(n == 5000)//5s
  50.   {
  51.     flag1=1;
  52.     n=0;
  53.   }
  54. }

  55. #pragma vector=PORT2_VECTOR     //固定格式,声明中断向量地址
  56. __interrupt void Port2_ISR(void)  //中断子程序
  57. {
  58.   if(flag1!=1)
  59.   {
  60.     __delay_cycles(100);
  61.     while(K1 == 0);
  62.     P1OUT ^= BIT0;
  63.     P2IFG &= ~BIT1;
  64.     P1IE &= ~BIT1;
  65.   }
  66.   else
  67.   {
  68.     P2IE &= ~BIT1;
  69.   }
  70.    
  71.    
  72. }

  73. #pragma vector=PORT1_VECTOR     //固定格式,声明中断向量地址
  74. __interrupt void Port1_ISR(void)  //中断子程序
  75. {
  76.   if(flag1!=1)
  77.   {
  78.     __delay_cycles(100);
  79.     while((P1IN&BIT1) == 0);
  80.     P4OUT ^= BIT7;
  81.     P1IFG &= ~BIT1;
  82.     P2IE &= ~BIT1;
  83.   }
  84.   
  85.     else
  86.   {
  87.     P1IE &= ~BIT1;
  88.   }
  89. }
复制代码

所有程序51hei提供下载:
抢答器.rar (757.38 KB, 下载次数: 11)



作者: 51hei团团    时间: 2020-11-1 00:51
能分享下电路图吗?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1