|
本帖最后由 達(dá)達(dá)君 于 2018-11-30 22:36 編輯
源の代碼:
//編程用Timer_A控制 MSP430F249單片機(jī)P4口的8個(gè)LED
//以0.5秒的間隔從P4.0到P4.7依次發(fā)光。
#include <msp430f249.h>
unsigned char md = 0x01;
void PortInit(void) {
P4SEL = 0x00; // P4 I/O
P4DIR = 0xff; // P4 輸出
P4OUT = 0Xff; // 初始時(shí),所有LED均不亮
}
void TimerInit(void) {
CCR0 = 16384; //ACLK=32768Hz,定時(shí)時(shí)間間隔0.5S
CCTL0 = CCIE; //CCR0中斷允許
TACTL = TASSEL_1+MC_1;//定時(shí)器A時(shí)鐘源ACLK,增計(jì)數(shù)模式
}
void main(void) {
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
PortInit();
TimerInit();
_BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/ interrupt
}
#pragma vector = TIMERA0_VECTOR //定時(shí)器A0中斷服務(wù)唾棄
__interrupt void Timer_A(void) {
P4OUT = ~md; //P4輸出位控值,控制一個(gè)引腳的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位,恢復(fù)位模型初值
}
}
|
-
-
sy1-2.zip
2018-11-29 22:21 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
879 Bytes, 下載次數(shù): 9, 下載積分: 黑幣 -5
節(jié)日燈實(shí)驗(yàn)
評(píng)分
-
查看全部評(píng)分
|