标题: MSP430实现节日灯变换显示(3种以上花样) [打印本页]

作者: 达达君    时间: 2018-11-29 22:22
标题: MSP430实现节日灯变换显示(3种以上花样)
本帖最后由 达达君 于 2018-11-30 22:36 编辑

源の代码:

//编程用Timer_A控制 MSP430F249单片机P4口的8个LED
//以0.5秒的间隔从P4.0到P4.7依次发光。
#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,增计数模式
}
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, 下载次数: 9, 下载积分: 黑币 -5

节日灯实验


作者: qwj5201314    时间: 2018-12-3 13:15
支持支持




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1