找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 2420|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

MSP430單片機(jī)為啥全局變量老是自動(dòng)清零,是中斷的問(wèn)題嗎?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:438917 發(fā)表于 2019-3-31 18:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include<msp430g2553.h>
#include <stdio.h>
int count=0;
int LED[4];
long fre;
//頻率部分
unsigned char LED_0F[] =
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0xbf};
  // 0  1   2    3 4  5   6    7 8  9   A    b C    d   E    F    -

/*************延時(shí)函數(shù)************/
void delay(int t)
{
  int i,j;
  for(i=0;i<t;i++)
    for(j=0;j<10;j++);
}
//1s延時(shí)的計(jì)數(shù)閘門(mén)
void delay1(void)
{
  unsigned long i;
  for(i=0;i<119000;i++)
  {
    _NOP();   // 該函數(shù)用來(lái)產(chǎn)生一個(gè) MSP430 系統(tǒng)時(shí)鐘周期的延時(shí)
  }
}
/*************430初始化函數(shù)************/
void LED_OUT(char X)
{
char i;
for(i=8;i>=1;i--)
{
  if (X&0x80) P2OUT |= 0x01; else P2OUT &= ~0x01;
  X<<=1;
  P2OUT &= ~0x04;
  P2OUT |= 0x04;         // SCK 上升沿操作 數(shù)據(jù)寫(xiě)入寄出去
}
}
void display(void)
{   // 聲明計(jì)數(shù)數(shù)據(jù)變量
  unsigned char *led;
  char i;
    led=LED_0F+LED[0];
    i=*led;
    LED_OUT(i);   // 段選
    LED_OUT(0x01);                 // 位選
    P2OUT &= ~0x02;                  
    P2OUT |= 0x02;                  // RCK上升沿操作 寄出去輸出到數(shù)碼
    led=LED_0F+LED[1];
    i=*led;
    LED_OUT(i);   // 段選
    LED_OUT(0x02);                 // 位選
    P2OUT &= ~0x02;                  
    P2OUT |= 0x02;                  // RCK上升沿操作 寄出去輸出到數(shù)碼
    led=LED_0F+LED[2];
    i=*led;
    LED_OUT(i);   // 段選
    LED_OUT(0x04);                 // 位選
    P2OUT &= ~0x02;                  
    P2OUT |= 0x02;                  // RCK上升沿操作 寄出去輸出到數(shù)碼
    led=LED_0F+LED[3];
    i=*led;
    LED_OUT(i);   // 段選
    LED_OUT(0x08);                 // 位選
    P2OUT &= ~0x02;                  
    P2OUT |= 0x02;                  // RCK上升沿操作 寄出去輸出到數(shù)碼
}
/*************主函數(shù)************/
void init(void)
{
  //Time0初始化
  TA1CTL = TASSEL_1 + MC_1 + TAIE;                                
  TA1CCTL0 = CCIE;
  TA1CCR0 = 32768;
  
  //Time1初始化
  TA0CCTL1 = CM_1 + CCIS_0  + CAP + CCIE;
  P1DIR &= ~BIT2;//p2.0output others input
  P1SEL |= BIT2;
  _EINT();
}
void main(void)
{
  WDTCTL=WDTPW+WDTHOLD;   // 關(guān)閉看門(mén)狗
  P2DIR =BIT0+BIT1+BIT2;
  P1DIR=BIT6;
  init();
   LED[0]=0;                           //
   LED[1]=0;
   LED[2]=0;
   LED[3]=0;
  
  while(1)
  {  
      display();
  }
}
#pragma vector=TIMER1_A0_VECTOR
__interrupt void Timer1(void)
{  
  _DINT();
  fre=count;
  count=0;
   if(fre>=10000)
  {
    LED[0]=fre/10000;
    LED[1]=fre%10000/1000;
    LED[2]=fre%10000%1000/100;
    LED[3]=10;
  }
   else
  {
    LED[0]=fre/1000;
    LED[1]=fre%1000/100;
    LED[2]=fre%1000%100/10;
    LED[3]=fre%1000%100%10;
  }
  P1OUT ^= BIT6;
  _EINT();
}
#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer0(void)
{   
    _DINT();
    switch(TAIV)//向量查詢
      {
      case 2:count++;  //捕獲中斷
      break;//CCR1
      case 4:break;//CCR2
      case 10:
      break;
      }
     _EINT();
}



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

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表