久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6123|回復: 0
打印 上一主題 下一主題
收起左側

用MSP430F5438A檢測頻率有問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:66032 發表于 2014-10-18 15:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我看了官方的USER's Guide幾遍, 查了資料都沒辦法弄出來, 問題是數碼管顯示“255” 不變, 請哪位高手幫我指出錯誤, 非常謝謝!
//*********************Capture the frequency test **************************
//  ACLK = TACLK = 32kHz, MCLK = SMCLK = default DCO ~1.045MHz
//
//  As coded and with TACLK = 1.045MHz, toggle rates are:
//  P2.1= CCR0 = 1045000/260 = 4.19kHz
//  P2.2= CCR1 =65   50% dutycycle;
//  P2.3= CCR2 =26   80% dutycycle;
//
//               MSP430F5438A
//            -------------------
//        /|\|                   |
//         --|RST                |
//           |                   |
//           |         P2.1/TA1.0|--> CCR0     
//           |         P2.2/TA1.1|--> CCR1-----|
//           |         P2.3/TA1.2|--> CCR2     | connected as this
//           |               P1.2|--> TA0.1----|
//  
//  MQ.Wu   Eastar-HK.COM
//******************************************************************************
#include <msp430.h>
#include <stdlib.h>
#include <stdio.h>
#include "PIN_DEF.H"
#define uchar unsigned char
#define uint unsigned int
uchar Count=0, First_Time=0x01;
uint REdge1, REdge2, FEdge;
uchar num1, num2, num3, num4;

uchar const table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar const table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};

void Init_Port(void)
{
  P5DIR  |= POWER   ; //define the direction for O/P;
  MAIN_POWER_ON    ;  
  P7DIR  |= LED_PWR  ;
  P7OUT  |= LED_PWR   ;// turn off the LED;
  //INTERNAL_PULL_UP       ;
// ROW_IN_COL_OUT         ;
  P1OUT   = 0xF0           ;
  P1DIR   = 0xF0          ;
  P9OUT   = 0x0F         ;
  P9DIR   = 0x0F     ;
  P8DIR = 0xFF;
  P8OUT = 0xFF;

}
void Display(num1,num2,num3,num4)
{

    P8OUT = table[num1];     
    P9OUT &= ~BIT0;
    __delay_cycles(100);
    P9OUT |= BIT0;

    P8OUT = table[num2];
    P9OUT &= ~BIT1;
    __delay_cycles(100);
    P9OUT |= BIT1;

    P8OUT = table[num3];
    P9OUT &= ~BIT2;
    __delay_cycles(100);
    P9OUT |= BIT2;

    P8OUT = table[num4];
    P9OUT &= ~BIT3;
    __delay_cycles(100);
    P9OUT |= BIT3;

}                                


int main(void)
{
  uint Period, ON_Period;
  uchar DutyCycle;
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  Init_Port();
  P1DIR &= ~BIT2;                           // P1.2/TA0.1 Input Capture
  P1SEL |= BIT2;                            // TA0.1 option select
  P2DIR |=0x0C;
  P2SEL |=0x0C;
  TA0CCTL1 = CAP + CM_3 + CCIE + SCS + CCIS_0;
  TA0CTL = TASSEL_2 + MC_2 + TAIE + TACLR;         // SMCLK, continous mode, clear TAR


  TA1CCR0 = 130;                            // PWM Period/2
  TA1CCTL1 = OUTMOD_6;                      // CCR1 toggle/set
  TA1CCR1 = 65;                             // CCR1 PWM duty cycle
  TA1CCTL2 = OUTMOD_6;                      // CCR2 toggle/set
  TA1CCR2 = 26;                             // CCR2 PWM duty cycle
  TA1CTL = TASSEL_2 + MC_3 + TACLR;         // SMCLK, up-down mode, clear TAR
  //__bis_SR_register(LPM0_bits);             // Enter LPM0

  //__bis_SR_register( GIE);

  while(1)
  {

     __bis_SR_register(GIE);  
      if (TA0CCTL1 & COV)                   // Check for Capture Overflow
      {  
         TA0CCTL1 &=~COV;
          while(1);                         // Loop Forever
      }
      Period = REdge2 - REdge1;             // Calculate Period
      ON_Period = FEdge-REdge1;             // On period
      DutyCycle = ((unsigned long)ON_Period*100/Period);
      num1=DutyCycle/1000;
      num2=DutyCycle%1000/100;
      num3=DutyCycle%100/10;
      num4=DutyCycle%10;
      Display(num1,num2,num3,num4);
  }
}

#pragma vector=TIMER0_A1_VECTOR
__interrupt void TIMER0_A1_ISR(void)
{

  switch(__even_in_range(TA0IV,14))
  {
    case 0: break;                  
    case 2:   if (TA0CCTL1 & CCI)                 // Capture Input Pin Status
          {
            // Rising Edge was captured
            if (!Count)
            {
                REdge1 = TA0CCR1;
                Count++;
            }
            else
            {
                REdge2 = TA0CCR1;
                Count=0x0;
                __bic_SR_register_on_exit(LPM0+ GIE);  // Exit LPM0 on return to main
            }

            if (First_Time)
                First_Time = 0x0;
        }
        else
        {
            // Falling Edge was captured
            if(!First_Time)
            {
                FEdge = TA0CCR1;
            }
        }

             break;
    case 4:  break;
    case 6:  break;                         // CCR3 not used
    case 8:  break;                         // CCR4 not used
    case 10: break;                         // CCR5 not used
    case 12: break;                         // Reserved not used
    case 14: break;
    default: break;
}
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品一级| 日韩在线视频一区二区三区 | 久久99久久久久 | 中文字幕 国产 | 蜜桃综合在线 | 亚洲精品免费视频 | 精品久久国产视频 | 色综合桃花网 | 久久亚洲一区二区三 | 国产免费一区二区三区最新6 | 中文字幕免费在线 | 国产一级在线 | 日本在线免费视频 | 五月花丁香婷婷 | 免费成人高清在线视频 | 亚洲一区二区久久 | 亚洲欧美日韩国产 | 亚洲bt 欧美bt 日本bt | 国产区在线免费观看 | 亚洲码欧美码一区二区三区 | 色av一区二区三区 | 完全免费在线视频 | 亚洲欧美日韩在线不卡 | 91久久久久久久久久久久久 | 天天操天天摸天天爽 | 欧美精品乱码久久久久久按摩 | 国产精品一区一区 | 看片国产| 欧美精品91 | 日韩精品一区二区三区视频播放 | 欧美日韩亚 | 亚洲男人的天堂网站 | 91精品国产综合久久婷婷香蕉 | 91正在播放 | 欧美精品日韩精品 | 黄免费观看视频 | 黄毛片| 国产精品日本一区二区不卡视频 | 综合精品 | 国内精品久久精品 | 国产一区二区三区免费 |