找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3486|回复: 1
打印 上一主题 下一主题
收起左侧

MSP430实现节日灯变换显示(3种以上花样)

[复制链接]
跳转到指定楼层
楼主
ID:436127 发表于 2018-11-29 22:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 达达君 于 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

节日灯实验

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:438327 发表于 2018-12-3 13:15 | 只看该作者
支持支持
回复

使用道具 举报

无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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