亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? clock_pic16f877.c

?? 用PIC16F877的c語言寫的一個時鬧鐘程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
用c語言寫的一個時鬧鐘程序

單片機用16F877,主時鐘用20MHz,用32768作定時時間。可以實現2路定鬧,每一路都可分別設置和開關,采用4x4鍵盤,16x2的字符型LCD顯示。連線在程序開頭有說明。
程序的功能:
(1)上電后LCD背光打開,并顯示倒計時5秒,然后時鐘開始工作。
(2)用模式鍵(*)切換模式,如顯示時間、日期、鬧鐘1、鬧鐘2等,并且可以用上、下鍵控制加1、減1或是鬧鐘的On、Off。
(3)原程序有16個鍵,包括0~9數字鍵,可以直接輸入要設置的時間值,但后來將數字鍵取消了,你仍然可以通過修改程序的部分注釋恢復此功能。
(4)鬧鐘有2路,時間到后鬧2分鐘,可按任意鍵取消本次鬧鐘。鬧鐘響時有2種音調,是用PIC的PWM實現的。
(5)按任意鍵可打開背光,1分鐘后自動關閉背光。
(6)RA0~RA3為按鍵掃描輸入,應接下拉電阻。



主程序 
//    FileName:    Main.c
//    MCU:        Microchip PIC16F877
//    Tool:        CCS-C compiler
//    Author:        KingEDA, MSN:kingeda@163.com, skype:kingeda, E-mail:kingeda@163.com
//                Website: http://www.EDAKING.com
//    Description:
//    A timer program
//    Ver    0.1:    2003-03-31, all clock function with date display, 2 way alarm.
//    Ver 0.2:    2003-05-05, (1) Alarm default is on,modify alarm1 time to 7:00:00,
//                            and alarm2 to 13:30:00.
//                            (2) Backlight will be enabled when alarming.
//                            (3) Automatic adjust day(28,30,31).
//                            (4)    Automatic move cursor to next location when set item.
//    PIN Connection:
//    RC0~1    :    32768Hz crystal
//    RC2    :    Buzzer
//    RC3 :    LCD Back Light,drive a PNP BJT
//    RD0~RD7    :     to LCD DB0~DB7
//    RA0~RA3    :     keypad col in
//    RC4~RC7    :    keypad line out
//            7    8    9    #
//            4    5    6    ↑
//            1    2    3    ↓
//            0    ←    →    *
//    RE0    :    LCD RS
//    RE1    :    LCD    RW
//    RE2    :    LCD    E

#include "my16f877.h"
#device ICD=true
//#fuses    HS,NOWDT,NOPROTECT,PUT,BROWNOUT
#use delay(clock = 24000000)
//#use fast_io(C)
#use fast_io(E)
#define lcd_busy (lcd_read_addr()&0x80) == 0x80
#define time_start_addr 0x80+0x04
#define time_hourh_addr time_start_addr
#define time_hourl_addr time_start_addr+1
#define time_minuteh_addr time_start_addr+3
#define time_minutel_addr time_start_addr+4
#define time_secondh_addr time_start_addr+6
#define time_secondl_addr time_start_addr+7
#define key_0 0x11
#define key_1 0x21
#define key_2 0x22
#define key_3 0x24
#define key_4 0x41
#define key_5 0x42
#define key_6 0x44
#define key_7 0x81
#define key_8 0x82
#define key_9 0x84
#define key_left 0x12
#define key_right 0x14
#define key_up 0x48
#define key_down 0x28
#define key_mode 0x18
#define key_cancel 0x88

char StrPower1[]     = " *  Power on  * ";
char StrSetTime[]    = " * Adjust time* ";
char StrSetDate[]    = " * Adjust date* ";
char StrAlarm1[]    = " * Set alarm 1* ";
char StrAlarm2[]    = " * Set alarm 2* ";
unsigned char PORTC_MAP;
#bit    BackLightEn = PORTC_MAP.3
unsigned char BackLightTimer;
int1     led;
#bit    lcd_rs = PORTE.0
#bit    lcd_rw = PORTE.1
#bit    lcd_e  = PORTE.2
#byte    lcd_bus = PORTD
#byte    lcd_dir = TRISD
#define    PWM_on    0x0c
#define    PWM_off    0x00
#define    PWM_period    200
#define PWM_DC    100
unsigned char lcd_addr;
unsigned char KeyLine;
unsigned char KeyOld;
unsigned char KeyNew;

