社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 精华区
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
搜索
查看: 1459|回复: 1

[求助] MSP430测频为什么数码管显示不出频率

[复制链接]

2

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2012-11-15 00:58:26 | 显示全部楼层 |阅读模式
#ifndef TIMERA_H
#define TIMERA_H
void IO_CLR();//初始化IO
void InittimerA();//定时器A初始化
//void KeeptimerA(unsigned char flag);//控制捕获模式运行
unsigned int Getcyc();//返回周期值函数
void delay();//延时函数
#endif



#include  <msp430x14x.h>
#include "timerA.h"
#define uchar unsigned char
#define uint unsigned int
uint cyc;       //信号周期返回值
uint LastCCR0;  //上一次CCR0的值
/*******************************************************************************
定时器A初始化
*******************************************************************************/
void InittimerA()
{
      TACTL = TASSEL_1 + MC_2+TACLR + TAIE;       //时钟ACLK,连续计数模式
      CCTL0 = CCIS_1 + CM_2 + SCS + CAP + CCIE;   //下降沿沿捕获,P2.2为信号输入端
      P2SEL |= BIT2;                 //使用P2.2IO第二功能
}

/*******************************************************************************
定时器A中断函数
*******************************************************************************/
#pragma vector = TIMERA0_VECTOR
__interrupt void timerA0()
{
   cyc = CCR0 - LastCCR0;     //计算周期
   LastCCR0 = CCR0;           //保存CCR0的值
   TACTL = TASSEL_1 + MC_2+TACLR + TAIE;       //时钟ACLK,连续计数模式
   CCTL0 = CCIS_1 + CM_2 + SCS + CAP + CCIE;   //下降沿沿捕获,P2.2为信号输入端
}
/*******************************************************************************
返回周期值函数
*******************************************************************************/
unsigned int Getcyc()
{
    return cyc;
}
/*******************************************************************************
初始化IO
*******************************************************************************/
void IO_CLR()
{
    P1DIR = 0XFF; P1OUT = 0XFF;
    P2DIR = 0X00; P2OUT = 0XFF;
    P3DIR = 0XFF; P3OUT = 0XFF;
    P4DIR = 0XFF; P4OUT = 0XFF;
    P5DIR = 0XFF; P5OUT = 0XFF;
    P6DIR = 0XFF; P6OUT = 0XFF;
}

/*******************************************************************************
延时函数
*******************************************************************************/
void delay()
{
    uchar x,y;
      for(x=110;x>0;x--)
        for(y=100;y>0;y--);
}





#include  <msp430x14x.h>
#include "TIMERAC.H"
#define uchar unsigned char
#define uint unsigned int
#define wei_h (P5OUT |= BIT5)
#define wei_l (P5OUT &= ~BIT5)
#define duan_l   (P6OUT &= ~BIT6)
#define duan_h  (P6OUT |= BIT6)
uchar f[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                      0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar a[8]={0};
uchar wei[]= {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
int temp;
void init_sys();
int main(void)
{
    WDTCTL = WDTHOLD + WDTPW;
    IO_CLR();
    init_sys();
    Getcyc();
    temp = cyc*32768*2;   //计算信号频率计算
        a[0]= temp / 10000000;
        a[1]= temp / 1000000%10;
        a[2]= temp / 100000 % 10;
        a[3]= temp / 10000 % 10;
        a[4]= temp / 1000 % 10;
        a[5]= temp / 100 % 10;
        a[6]= temp / 10 % 10;
        a[7]= temp  % 10;
    uchar i;
    for(i=0;i<7;i++)
    {   
        P4OUT = f[a];
        duan_h;
        duan_l;
        P4OUT = 0xff;
        P4OUT = wei;
        wei_h;
        wei_l;
        delay();      
    }
    while(1);
}

/*******************************************************************************
初始化系统时钟
*******************************************************************************/
void init_sys()
{
    uchar i;
    BCSCTL1 &= ~XT2OFF;         //打开XT2高频晶体振荡器
    do
    {
        IFG1 &= ~OFIFG;             //清除晶振失败标志
        for(i = 0; i < 0xff; i++);    //等待8MHz晶体起振
    }
    while(IFG1 & OFIFG);                 //MCLK和SMCLK选择高频晶振
    BCSCTL2 = SELM_2 + SELS;       //主系统时钟和子系统时钟都选择8M
     InittimerA();                 //初始化定时器A
     //KeeptimerA(100);              //打开捕获模式
     _EINT();
}


新手刚学430  体谅
此帖出自MSP430论坛

点评

为什么在定时器中断里还要初始化定时器呢  详情 回复 发表于 2012-11-15 09:28

回复

使用道具 举报

366

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2012-11-15 09:28:11 | 显示全部楼层

回复 楼主 吴文杰 的帖子

为什么在定时器中断里还要初始化定时器呢

回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-9-23 11:47 , Processed in 0.299317 second(s), 18 queries , Redis On.

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