標題: MSP430實現(xiàn)節(jié)日燈變換顯示(3種以上花樣) [打印本頁]

作者: 達達君    時間: 2018-11-29 22:22
標題: MSP430實現(xiàn)節(jié)日燈變換顯示(3種以上花樣)
本帖最后由 達達君 于 2018-11-30 22:36 編輯

源の代碼:

//編程用Timer_A控制 MSP430F249單片機P4口的8個LED
//以0.5秒的間隔從P4.0到P4.7依次發(fā)光。
#include <msp430f249.h>
unsigned char md = 0x01;
void PortInit(void) {
  P4SEL = 0x00;   // P4 I/O
  P4DIR = 0xff;   // P4 輸出
  P4OUT = 0Xff;   // 初始時,所有LED均不亮
}

void TimerInit(void) {
  CCR0 = 16384;   //ACLK=32768Hz,定時時間間隔0.5S
  CCTL0 = CCIE;   //CCR0中斷允許
  TACTL = TASSEL_1+MC_1;//定時器A時鐘源ACLK,增計數(shù)模式
}
void main(void) {
  WDTCTL = WDTPW + WDTHOLD;       // Stop WDT
  PortInit();
  TimerInit();
  _BIS_SR(LPM3_bits + GIE);       // Enter LPM3 w/ interrupt
}

#pragma vector = TIMERA0_VECTOR  //定時器A0中斷服務唾棄
__interrupt void Timer_A(void)   {
  P4OUT = ~md;    //P4輸出位控值,控制一個引腳的LED亮
  md <<= 1;   //右移位模型
  while(1) {
    int i=0,j,k;
    if(i==0) {    //花樣1
      md = 0x42;
      P4OUT = ~md;
      i++;
    }
    for(j=0;j<5;j++)
      for(k=0;k<30000;k++);

    if(i==1) {    //花樣2
      md = 0xa5;
      P4OUT = ~md;
      i++;
    }
    for(j=0;j<5;j++)
      for(k=0;k<30000;k++);

    if(i==2) {    //花樣3
      md = 0x66;
      P4OUT = ~md;
      i++;
    }
    for(j=0;j<5;j++)
      for(k=0;k<30000;k++);

    if(i==3) {     //花樣4
      md = 0x99;
      P4OUT = ~md;
      i++;
    }
    for(j=0;j<5;j++)
      for(k=0;k<30000;k++);

    if(md==0)md = 0x01; //如掃描完8位,恢復位模型初值
  }

}





sy1-2.zip

879 Bytes, 下載次數(shù): 9, 下載積分: 黑幣 -5

節(jié)日燈實驗


作者: qwj5201314    時間: 2018-12-3 13:15
支持支持




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1