久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1861|回復: 1
打印 上一主題 下一主題
收起左側(cè)

睡眠-喚醒定時器

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:350005 發(fā)表于 2018-7-17 15:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#define MAIN_Fosc                22118400L        //定義主時鐘

#include        "STC15Fxxxx.H"

#define DIS_DOT                0x20
#define DIS_BLACK        0x10
#define DIS_                0x11

/****************************** 用戶定義宏 ***********************************/

#define                Timer0_Reload        (65536UL -(MAIN_Fosc / 1000))                //Timer 0 中斷頻率, 1000次/秒

/*****************************************************************************/






/*************        本地常量聲明        **************/
u8 code t_display[]={                                                //標準字庫
//         0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
        0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
//black         -     H    J         K          L           N        o   P         U     t    G    Q    r   M    y
        0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e,
        0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46};        //0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -1

u8 code T_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};                //位碼



/*************        IO口定義        **************/
sbit        P_HC595_SER   = P4^0;        //pin 14        SER                data input
sbit        P_HC595_RCLK  = P5^4;        //pin 12        RCLk        store (latch) clock
sbit        P_HC595_SRCLK = P4^3;        //pin 11        SRCLK        Shift data clock

/*************        本地變量聲明        **************/

u8         LED8[8];                //顯示緩沖
u8        display_index;        //顯示位索引
u16        msecond;                //1000ms計數(shù)

u8        Test_cnt;        //測試用的秒計數(shù)變量
u8        SleepDelay;        //喚醒后再進入睡眠所延時的時間

void        delay_ms(u8 ms);
void         DisplayScan(void);
void        SetWakeUpTime(u16 SetTime);




/********************** 主函數(shù) ************************/
void main(void)
{
        u8        i;
       
        P0M1 = 0;        P0M0 = 0;        //設置為準雙向口
        P1M1 = 0;        P1M0 = 0;        //設置為準雙向口
        P2M1 = 0;        P2M0 = 0;        //設置為準雙向口
        P3M1 = 0;        P3M0 = 0;        //設置為準雙向口
        P4M1 = 0;        P4M0 = 0;        //設置為準雙向口
        P5M1 = 0;        P5M0 = 0;        //設置為準雙向口
        P6M1 = 0;        P6M0 = 0;        //設置為準雙向口
        P7M1 = 0;        P7M0 = 0;        //設置為準雙向口

        display_index = 0;
        for(i=0; i<8; i++)        LED8[i] = DIS_BLACK;        //全部消隱
       
        Test_cnt = 0;        //秒計數(shù)范圍為0~255
        SleepDelay = 0;
        LED8[5] = 0;
        LED8[6] = 0;
        LED8[7] = Test_cnt;
       
        EA = 1;                //允許總中斷

        while(1)
        {
                delay_ms(1);        //延時1ms
                DisplayScan();
               
                if(++msecond >= 1000)        //1秒到
                {
                        msecond = 0;                //清1000ms計數(shù)
                        Test_cnt++;                        //秒計數(shù)+1
                        LED8[5] = Test_cnt / 100;
                        LED8[6] = (Test_cnt % 100) / 10;
                        LED8[7] = Test_cnt % 10;

                        if(++SleepDelay >= 2)        //2秒后睡眠
                        {
                                SleepDelay = 0;

                                P_HC595_SER = 0;
                                for(i=0; i<16; i++)                //先關(guān)閉顯示,省電
                                {
                                        P_HC595_SRCLK = 1;
                                        P_HC595_SRCLK = 0;
                                }
                                P_HC595_RCLK = 1;
                                P_HC595_RCLK = 0;                //鎖存輸出數(shù)據(jù)
                               
                                SetWakeUpTime(2000);        //2秒后醒來

                                PCON |= 0x02;        //Sleep
                                _nop_();
                                _nop_();
                                _nop_();
                        }
                }
        }
}
/**********************************************/


//========================================================================
// 函數(shù): void        SetWakeUpTime(u16 SetTime)
// 描述: 喚醒定時器設置時間值函數(shù)。
// 參數(shù): SetTime: 要設置的時間值(睡眠的時間), 單位為ms.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-7-15
// 備注:
//========================================================================
void        SetWakeUpTime(u16 SetTime)
{
        SetTime = (u16)((32768UL * (u32)SetTime) / 16000);        //重裝值 = Fwkt/16 * SetTime/1000 = Fwkt * SetTime / 16000
        if(SetTime > 0)        SetTime--;
        WKTCL = (u8)SetTime;
        WKTCH = (u8)(SetTime >> 8) | 0x80;
}

//========================================================================
// 函數(shù): void  delay_ms(unsigned char ms)
// 描述: 延時函數(shù)。
// 參數(shù): ms,要延時的ms數(shù), 這里只支持1~255ms. 自動適應主時鐘.
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 備注:
//========================================================================
void  delay_ms(u8 ms)
{
     u16 i;
         do{
              i = MAIN_Fosc / 13000;
                  while(--i)        ;   //14T per loop
     }while(--ms);
}

/**************** 向HC595發(fā)送一個字節(jié)函數(shù) ******************/
void Send_595(u8 dat)
{               
        u8        i;
        for(i=0; i<8; i++)
        {
                dat <<= 1;
                P_HC595_SER   = CY;
                P_HC595_SRCLK = 1;
                P_HC595_SRCLK = 0;
        }
}

/********************** 顯示掃描函數(shù) ************************/
void DisplayScan(void)
{       
        Send_595(~T_COM[display_index]);                                //輸出位碼
        Send_595(t_display[LED8[display_index]]);        //輸出段碼

        P_HC595_RCLK = 1;
        P_HC595_RCLK = 0;                                                        //鎖存輸出數(shù)據(jù)
        if(++display_index >= 8)        display_index = 0;        //8位結(jié)束回0
}




評分

參與人數(shù) 1黑幣 +15 收起 理由
564654654 + 15 回帖助人的獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-7-17 23:03 | 只看該作者
本帖補全原理圖和其他資料后可獲得積分
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧洲尺码日本国产精品 | 国产精品久久久久久吹潮 | 成人黄色电影免费 | 91污在线 | 一区二区三区国产好 | 久久久国产一区二区三区 | 精品欧美 | 男人的天堂视频网站 | 亚洲精品一 | 自拍视频一区二区三区 | 欧美性生交大片免费 | 国产天天操 | 天堂av资源 | 在线国产一区 | 成人不卡 | 欧美国产一区二区 | a级片www | 欧美精品被 | 91最新入口 | 色婷婷精品久久二区二区蜜臂av | 国产日韩欧美另类 | 91av视频在线观看 | 亚洲综合资源 | 亚洲一区二区三区在线免费 | 蜜桃日韩 | 在线观看特色大片免费网站 | 国产成人免费在线观看 | 国产午夜亚洲精品不卡 | 影音先锋久久 | 九色 在线 | 精品一二区 | 久久视频精品 | 岛国视频 | 中文字幕加勒比 | 免费成人高清在线视频 | 欧美中文视频 | 日本福利视频 | 国产专区视频 | 毛片免费视频 | 日日干天天操 | 国产精品毛片 |