struct mTime {
    unsigned char hourh;    //    hour,0~23
    unsigned char hourl;
    unsigned char minuteh;    //    minute,0~59
    unsigned char minutel;
    unsigned char secondh;    //    second,0~59
    unsigned char secondl;
    };
struct mTime CurrentTime = {1,2,0,0,0,0};
struct mTime AlarmTime1 = {0,7,0,0,0,0};    //    07:00:00
struct mTime AlarmTime2 = {1,3,3,0,0,0};    //    13:30:00
unsigned char AlarmStatus;
#bit Alarm1Enable = AlarmStatus.0
#bit Alarm2Enable = AlarmStatus.1
#bit Alarm1Alarm = AlarmStatus.2
#bit Alarm2Alarm = AlarmStatus.3
unsigned char Alarm1Cnt;    //    alarm1 second count
unsigned char Alarm2Cnt;
unsigned char CurrentMode;
#define mode_time 0
#define mode_set_time 1
#define mode_set_date 2
#define mode_set_alarm1 3
#define mode_set_alarm2 4
unsigned char adjust_item;
struct mDate {
    unsigned char year1;    //
    unsigned char year2;
    unsigned char year3;
    unsigned char year4;
    unsigned char monthh;
    unsigned char monthl;
    unsigned char dayh;
    unsigned char dayl;
};
struct mDate CurrentDate = {2,0,0,3,0,1,0,1};
unsigned char *pStr;

//    -------------------------------------------------------
unsigned char lcd_read_addr()
{
    unsigned char ch;
    lcd_dir = 0xff;    //    read from lcd
    lcd_rs = 0;
    lcd_rw = 1;    //    inst
    lcd_e = 1;
    #asm
        nop
        nop
        nop
    #endasm
    ch = lcd_bus;
    lcd_e = 0;
    lcd_dir = 0x00; //  set write to lcd
    return ch;
}

//    -------------------------------------------------------
unsigned char lcd_write_data(unsigned char ch)
{
    while (lcd_busy)
    {    restart_wdt();    }
    lcd_rs = 1;    //    data
    lcd_rw = 0;    //    write
    lcd_bus = ch;    //    write out
    lcd_e = 1;
    #asm
        nop
        nop
        nop
    #endasm
    lcd_e = 0;
    return 'Y';
}

//    -------------------------------------------------------
unsigned char lcd_write_inst(unsigned char ch)
{
    while (lcd_busy)
    {    restart_wdt();    }
    lcd_rs = 0;    //    inst
    lcd_rw = 0;    //    write
    lcd_bus = ch;
    lcd_e = 1;
    #asm
        nop
        nop
        nop
    #endasm
    lcd_e = 0;
    return 'Y';
}


//    -------------------------------------------------------
unsigned char lcd_read_data()
{
    unsigned char ch;
    while (lcd_busy)
    {    restart_wdt();    }
    lcd_dir = 0xff;    //    read from lcd
    lcd_rs = 1;    //    data
    lcd_rw = 1;    //    read
    lcd_e = 1;
    #asm
        nop
        nop
        nop
    #endasm
    ch = lcd_bus;    //    read in
    lcd_e = 0;
    lcd_dir = 0x00; //  set write to lcd
    return ch;
}

//    -------------------------------------------------------
void lcd_init()
{
    unsigned char Tempch;
    lcd_addr = 0;
    delay_ms(100);
    Tempch = 0x38;    //    1-line mode,5x8 dots
    lcd_write_inst(Tempch);    //    Function set
    Tempch = 0x0f;    //    lcd on,cursor on,blink on
    lcd_write_inst(Tempch);    //    Display on/off
    Tempch = 0x06;    //    Increment mode,Entire shift off
    lcd_write_inst(Tempch);
    Tempch = 0x01;    //    clear display
    lcd_write_inst(Tempch);
    delay_ms(3);
}

