📄 main.c
字号:
#include <msp430x14x.h>
#include "12864.c"
#include "key.c"
#include "iic.c"
uchar hour,minute,second;
uchar year,month,day;
uchar ii=0;
void fixshow(void);
void initSys(void);
void initTimer(void);
void disTime(void);//显示时间
void timecount(void);//时间运算
void setupTime(void);//设置时间
void initIIC(void);
void Delay(long);
void returnTime(void);//从存储器得到时间
unsigned char IIC(unsigned char *DataBuff,char ByteQuantity,unsigned int Address, unsigned char ControlByte);//iic操作
unsigned char a[8];//时间存储临时变量
void main(void)
{
WDTCTL=WDTPW+WDTHOLD;
//initSys();
init12864();
//Delay(100);
initKey();
initTimer();
fixshow();
while(1)
{
setupTime();
disTime();
timecount();
}
}
void initSys(void)
{
unsigned int x0;
BCSCTL1&=~XT2OFF;//打开XT2振荡器
do
{
IFG1&=~OFIFG;
for(x0=0xff;x0>0;x0--);
}while((IFG1&OFIFG)!=0);
BCSCTL2=SELM_2+SELS;//选择MCLK,SMCLK为XT2;SELS为选择SMCLK,8M
//BCSCTL2=SELM_3;//MCLK选择为32.768k
IFG1&=~OFIFG;
}
#pragma vector=TIMERA0_VECTOR
__interrupt void timeA()
{
ii++;
if(ii==20)
{
second++;
ii=0;
}
}
void fixshow()
{
clr();
display(0,32,dian);
display(0,48,zi);
display(0,65,zhong);
display3(2,16,num[2]);
display3(2,24,num[0]);
display3(2,32,num[0]);
display3(2,40,num[8]);
display(2,48,nian);
display3(2,64,num[7]);
display(2,72,yue);
display3(2,88,num[1]);
display3(2,96,num[0]);
display(2,96,ri);
}
void initTimer()
{
TACTL|=TASSEL_2+ID_3;
TACTL=TASSEL1+TAR ;//SMCLK, clear TAR
//#define TASSEL_0 (0*0x100u) /* Timer A clock source select: 0 - TACLK */
//#define TASSEL_1 (1*0x100u) /* Timer A clock source select: 1 - ACLK */
//#define TASSEL_2 (2*0x100u) /* Timer A clock source select: 2 - SMCLK */
//#define TASSEL_3 (3*0x100u) /* Timer A clock source select: 3 - INCLK */
CCTL0=CCIE;
CCR0=50000;
//#define MC_0 (0*0x10u) /* Timer A mode control: 0 - Stop */
//#define MC_1 (1*0x10u) /* Timer A mode control: 1 - Up to CCR0 */
//#define MC_2 (2*0x10u) /* Timer A mode control: 2 - Continous up */
//#define MC_3 (3*0x10u) /* Timer A mode control: 3 - Up/Down */
TACTL|=MC_1;
}
void disTime()
{
display3(4,32,num[1]);
display3(4,40,num[6]);
display3(4,48,colon);
display3(4,56,num[minute/10]);
display3(4,64,num[minute%10]);
display3(4,72,colon);
display3(4,80,num[second/10]);
display3(4,88,num[second%10]);
}
void timecount()
{
if(second>=60)
{
second=0;
minute++;
}
}
void setupTime()
{
if(value==1)
{
minute++;
value=0;
}
if(value==2)
{
minute--;
value=0;
}
if(value==3)
{
hour++;
value=0;
}
if(value==4)
{
hour--;
value=0;
}
if(value==5)//存储数据
{
a[0]=minute;
a[1]=hour;
//a[2]=day;
//a[3]=month;
iic_check=IIC(a,2,0x00,(AT24_ADD|write));
}
if(value==6)
{
returnTime();
}
}
void Delay(long v)
{
while(v>0)v--;
}
void returnTime(void)
{
iic_check=IIC(a,2,0x00,(AT24_ADD|read));
minute=a[0];
hour=a[1];
//day=a[2];
//month=a[3];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -