|
本帖最后由 達達君 于 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
2018-11-29 22:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
879 Bytes, 下載次數: 9, 下載積分: 黑幣 -5
節日燈實驗
評分
-
查看全部評分
|