新聞中心

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

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

        作者: 時間:2016-11-27 來源:網絡 收藏

        本文引用地址:http://www.104case.com/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];//讀出每月天數表

        if(daytian)

        tian_flag=0;

        if(month==2)

        {

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

        {

        tian=29;//閏年2月天數修正

        }

        else

        {

        tian=28;//閏年2月天數修正

        }

        }

        }

        voidrtc()

        {

        if(++sec60)//秒加一

        return;

        sec=0;

        if(++min60)//分加一

        return;

        min=0;

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

        return;

        hour=0;

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

        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];

        }

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 汾阳市| 汉寿县| 贡嘎县| 家居| 陈巴尔虎旗| 江达县| 安乡县| 洛浦县| 古田县| 惠州市| 恭城| 图木舒克市| 高密市| 老河口市| 遵义县| 天等县| 临沂市| 龙陵县| 惠来县| 株洲县| 吉水县| 永修县| 盱眙县| 南昌县| 杭锦后旗| 庆阳市| 南和县| 河东区| 瑞丽市| 临安市| 秀山| 莱阳市| 绥阳县| 武清区| 奉新县| 怀化市| 玛曲县| 高尔夫| 长海县| 慈溪市| 大安市|