使用MSP430F2274芯片,上课的时候想到的,很不完善,后来改的就好多了,只能用来做演示玩。
#include "msp430x22x4.h"
extern void Delay();
extern void xianshi();
int qian,bai,shi,ge;
static unsigned int number[]={
0x3f,0x06,0x5b,0x4f, // 0 1 2 3
0x66,0x6d,0x7d,0x07, // 4 5 6 7
0x7f,0x6f,0x77,0x7c, // 8 9 A B
0x39,0x5e,0x79,0x71, // C D E F
0xbf,0x86,0xdb,0xcf, // 0. 1. 2. 3.
0xe6,0xed,0xfd,0x87, // 4. 5. 6. 7.
0xff,0xef // 8. 9.
};
int main()
{
WDTCTL=WDTPW+WDTHOLD; //关看门狗
P3DIR |= 0xFF; //P3.4-P3.7为数码管的4位
P4DIR |= 0XFF; //P4为数码管段输出
P3OUT = 0X00;
P4OUT = 0X00;
while(1)
{
qian = 0;
for( ;qian < 10;qian++)
{
bai = 0;
for( ;bai < 10;bai++)
{
shi = 0;
for( ;shi < 10;shi++)
{
ge = 0;
for( ;ge < 10;ge++)
{
xianshi();
}
}
}
}
}
}
//==============================================
//函数名: numbershow
//function: 循环显示两位数字
//返回值: 无
//==============================================
void xianshi()
{
int i;
for(i = 7;i > 0;i--)
{
P4OUT = number[qian];
P3OUT = 0Xe0;
Delay(5);
P4OUT = number[bai];
P3OUT = 0xd0;
Delay(5);
P4OUT = number[shi + 16]; //十位数后面的点一直亮着
P3OUT = 0Xb0;
Delay(5);
P4OUT = number[ge];
P3OUT = 0x70;
Delay(5);
}
}
//===========================================
//函数名:延时
//返回值: 无
//===========================================
void Delay(int count)
{
int i;
while(--count != 0)
{
for(i = 0; i < 125; i++);
} // i 从0加到125,在12M下CPU大概耗时1毫秒
}