//    -------------------------------------------------------
//#int_timer1
//void timer1_interrupt(void)
#int_ccp2
void ccp2_interrupt(void)
{
    //TMR1H = 0x80;
    if (CurrentTime.secondl==9)
    {
        CurrentTime.secondl=0;
        if (CurrentTime.secondh==5)
        {
            CurrentTime.secondh=0;
            if (CurrentTime.minutel==9)
            {
                CurrentTime.minutel=0;
                if (CurrentTime.minuteh==5)
                {
                    CurrentTime.minuteh=0;
                    if (CurrentTime.hourl==9)
                    {
                        CurrentTime.hourl=0;
                        CurrentTime.hourh++;
                    }
                    else if((CurrentTime.hourl==3) && (CurrentTime.hourh==2))
                    {
                        CurrentTime.hourl=0;
                        CurrentTime.hourh=0;
                        if ((((CurrentDate.dayl == 8) || (CurrentDate.dayl == 9)) && (CurrentDate.dayh == 2) && (CurrentDate.monthl == 2) && (CurrentDate.monthh == 0)) ||
                            ((CurrentDate.dayl == 0) && (CurrentDate.dayh == 3) && ((((CurrentDate.monthl == 4) || (CurrentDate.monthl == 6)
                                || (CurrentDate.monthl == 9)) && (CurrentDate.monthh == 0)) || ((CurrentDate.monthl == 1) && (CurrentDate.monthh == 1)))) ||
                            ((CurrentDate.dayl == 1) && (CurrentDate.dayh == 3)))
                        {
                            CurrentDate.dayl=1;
                            CurrentDate.dayh=0;
                            if ((CurrentDate.monthl == 2) && (CurrentDate.monthh == 1))
                            {
                                CurrentDate.monthl = 1;
                                CurrentDate.monthh = 0;
                                if (CurrentDate.year4 == 9)
                                {
                                    CurrentDate.year4 = 0;
                                    if (CurrentDate.year3 == 9)
                                    {
                                        CurrentDate.year3 = 0;
                                        if (CurrentDate.year2 == 9)
                                        {
                                            CurrentDate.year2 = 0;
                                            CurrentDate.year1++;
                                        }
                                        else
                                            CurrentDate.year2++;
                                    }
                                    else
                                        CurrentDate.year3++;
                                }
                                else
                                    CurrentDate.year4++;
                            }
                            else if(CurrentDate.monthl == 9)
                            {
                                CurrentDate.monthl = 0;
                                CurrentDate.monthh++;
                            }
                            else
                                CurrentDate.monthl++;
                        }
                        else if(CurrentDate.dayl == 9)
                        {
                            CurrentDate.dayl=0;
                            CurrentDate.dayh++;
                        }
                        else
                            CurrentDate.dayl++;
                    }
                    else
                        CurrentTime.hourl++;
                }
                else
                    CurrentTime.minuteh++;
            }
            else
                CurrentTime.minutel++;
        }
        else
            CurrentTime.secondh++;
    }
    else
        CurrentTime.secondl++;
    if ((Alarm1Alarm == false) & (Alarm2Alarm == false))
    {
        led = 0;
        CCP1CON = PWM_off;
    }
    else
    {
        if (led == 1)
        {
            led = 0;
            PR2 = PWM_period;    //    set pwm period
            CCPR1L = PWM_DC;    //    set pwm duty cycle
            //CCP1CON = PWM_on;
        }
        else
        {
            led = 1;
            PR2 = PWM_period/2;    //    set pwm period
            CCPR1L = PWM_DC/2;    //    set pwm duty cycle
            //CCP1CON = PWM_off;
        }
    }
    Alarm1Cnt++;
    Alarm2Cnt++;
    if (BackLightEn == 0)
        if (((BackLightTimer++)>=60) & (Alarm1Alarm == false) & (Alarm1Alarm == false))
            BackLightEn = 1;    //    disable backlight
    PORTC = PORTC_MAP;
    //TMR1IF = 0;
    //PIR1 = PIR2 = 0x00;
    CCP2IF = 0;
}

//    -------------------------------------------------------
unsigned char get_key(void)
{
    unsigned char key_in,tmp;
    TRISC = 0x03;
    KeyLine = 0xf0;
    PORTC = KeyLine | PORTC_MAP;
    #asm
        nop
        nop
        nop
    #endasm
    if ((PORTA & 0x0f) != 0)
    {
        tmp = 0x10;
        for (KeyLine = tmp;KeyLine!=0;KeyLine = tmp)
        {
            PORTC = KeyLine | PORTC_MAP;
            tmp = KeyLine <<1;
            #asm
                nop
                nop
                nop
            #endasm
            key_in = PORTA & 0x0f;
            if (key_in != 0)
            {
                return (key_in | KeyLine);
            }
        }
        return 0;
    }
    else
        return 0;
}

