|
本帖最后由 达达君 于 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
节日灯实验
评分
-
查看全部评分
|