新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MSP430F449單片機RTC時鐘C語言程序(帶鬧鐘)

MSP430F449單片機RTC時鐘C語言程序(帶鬧鐘)

作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/201611/322546.htm

if((key_code==0x04)&&(function_flag==1))//減法

{

clock_flag=2;//清除鬧鐘標志位

if(function_ping2==1)

{

sec--;//秒減減

if(sec==0xff)//秒是否等于0

sec=59;//秒等于60

}

if(function_ping2==2)

{

min--;//分減減

if(min==0xff)//分是否等于0

min=59;//分等于60

}

if(function_ping2==3)

{

hour--;//小時減減

if(hour==0xff)//小時是否等于0

hour=23;//小時等于24

}

if(function_ping1==1)

{

day--;//天減減

if(day==0)//天是否等于0

day=tian;//天等于30/31/28/29

}

if(function_ping1==2)

{

month--;//月減減

if(month==0)//月是否等于0

month=12;//月等于13

tian=tianshu[month];

if(day>tian)

tian_flag=1;

else

tian_flag=0;

}

if(function_ping1==3)

{

year--;//年減減

if(year==1999)//年是否等于1999

year=2100;//年等于2100

if((year%4!=0)||(year0!=0)||(year@0==0))

{

tian=tianshu[month];

if(day>tian)

{

tian_flag=1;

}

else

tian_flag=0;

}

}

if(function_ping3==1)

{

nao_sec--;//鬧鐘秒減減

if(nao_sec==0xff)//鬧鐘秒是否等于0

nao_sec=59;//鬧鐘秒等于60

}

if(function_ping3==2)

{

nao_min--;//鬧鐘分減減

if(nao_min==0xff)//鬧鐘分是否等于0

nao_min=59;//鬧鐘分等于60

}

if(function_ping3==3)

{

nao_hour--;//鬧鐘小時減減

if(nao_hour==0xff)//鬧鐘小時是否等于0

nao_hour=23;//鬧鐘小時等于24

}

}

if((key_code==0x02)&&(function_flag==0))//沒有功能鍵按下時

{

clock_flag=2;//清除鬧鐘標志位

flag=1;//換屏標志位被按下

if(num_flag==1)//換屏位1

ping_flag=1;

if(num_flag==2)//換屏位2

ping_flag=2;

if(num_flag==3)//換屏位3

ping_flag=3;

}

if((key_code==0x04)&&(function_flag==0))

{

clock_flag=2;//清除鬧鐘標志位

}

key_code=0;//鍵值清零

}

voidleap_year(void)

{

tian=tianshu[month];//讀出每月天數(shù)表

if(daytian)

tian_flag=0;

if(month==2)

{

if((year%4==0)&&(year0!=0)||(year@0==0))//判斷是否是閏年

{

tian=29;//閏年2月天數(shù)修正

}

else

{

tian=28;//閏年2月天數(shù)修正

}

}

}

voidrtc()

{

if(++sec60)//秒加一

return;

sec=0;

if(++min60)//分加一

return;

min=0;

if(++hour24)//小時加一

return;

hour=0;

if(++day=tian)//天數(shù)加一

return;

day=1;//月加一

if(++month=12)

return;

month=1;

if(++year2100)//年加一

return;

year=2000;

}

voidrtc_show(void)

{

if((function_ping1!=0)&&(function_ping2==0)&&(function_ping3==0))

{

change_ping=0;//第一屏

}

elseif((function_ping1==0)&&(function_ping2!=0)&&(function_ping3==0))

{

change_ping=1;//第二屏

}

elseif((function_ping1==0)&&(function_ping2==0)&&(function_ping3!=0))

{

change_ping=2;//第三屏

}

if(change_ping==1)

{

if(function_ping2==0)//正常顯示

{

LCDMEM[0]=digit[sec];

LCDMEM[1]=digit[sec/10];

LCDMEM[2]=digit[min];

LCDMEM[3]=digit[min/10];

LCDMEM[4]=digit[hour];

LCDMEM[5]=digit[hour/10];

}

if(function_ping2==1)//秒閃爍

{

if(twinkle_num==0)//閃爍標志位

{

LCDMEM[0]=digit[sec];

LCDMEM[1]=digit[sec/10];

}

else

{

LCDMEM[0]=0;

LCDMEM[1]=0;

}

LCDMEM[2]=digit[min];

LCDMEM[3]=digit[min/10];

LCDMEM[4]=digit[hour];

LCDMEM[5]=digit[hour/10];

}

if(function_ping2==2)//分閃爍

{

if(twinkle_num==0)

{

LCDMEM[2]=digit[min];

LCDMEM[3]=digit[min/10];

}

else

{

LCDMEM[2]=0;

LCDMEM[3]=0;

}

LCDMEM[0]=digit[sec];

LCDMEM[1]=digit[sec/10];

LCDMEM[4]=digit[hour];

LCDMEM[5]=digit[hour/10];

}

if(function_ping2==3)//小時閃爍

{

if(twinkle_num==0)

{

LCDMEM[4]=digit[hour];

LCDMEM[5]=digit[hour/10];

}

else

{

LCDMEM[4]=0;

LCDMEM[5]=0;

}

LCDMEM[0]=digit[sec];

LCDMEM[1]=digit[sec/10];

LCDMEM[2]=digit[min];

LCDMEM[3]=digit[min/10];

}

}

if(change_ping==0)

{

if(function_ping1==0)//正常顯示

{

LCDMEM[0]=digit[(day)];

LCDMEM[1]=digit[(day)/10];

LCDMEM[2]=digit[(month)];

LCDMEM[3]=digit[(month)/10];

LCDMEM[4]=digit[year];

LCDMEM[5]=digit[(year/10)];

}

if(function_ping1==1)//天閃爍

{

if(twinkle_num==0)

{

LCDMEM[0]=digit[day];

LCDMEM[1]=digit[day/10];

}

else

{

LCDMEM[0]=0;

LCDMEM[1]=0;

}

LCDMEM[2]=digit[(month)];

LCDMEM[3]=digit[(month)/10];

LCDMEM[4]=digit[year];

LCDMEM[5]=digit[(year/10)];

}

if(function_ping1==2)//月閃爍

{

if(twinkle_num==0)

{

LCDMEM[2]=digit[(month)];

LCDMEM[3]=digit[(month)/10];

}

else

{

LCDMEM[2]=0;

LCDMEM[3]=0;

}

LCDMEM[0]=digit[day];

LCDMEM[1]=digit[day/10];

LCDMEM[4]=digit[year];

LCDMEM[5]=digit[(year/10)];

}

if(function_ping1==3)//年閃爍

{

if(twinkle_num==0)

{

LCDMEM[4]=digit[year];

LCDMEM[5]=digit[(year/10)];

}

else

{

LCDMEM[4]=0;

LCDMEM[5]=0;

}

LCDMEM[0]=digit[(day)];

LCDMEM[1]=digit[(day)/10];

LCDMEM[2]=digit[(month)];

LCDMEM[3]=digit[(month)/10];

}

}



關(guān)鍵詞: MSP430F449單片機RTC時

評論


技術(shù)專區(qū)

關(guān)閉