/***********************************************
程序功能:实现流水灯以三种流动方式和四种流动速度
的不同组合而进行点亮"流动"
------------------------------------------------
拨码开关设置:将LED位拨至ON,其余拨至OFF
测试说明:观察流水灯流动顺序和速度的变化
************************************************/
#include typedef unsigned int uint; uint i = 0,j = 0,dir = 0; uint flag = 0,speed = 0; //flag--灯光流动方式,speed--灯光流动速度 /****************主函数****************/ void main(void) { /*下面六行程序关闭所有的IO口*/ P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换 P5OUT &= ~BIT7; CCTL0 = CCIE; //使能CCR0中断 CCR0 = 50000; TACTL = TASSEL_2 + ID_3 + MC_1; //定时器A的时钟源选择SMCLK,增计数模式 P2DIR = 0xff; //设置P2口方向为输出 P2OUT = 0xff; _EINT(); //使能全局中断 LPM0; //CPU进入LPM0模式 } /******************************************* 函数名称:Timer_A 功 能:定时器A的中断服务函数,在这里通过标志 控制流水灯的流动方向和流动速度 参 数:无 返回值 :无 ********************************************/ #pragma vector = TIMERA0_VECTOR __interrupt void Timer_A (void) { if(flag == 0) { P2OUT = ~(0x80>>(i++)); //灯的点亮顺序D8 -> D1 } else if(flag == 1) { P2OUT = ~(0x01<<(i++)); //灯的点亮顺序D1 -> D8 } else { if(dir) //灯的点亮顺序 D8 -> D1,D1 -> D8,循环绕圈 { P2OUT = ~(0x80>>(i++)); } else { P2OUT = ~(0x01<<(i++)); } } if(i == 8) { i = 0; dir = ~dir; } j++; if(j == 40) { i = 0; j = 0; flag++; if(flag == 4) flag = 0; switch(speed) { case 0: TACTL &=~ (ID0 + ID1); TACTL |= ID_3; break; case 1: TACTL &=~ (ID0 + ID1); TACTL |= ID_2; break; case 2: TACTL &=~ (ID0 + ID1); TACTL |= ID_1; break; case 3: TACTL &=~ (ID0 + ID1); TACTL |= ID_0; break; default: break; } if(flag != 3) speed++; if(speed == 4) speed = 0; } }
上一篇:LCD1602动态显示--基于MSP430F149单片机
下一篇:初学MSP430——按键中断控制小灯翻转
推荐阅读最新更新时间:2024-11-09 12:41
设计资源 培训 开发板 精华推荐
- FRDM-K66F,基于 MK66FN2M0VMD18 的 Kinetis K66、K65 和 K26 MCU 的 Freedom 开发平台
- STEVAL-CCA030V1, STA350BW 声音终端, 2通道高效数字音频系统板
- 使用 LTC3637HMSE 4V 至 64V 输入至 -12V 输出正负稳压器的典型应用
- MAXREFDES1123:采用MAX1523的80V / 5mA高压紧凑型升压电源
- I2C接口的CAT9532 16位可编程LED调光器的典型应用
- 使用 Analog Devices 的 LT1496 的参考设计
- LT6656AIDC-1.25、1.25V 低功率 ADC 电压基准的典型应用
- 2019电赛C题-电路负载及故障检测装置-设计报告(国一,东南大学)
- 使用 LTC3612HUDC 通用降压稳压器的典型应用,采用陶瓷电容器,2.25MHz
- FEBFOD8012-RS485-GEVB:双向逻辑门光电耦合器为 RS485 接口提供经过验证的可靠隔离