如何用芯片MSP430和IAR软件的C语言编一个流水灯程序

如何用芯片MSP430和IAR软件的C语言编一个流水灯程序,第1张

#include<msp430x14x.h>

#define uint unsigned int

delay(uint);

void main()

{

WDTCTL = 0x5A80

uint ch[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}

uint i,j

P2DIR = 0xff

P2OUT = 0xff//低电平点亮明拦

while(1)

{

for(i=0i<8i++)

{

P2OUT = ch[i]

delay(50000)

}

for(j=6j>0j--)

{

P2OUT = ch[j]

delay(50000)

}

}

}

void delay(uint z)

{

uint a

for(a=0a<za++)

}

1.这是较为简单的流水灯程序,没有使用定时器,只是简单的延时纯蔽;

若要精确延时,需要设置定时器A或做槐州B.

2.也可以通过移位 *** 作来实现流水灯,移位 *** 作放入中断内最好

/*

流水灯,P4口连接LED

*/

#include

"msp430x14x.h"

//__interrupt

void

TimerB_ISR(void)

void

Init_Port(void)

void

Init_TimerB(void)

void

InitSystemClock(void)

//

初始化系统时钟

unsigned

char

led

void

main(

void

)

{

//

Stop

watchdog

timer

to

prevent

time

out

reset

WDTCTL

=

WDTPW

+

WDTHOLD//关闭看门狗

InitSystemClock()

Init_Port()

Init_TimerB()

_EINT()

led=0x01

while(1)/橘悄和/LPM0

}

void

InitSystemClock(void)

//

初始化系统时钟

{

unsigned

char

i

BCSCTL1=0x00//Set

430

clk

开启XT2,DOC的标称频率为最低

且不分频;XT1为低速晶体(32.768K)

BCSCTL2=SELM_2+SELS//选择MCLK

SCLK的时钟源为高速时钟

不分频,均为8M

do

{

IFG1&=~OFIFG

for(i=0xffi>0i--)

}

while

((IFG1&OFIFG)!=0)

P5DIR=BIT4+BIT5+BIT6

P5SEL|=BIT4+BIT5+BIT6/圆盯/将MCLK

SCLK

ACLK分别输出至P5.4

5

6口

}

void

Init_Port(void)

{

P4DIR=0XFF

P4SEL=0

return

}

void

Init_TimerB(void)

{

/运尘/选择ACLK,清除TAR

TBCTL

=TBSSEL0

+TBCLR

//TBCCRO允许中断

TBCCTL0=

CCIE

//时间间隔为1s

TBCCR0=32768

//增计数模式

TBCTL

|=MC0

return

}

#pragma

vector=TIMERB0_VECTOR

__interrupt

void

TimerB_ISR(void)

{

led=(led==0x80)?

0x01:(led<<1)//led的流水灯的输出值计算:循环左移

P4OUT

=led

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12554353.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存