//    -------------------------------------------------------
void set_mode(void)
{
    if (CurrentMode == mode_set_alarm2)
        CurrentMode = mode_time;
    else
    {
        CurrentMode++;
        adjust_item = 0;
    }
    lcd_write_inst(0x01);    //    clear LCD display
    lcd_write_inst(time_start_addr);    //    set LCD line1
    if (CurrentMode == mode_set_time)
    {
        lcd_write_data(CurrentTime.hourh + '0');
        lcd_write_data(CurrentTime.hourl + '0');
        lcd_write_data(':');
        lcd_write_data(CurrentTime.minuteh + '0');
        lcd_write_data(CurrentTime.minutel + '0');
        lcd_write_data(':');
        lcd_write_data(CurrentTime.secondh + '0');
        lcd_write_data(CurrentTime.secondl + '0');
        pStr = StrSetTime;
    }
    else if(CurrentMode == mode_set_date)
    {
        lcd_write_data(CurrentDate.year1 + '0');
        lcd_write_data(CurrentDate.year2 + '0');
        lcd_write_data(CurrentDate.year3 + '0');
        lcd_write_data(CurrentDate.year4 + '0');
        lcd_write_data('/');
        lcd_write_data(CurrentDate.monthh + '0');
        lcd_write_data(CurrentDate.monthl + '0');
        lcd_write_data('/');
        lcd_write_data(CurrentDate.dayh + '0');
        lcd_write_data(CurrentDate.dayl + '0');
        pStr = StrSetDate;
    }
    else if(CurrentMode == mode_set_alarm1)
    {
        lcd_write_data(AlarmTime1.hourh + '0');
        lcd_write_data(AlarmTime1.hourl + '0');
        lcd_write_data(':');
        lcd_write_data(AlarmTime1.minuteh + '0');
        lcd_write_data(AlarmTime1.minutel + '0');
        lcd_write_data(':');
        lcd_write_data(AlarmTime1.secondh + '0');
        lcd_write_data(AlarmTime1.secondl + '0');
        lcd_write_data(' ');
        lcd_write_data('O');
        if (Alarm1Enable)
        {
            lcd_write_data('n');
        }
        else
        {
            lcd_write_data('f');
            lcd_write_data('f');
        }
        pStr = StrAlarm1;
        Alarm1Cnt =0;
    }
    else if(CurrentMode == mode_set_alarm2)
    {
        lcd_write_data(AlarmTime2.hourh + '0');
        lcd_write_data(AlarmTime2.hourl + '0');
        lcd_write_data(':');

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费av网站大全久久| 国产一区二区三区在线观看精品 | 日韩在线一二三区| 黄色日韩三级电影| 色综合久久久久网| 国产亚洲欧美一级| 亚洲视频精选在线| 日日噜噜夜夜狠狠视频欧美人| 福利电影一区二区三区| 欧美人动与zoxxxx乱| 日本一区二区综合亚洲| 美女诱惑一区二区| 欧美色偷偷大香| 国产精品拍天天在线| 精品影院一区二区久久久| 91官网在线观看| 日韩一区中文字幕| 国产精品综合二区| 精品国产乱码久久久久久牛牛| 亚洲一区中文在线| av电影一区二区| 国产偷国产偷精品高清尤物| 久久精品国产网站| 7777精品久久久大香线蕉| 亚洲乱码日产精品bd | 亚洲gay无套男同| aaa欧美日韩| 国产女同互慰高潮91漫画| 九九在线精品视频| 精品三级在线看| 免费精品视频在线| 欧美一区二区成人| 免费看欧美美女黄的网站| 在线播放91灌醉迷j高跟美女 | 中文字幕免费一区| 国产福利一区二区| 久久精品一二三| 国产成人免费网站| 中文字幕乱码久久午夜不卡| 国产成人在线色| 亚洲国产精品尤物yw在线观看| 色综合久久久久久久| 亚洲最大成人网4388xx| 欧洲一区在线电影| 三级成人在线视频| 26uuuu精品一区二区| 国产精品一区二区久久不卡| 中文一区二区在线观看| 91免费小视频| 亚洲一区在线视频观看| 欧美一区二区大片| 国产酒店精品激情| 日韩一区在线免费观看| 在线观看一区二区精品视频| 图片区小说区区亚洲影院| 日韩一区二区三区四区五区六区 | 亚洲综合色在线| 欧美日韩精品福利| 精品中文字幕一区二区| 国产精品免费aⅴ片在线观看| 日本高清不卡视频| 人人超碰91尤物精品国产| 久久视频一区二区| 色婷婷综合在线| 久久国产成人午夜av影院| 国产欧美一区二区精品性色超碰 | 色综合色狠狠天天综合色| 亚洲不卡av一区二区三区| 精品久久久久久亚洲综合网| 国产一区二区精品在线观看| 国产精品久久久久久久久久久免费看| 91在线小视频| 人人狠狠综合久久亚洲| 1000精品久久久久久久久| 欧美精品三级在线观看| 国产成人午夜精品5599| 午夜欧美大尺度福利影院在线看 | 国产午夜亚洲精品午夜鲁丝片 | 五月天国产精品| 国产人久久人人人人爽| 在线观看免费一区| 国产精品99久久不卡二区| 亚洲在线视频一区| 国产女同互慰高潮91漫画| 欧美在线free| 高清国产一区二区| 麻豆精品视频在线观看免费| 中文字幕日本乱码精品影院| 精品日韩在线观看| 欧美三级乱人伦电影| 成人午夜又粗又硬又大| 蜜桃免费网站一区二区三区| 一区二区三区欧美在线观看| 日本一区二区三区在线不卡 | 午夜国产不卡在线观看视频| 国产精品久久久久久久裸模| 日韩精品一区二区三区四区视频 | 洋洋av久久久久久久一区| 久久久www成人免费毛片麻豆| 欧美日韩免费电影| 久久精品人人做人人爽人人| 在线播放中文字幕一区| 欧美亚洲一区二区在线| av福利精品导航| 成人免费视频国产在线观看| 国内不卡的二区三区中文字幕| 亚洲成a人片在线观看中文| 亚洲色图一区二区三区| 欧美韩国日本不卡| 国产日韩一级二级三级| 久久久久国产一区二区三区四区| 日韩免费性生活视频播放| 欧美丰满一区二区免费视频| 欧美在线免费播放| 欧美日韩国产大片| 欧美日韩另类一区| 欧美三级中文字| 欧美日韩国产精品成人| 8x福利精品第一导航| 欧美日韩aaa| 欧美二区乱c少妇| 欧美日韩情趣电影| 欧美精品丝袜中出| 91精品国产色综合久久久蜜香臀| 欧美群妇大交群的观看方式| 欧美精品第一页| 欧美一级理论片| 精品国产三级a在线观看| 久久久亚洲高清| 欧美国产日本韩| 一区二区三区在线高清| 亚洲va国产天堂va久久en| 美女视频黄a大片欧美| 国产毛片精品一区| 东方欧美亚洲色图在线| 色悠悠亚洲一区二区| 欧美美女直播网站| 精品国产一区二区精华| 国产精品久久久久aaaa樱花| 一区二区三区精品在线| 日韩国产欧美视频| 国产麻豆精品在线| 99久久国产综合精品女不卡| 欧美性一级生活| 精品国产伦一区二区三区观看方式 | 欧美综合在线视频| 欧美女孩性生活视频| 久久久综合九色合综国产精品| 中文字幕va一区二区三区| 亚洲一区二区中文在线| 日韩中文字幕1| 成人晚上爱看视频| 欧美日韩国产小视频| 久久久久久99久久久精品网站| 亚洲乱码中文字幕综合| 久久精品国产秦先生| 99精品久久久久久| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲6080在线| 粉嫩13p一区二区三区| 欧美三级视频在线播放| 国产视频一区二区三区在线观看| 亚洲午夜在线电影| 国产一区二区女| 欧美日韩电影一区| 国产精品乱码人人做人人爱| 日本欧美在线观看| 色婷婷综合久色| 精品福利一二区| 天堂va蜜桃一区二区三区漫画版| 高清shemale亚洲人妖| 在线成人免费观看| 一区二区高清在线| 成人app网站| 欧美成人vps| 婷婷中文字幕综合| 91浏览器入口在线观看| 欧美经典三级视频一区二区三区| 青青草国产成人99久久| 91福利社在线观看| 亚洲欧洲在线观看av| 国产福利精品导航| 精品久久久久一区| 日韩经典中文字幕一区| 91行情网站电视在线观看高清版| 欧美精彩视频一区二区三区| 精品系列免费在线观看| 91麻豆精品国产| 亚洲444eee在线观看| 欧美午夜不卡视频| 亚洲精品高清在线观看| av中文字幕不卡| 欧美成人精品高清在线播放| 五月婷婷另类国产| 91美女蜜桃在线| 亚洲精品视频一区| 91麻豆.com| 亚洲美女视频在线| 91免费看片在线观看| 亚洲天堂精品在线观看|