找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2514|回复: 1
收起左侧

基于430f5529的抢答器程序分享

[复制链接]
ID:515998 发表于 2020-11-1 00:16 | 显示全部楼层 |阅读模式
51hei.png

单片机源程序如下:

  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)
回复

使用道具 举报

ID:328014 发表于 2020-11-1 00:51 | 显示全部楼层
能分享下电路图吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表