⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main1.c

📁 MSP430F149实现对周期的计数,进而可以对输入周期性信号的频率进行技术
💻 C
字号:
#include<msp430x14x.h>
#define   uint  unsigned int
#define   uchar unsigned  char
  uint  str[100]={0};
  uchar  a=0;
#define led  BIT7
const   uchar  segment[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
float count=0;
uint temp2=0,temp1=0;
uchar a1=0,a2=0,a3=0,a4=0;

void int_clk()         //p2.0口输出方波
{
  uchar i;
  BCSCTL1&=~XT2OFF;    //初始化
  BCSCTL2|=SELM1+SELS;
  P2DIR=0;   //P2口设为输入方式
  P2SEL=0;   //将P2口设为一般的I/O口
  P2DIR|=BIT0;  //P2.0  P2.1设为输出方向的I/O口
  P2DIR|=BIT1;
  do
  {
    IFG1&=~OFIFG;   //清除OSFault标志
       for(i=0;i<100;i++)   //延时
    _NOP();
   
    }
  while((IFG1&OFIFG)!=0);
  IFG1&=~OFIFG;
}




void int_spi()
{
  U0CTL|=SWRST;
  U0CTL|=CHAR+SYNC+MM;
  U0CTL|=SSEL1+SSEL0+STC;
  U0CTL|=CKPH;
  U0CTL&=~CKPL;
  U0BR0=0X02;
  U0BR1=0X00;
  U0MCTL=0X00;
  ME1|=USPIE0;
  U0CTL&=~SWRST;
  IE1&=~UTXIE0;
  IE1&=~URXIE0;
  P3SEL|=0X0E;
  P3DIR|=BIT2+BIT4;
}
write_byte(uchar byte)
{
 U0TXBUF=byte;
 while((IFG1&UTXIFG0)==0);
 IFG1&=~UTXIFG0;
 }
 display(uchar  data)
 {P2DIR|=led;
  P2OUT|=led; 
  write_byte(segment[data]);
  P2OUT&=~led;
  }
  delay()
  {
    uint i,j;
    for(i=0;i<=1000;i++)
    {
    for(j=0;j<=1000;j++)
    ;
    }
  }
  void int_cap()
  { P1SEL=0x04;
    TACCTL1|=CM0+SCS+CAP+CCIE;
    TACTL|=TASSEL1+MC1;
 }
 #pragma  vector=TIMERA1_VECTOR
 __interrupt void Timer_A(void)
 {  
    switch(TAIV)
    {
      case 2:{flag=1;}
      case 4:break;
      case 10:break;
      }
   }
   
   
   void main()
   {
   uchar temp=0;
   WDTCTL=WDTPW+WDTHOLD;
   int_clk();
   int_cap();
   int_spi();
   _EINT();
   while(1)
   {
   while(flag)
   {
   _DINT();
   flag=0;
   str[temp]=TACCR1;
   temp++;
   if(temp==2)
   {
    count=str[1]-str[0];
    count=800/count;
    count=count*1000;
    temp2=count;
    temp1=temp2/1000;
    a1=temp1;
    temp2=temp2-temp1*1000;
    temp1=temp2/100;
    temp2=temp2-temp1*100;
    a2=temp1;
    temp1=temp2/10;
    temp2=temp2-temp1*10;
    a3=temp1;
    a4=temp2;
    display(a4);
    display(a3);
    display(a2);
    display(a1);
    str[0]=0;
    str[1]=0;
    temp=0;
    delay();
    delay();
    }
    _EINT();
    }
   }
    } 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -