找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1130|回复: 0
打印 上一主题 下一主题
收起左侧

msp430f1611红外遥控

[复制链接]
跳转到指定楼层
楼主
ID:370362 发表于 2018-7-12 18:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<msp430f1611.h>

  2. unsigned int new_cap=0;
  3. unsigned int old_cap=0;
  4. unsigned int chazhi=0;

  5. unsigned int diff_array[32];                // RAM array for differences
  6. unsigned int capture_array[32];  // RAM array for captures
  7. unsigned int bu[32];
  8. unsigned char index=0;
  9. unsigned char count = 0;
  10. unsigned int i,k,value;


  11. void main( void )
  12. {
  13.   // Stop watchdog timer to prevent time out reset
  14.   WDTCTL = WDTPW + WDTHOLD;

  15.   P1DIR&=~0X02;
  16.   P1SEL=0X02;   //P1.1设置为Timer A 输入
  17.   P2DIR=0X01;
  18.   P2SEL|=0X01;

  19.   BCSCTL1 |= DIVA_3;  // ACLK 8分频

  20.   CCTL0 = CM_3 + SCS + CCIS_0 + CAP + CCIE; // 捕获模式,上升沿捕获,同步捕获,选择Timer A作为捕获事件输入源,中断允许

  21.   TACTL = TASSEL_2 + MC_2+TAIE;; //TACLK=SMCLK 连续计数模式

  22.   __bis_SR_register(LPM0_bits + GIE);  
  23.   _EINT();

  24. while(1)
  25. {
  26.    for(i=0;i<33;i++)
  27.    {
  28.      if(diff_array[i]>55)
  29.      {
  30.        bu[i]=1;
  31.      }
  32.      else
  33.      {
  34.        bu[i]=0;
  35.      }
  36.     for(i=0;i<=7;i++)
  37.     {
  38.       value+=bu[16+i]<<(7-k);
  39.     }

  40. }
  41. }
  42. }

  43. #pragma vector=TIMERA0_VECTOR
  44. __interrupt void TimerA0(void)
  45. {
  46.    new_cap=TACCR0;
  47.    chazhi=new_cap-old_cap;
  48.    diff_array[index]=chazhi;
  49.    capture_array[index]=new_cap;
  50.    index++;
  51.    old_cap=new_cap;

  52. }
  53. #include<msp430f1611.h>

  54. unsigned int new_cap=0;
  55. unsigned int old_cap=0;
  56. unsigned int chazhi=0;

  57. unsigned int diff_array[32];                // RAM array for differences
  58. unsigned int capture_array[32];  // RAM array for captures
  59. unsigned int bu[32];
  60. unsigned char index=0;
  61. unsigned char count = 0;
  62. unsigned int i,k,value;


  63. void main( void )
  64. {
  65.   // Stop watchdog timer to prevent time out reset
  66.   WDTCTL = WDTPW + WDTHOLD;

  67.   P1DIR&=~0X02;
  68.   P1SEL=0X02;   //P1.1设置为Timer A 输入
  69.   P2DIR=0X01;
  70.   P2SEL|=0X01;

  71.   BCSCTL1 |= DIVA_3;  // ACLK 8分频

  72.   CCTL0 = CM_3 + SCS + CCIS_0 + CAP + CCIE; // 捕获模式,上升沿捕获,同步捕获,选择Timer A作为捕获事件输入源,中断允许

  73.   TACTL = TASSEL_2 + MC_2+TAIE;; //TACLK=SMCLK 连续计数模式

  74.   __bis_SR_register(LPM0_bits + GIE);  
  75.   _EINT();

  76. while(1)
  77. {
  78.    for(i=0;i<33;i++)
  79.    {
  80.      if(diff_array[i]>55)
  81.      {
  82.        bu[i]=1;
  83.      }
  84.      else
  85.      {
  86.        bu[i]=0;
  87.      }
  88.     for(i=0;i<=7;i++)
  89.     {
  90.       value+=bu[16+i]<<(7-k);
  91.     }

  92. }
  93. }
  94. }

  95. #pragma vector=TIMERA0_VECTOR
  96. __interrupt void TimerA0(void)
  97. {
  98.    new_cap=TACCR0;
  99.    chazhi=new_cap-old_cap;
  100.    diff_array[index]=chazhi;
  101.    capture_array[index]=new_cap;
  102.    index++;
  103.    old_cap=new_cap;

  104. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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