單片機源程序如下:
- #include "msp430f5529.h"
- long unsigned int n;
- void delay(unsigned int x)
- {
- int i,j;
- for(i=x;i>0;i--)
- for(j=110;j>0;j--);
- }
- #define K1 (P2IN & BIT1)
- int flag = 0,flag1 = 0;
- void main(void){
- WDTCTL=WDTPW+WDTHOLD; //關閉看門狗
- P1DIR = BIT0;
- P1OUT &= ~BIT0;// 燈暗
-
-
- P4DIR = BIT7;
- P4OUT &= ~BIT7;
- P2DIR &= ~BIT1; //將P2.1腳設置為輸入方式
- P2OUT |= BIT1;
- P2REN |= BIT1; //設置為內部上拉
- P2IE |= BIT1; //P2.1中斷使能
- P2IES |= BIT1; //置1,設置為下降沿觸發
- P2IFG &= ~BIT1; //清除P2.1的中斷標志位
-
- P1DIR &= ~BIT1; //將P2.1腳設置為輸入方式
- P1OUT |= BIT1;
- P1REN |= BIT1; //設置為內部上拉
- P1IE |= BIT1; //P2.1中斷使能
- P1IES |= BIT1; //置1,設置為下降沿觸發
- P1IFG &= ~BIT1; //清除P2.1的中斷標志位
-
- TA0CTL = TASSEL_2 + TACLR + MC_1;//設置定時器時鐘源為SCMLK,8分頻,允許置位,增計計數 //
- TA0CCTL0 = CCIE; //允許使能中斷
- TA0CCR0 = 1060; //設置定時周期 1ms
- __bis_SR_register(LPM0_bits + GIE); //復位CPUOFF并打開SCMLK,開可屏蔽中斷}//進入低功耗模式
-
- __enable_interrupt(); //開總中斷
-
- while(1)
- {
-
- }
- }
- #pragma vector=TIMER0_A0_VECTOR
- __interrupt void Timer_A(void)
- {
- n++;
-
- if(n == 5000)//5s
- {
- flag1=1;
- n=0;
- }
- }
- #pragma vector=PORT2_VECTOR //固定格式,聲明中斷向量地址
- __interrupt void Port2_ISR(void) //中斷子程序
- {
- if(flag1!=1)
- {
- __delay_cycles(100);
- while(K1 == 0);
- P1OUT ^= BIT0;
- P2IFG &= ~BIT1;
- P1IE &= ~BIT1;
- }
- else
- {
- P2IE &= ~BIT1;
- }
-
-
- }
- #pragma vector=PORT1_VECTOR //固定格式,聲明中斷向量地址
- __interrupt void Port1_ISR(void) //中斷子程序
- {
- if(flag1!=1)
- {
- __delay_cycles(100);
- while((P1IN&BIT1) == 0);
- P4OUT ^= BIT7;
- P1IFG &= ~BIT1;
- P2IE &= ~BIT1;
- }
-
- else
- {
- P1IE &= ~BIT1;
- }
- }
復制代碼
所有程序51hei提供下載:
搶答器.rar
(757.38 KB, 下載次數: 11)
2020-11-1 00:15 上傳
點擊文件名下載附件
|