📄 main.c
字号:
#include <msp430x14x.h>
#include "ds1302.h"
#define dpydat P4OUT
#define dpy0 BIT2;
#define dpy1 BIT3;
#define dpy2 BIT4;
#define dpy3 BIT5;
#define dpy4 BIT6;
#define dpy5 BIT7;
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int min10,min1,hour10,hour1,sec10,sec1,secflash,dpybit=0x00;
void gettime()
{
unsigned char hour,min,sec;
hour=rtc_gethour();
min=rtc_getmin();
sec=rtc_getsec();
hour1=hour%10;
hour10=hour/10;
min1=min%10;
min10=min/10;
sec1=sec%10;
sec10=sec/10;
if (sec%2)
secflash=1;
else
secflash=0;
}
void rtcinit ()
{
rtc_wp(0);
rtc_stop(0);
rtc_charger(1,1);
}
void sysinit ()
{
P4OUT = 0xff;
P4DIR = 0xff;
P6OUT = 0xfc;
P6DIR = 0xfc;
IE1 |= WDTIE; //开WDT中断
}
void main ()
{
WDTCTL = WDT_ADLY_1_9; //WDT工作于定时模式,定时时间为(2^6)/(2^15)s
sysinit ();
rtcinit ();
_EINT();
while (1)
{
gettime();
}
}
#pragma vector=WDT_VECTOR
__interrupt void wdtisr ()
{
switch (dpybit)
{
case 0: P6OUT |= 0xfc;
dpydat = ~table[hour10];
P6OUT &= ~dpy5;
break;
case 1: P6OUT |= 0xfc;
dpydat = ~(table[hour1]|0x80);
P6OUT &= ~dpy4;
break;
case 2: P6OUT |= 0xfc;
dpydat = ~table[min10];
P6OUT &= ~dpy3
break;
case 3: P6OUT |= 0xfc;
// if (secflash)
dpydat = ~(table[min1] | 0x80);
// else
// dpydat = ~table[min1];
P6OUT &= ~dpy2;
break;
case 4: P6OUT |= 0xfc;
dpydat = ~table[sec10];
P6OUT &= ~dpy1;
break;
case 5: P6OUT |= 0xfc;
dpydat = ~table[sec1];
P6OUT &= ~dpy0;
break;
}
dpybit++;
dpybit=dpybit%6;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -