程序如下,实现数据date的显示:
/**********************************************
程序功能:在六位数码管上显示六个数字012345
-----------------------------------------------
测试说明:观察数码管显示
***********************************************/
#include <msp430x14x.h>
#include "BoardConfig.h"
//数码管7位段码:0--f
uchar scandata[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//记录显示位数的全局变量
//uchar cnt = 0;
uchar date=237;
uchar date_a,date_b,date_c;
uchar flag = 0;
/********************主函数********************/
void main(void)
{
WDTCTL = WDT_ADLY_1_9; // 设置内部看门狗工作在定时器模式,1.9ms中断一次
IE1 |= WDTIE; // 使能看门狗中断
BoardConfig(0x88);
P4DIR = 0xff; //设置P4,P5的IO方向为输出
P5DIR = 0xff;
P4OUT = 0x00; //设置P4,P5的输出初值
P5OUT = 0xff;
date_a = date/100;
date_b = date%100/10;
date_c = date%10;
_BIS_SR(LPM3_bits + GIE); //CPU进入LPM3低功耗模式,同时打开全局中断
}
/*******************************************
函数名称:watchdog_timer
功 能:看门狗中断服务函数,在这里输出数码管的
段选和位选信号
参 数:无
返回值 :无
********************************************/
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
if(flag==0)
{
P5OUT = 0xff;
P4OUT = scandata[date_a];
P5OUT &=~(1<<flag);
flag=1;
}
if(flag==1)
{
P5OUT = 0xff;
P4OUT = scandata[date_b];
P5OUT &=~(1<<flag);
flag=2;
}
if(flag==2)
{
P5OUT = 0xff;
P4OUT = scandata[date_c];
P5OUT &=~(1<<flag);
flag = 0;
}
}
BoardConfig.h是板子的配置文件。
程序下载后运行只显示一个数据7,另外两个数据2、3都不显示,不知道为什么,
也不知道哪里出了问题,自己是在找不到问题了,请各位帮忙看看....
跪谢啊 |