?? main.c
字號:
/**********************************************
程序功能:在六位數碼管上顯示一個繞動的光圈,光
圈的速度自由變化(快-->慢-->快)
-----------------------------------------------
測試說明:觀察數碼管顯示
***********************************************/
#include <msp430x14x.h>
#include "BoardConfig.h"
#define NBIT(x) ~(1 << x)
//繞動光圈對應的字符
uchar scandata[16] = {0x01,0x01,0x01,0x01,0x01,0x01,0x20,0x10,
0x08,0x08,0x08,0x08,0x08,0x08,0x04,0x02};
//顯示字符的控制變量
uchar step = 0;
//繞動圈數的變量
uint circle = 0;
/********************主函數********************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //關閉看門狗
BoardConfig(0x88);
P4DIR = 0xff; //設置P4,P5的IO方向為輸出
P5DIR = 0xff;
P4OUT = 0x00; //設置P4,P5的輸出初值
P5OUT = 0xff;
CCR0 = 164;
TACCTL0 |= CCIE; //使能比較中斷
TACTL |= TASSEL_1 + MC_1; //ACLK, up mode
_BIS_SR(LPM3_bits + GIE); //CPU進入LPM3低功耗模式,同時打開全局中斷
}
/*******************************************
函數名稱:TimerA_ISR
功 能:定時器A中斷服務函數,在這里輸出數碼管的
段選和位選信號
參 數:無
返回值 :無
********************************************/
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA_ISR(void)
{
step++;
if(step == 16)
{
step = 0;
circle++;
if(circle == 10) //如果已經繞動了10圈
{
circle = CCR0;
CCR0 += circle; //速度降為原來的一半
if(CCR0 > 32700) //如果速度到達底線,則從頭開始
CCR0 = 164;
circle = 0;
}
}
switch(step)
{
case 0:
P5OUT = NBIT(5);
P4OUT = scandata[step];
break;
case 1:
P5OUT = NBIT(4);
P4OUT = scandata[step];
break;
case 2:
P5OUT = NBIT(3);
P4OUT = scandata[step];
break;
case 3:
P5OUT = NBIT(2);
P4OUT = scandata[step];
break;
case 4:
P5OUT = NBIT(1);
P4OUT = scandata[step];
break;
case 5:
P5OUT = NBIT(0);
P4OUT = scandata[step];
break;
case 6:
P5OUT = NBIT(0);
P4OUT = scandata[step];
break;
case 7:
P5OUT = NBIT(0);
P4OUT = scandata[step];
break;
case 8:
P5OUT = NBIT(0);
P4OUT = scandata[step];
break;
case 9:
P5OUT = NBIT(1);
P4OUT = scandata[step];
break;
case 10:
P5OUT = NBIT(2);
P4OUT = scandata[step];
break;
case 11:
P5OUT = NBIT(3);
P4OUT = scandata[step];
break;
case 12:
P5OUT = NBIT(4);
P4OUT = scandata[step];
break;
case 13:
P5OUT = NBIT(5);
P4OUT = scandata[step];
break;
case 14:
P5OUT = NBIT(5);
P4OUT = scandata[step];
break;
case 15:
P5OUT = NBIT(5);
P4OUT = scandata[step];
break;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -