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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1983|回復: 0
打印 上一主題 下一主題
收起左側

怎么在時鐘中斷的時候向DS1302中寫入數據,實現調時功能

[復制鏈接]
跳轉到指定樓層
樓主
ID:75108 發表于 2015-3-23 14:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
main中代碼如下:
/***********************************************************
*    ³ÌÐòÉè¼Æ¹¦ÄÜ£º1¡¢»ùÓÚDS1302µÄʵʱʱÖÓÏÔʾ£¬²¢¾ß±¸       *
*                    ¿ÉÒÔµ÷½Úʱ¼ä¡¢ÈÕÆÚµÄ¹¦ÄÜ£¨À©Õ¹ÄÖÖӵȣ© *
*   2¡¢¿ÉÒÔÏÔʾζȣ¬Í¨¹ý°´¼ü½øÐÐÏÔʾÇл»£¬Î¶ȱ¨¾¯        *
*   3¡¢À©Õ¹ÏÔÊ¾ÆøÑ¹¡¢¾ß±¸ÓïÒô²¥±¨¹¦ÄÜ£¨´ýÀ©Õ¹£©            *
*   ×÷ÕߣºZ B T                         ʱ¼ä£º   2015.03   *
***********************************************************/
#include<reg51.h>
#include"DS1302.h"
#define uint unsigned int
#define uchar unsigned char

/* º¯ÊýÔ­ÐÍÉùÃ÷ */
void timer_init();          /* Öжϳõʼ»¯ */
void key_scan();            /* ¼üÅÌɨÃ躯Êý */
void display_time();        /* ÏÔʾʱ¼ä */
void delayms(uint xms);     /* xmsΪ¶àÉÙ ÑÓʱ¶àÉÙºÁÃë */

/* ¶Ë¿Ú¶¨Òå */
sbit led = P2^2;        /* LED¶Ë¿Ú */
sbit buzzer = P2^1;        /* ·äÃùÆ÷¶Ë¿Ú */
sbit key0 = P1^0;        /* ½øÈëʱÖÓÉèÖÃģʽ */
sbit key1 = P1^1;        /* Ñ¡ÔñÒªµ÷µÄ²¿·Ö */
sbit key2 = P1^2;        /* Ôö¼Ó°´¼ü */
sbit key3 = P1^3;        /* ¼õС°´¼ü */
sbit dula = P2^6;       /* 74HC573N¿ØÖƵĶÎÑ¡¶Ë  */
sbit wela = P2^7;       /* 74HC573N¿ØÖƵÄλѡ¶Ë */

//extern unsigned char TIME[7];    //¼ÓÈëÈ«¾Ö±äÁ¿
uchar code w[] = {0xfe, 0xfd,0xfb, 0xf7, 0xef, 0xdf};        /* ÊýÂë¹Üλѡ */
uchar code tab[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                            0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};    /* 0----FµÄÏÔʾÂë ¹²Òõ */

uchar display_data[8];    /* ÓÃÀ´´æ·ÅÒªÏÔʾµÄ8λÊýµÄÖµ (±¾³ÌÐòÔÝʱÓÃ6¸öÊýÂë¹Ü) */
uchar state,set_place; /* state£º ÊÇ·ñÑ¡Ôñµ÷ʱµÄ±êÖ¾   set_place £ºÑ¡Ôñµ÷½ÚÄIJ¿·Ö */
                                                        
void main()
{
    timer_init();     /* Öжϳõʼ»¯ */
    //ds1302_init();   /*  Ê±ÖÓ³õʼ»¯ */
    while(1)
    {
        if(state == 0)
        {
            ds1302_read_time();
               
        }
        else
        {
            key_scan();
        }
        display_time();
    }
   
   

}

void key_scan()
{
   if(key1 == 0)
   {
     delayms(5);
     if(key1 == 0)
      {              
        set_place++;
        if(set_place == 7)
        {
          set_place = 0;
        }
      }
         while(!key1);
   }
   
   if(set_place != 0)
   {
     
       if(key2 == 0)
       {
           delayms(5);
           if(key2 == 0)
           {
               while(!key1);   // °´¼üÊÍ·Å
               if(set_place == 1)
               {
                   TIME[1]++;   ds1302_read_time();
               }
           }
       }
   }

            
           
}

/* ÊýÂë¹ÜÏÔʾʱ¼äº¯Êý */
void display_time()
{
    uchar i;
    uint j;

    display_data[0] = tab[TIME[2]/16];                /* ½«Ð¡Ê±µÄBCDÂë·Ö³ÉÁ½Î»Êý */
    display_data[1] = tab[TIME[2]&0x0f];                 
    //display_data[2] = 0x40;        /* ÏÔʾ-- ±¾Éè¼ÆÔÝʱ²»ÏÔʾ */
    display_data[2] = tab[TIME[1]/16];                /* ½«´ú±í·ÖµÄBCDÂë·Ö³ÉÁ½Î»Êý */
    display_data[3] = tab[TIME[1]&0x0f];   
    //display_data[5] = 0x40;
    display_data[4] = tab[TIME[0]/16];                /* ½«´ú±íСʱµÄBCDÂë·Ö³ÉÁ½Î»Êý */
    display_data[5] = tab[TIME[0]&0x0f];
   
    for(i = 0; i < 6; i++)
    {
        wela = 1;
        P0 = w[i];    /* ËÍÈëλѡ */
        wela = 0;
        
        dula = 1;
        P0 = display_data[i];    /* ËÍÈë¶ÎÑ¡ */
        dula = 0;
        P0 = 0x00;    /* ÏûÒþ */
        
        if(i == 5)    /* ledÉÁ˸ */
        {
            led = ~led;
        }
        j=70;             /* ɨÃè¼ä¸ôʱ¼äÉ趨 */
        while(j--);
    }
}

void timer_init()
{
    TMOD = 0x01;
    TH0 = (65536 - 45872) / 256;
    TL0 = (65536 - 45872) % 256;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}

void t0() interrupt 1
{
    TH0 = (65536 - 45872) / 256;
    TL0 = (65536 - 45872) % 256;

    if(key0 == 0)
    {
        delayms(5);
        if(key0 == 0)
        {
            state = ~state;
            set_place++;
            ds1302_init();  /* ´ò¿ª¹Ø±Õд±£»¤ */
            while(!key0);
        }
    }
  
}
/* ÑÓʱº¯Êý */
void delayms(uint xms)
{
    uint i, j;
    for(i = xms; i > 0; i--)
    for(j = 110; j > 0; j--);    /* ÑÓʱԼxms */
}

希望能有人解答一下key_scan中的函數是不是哪里寫錯了,
這個想了好久都沒弄好,希望得到大家幫助



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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美激情精品久久久久久 | 国产在线播放一区二区三区 | 国产中文视频 | 天天操操 | 日韩欧美在线观看 | 在线观看中文字幕视频 | 精品在线一区 | 成人九区| 欧美日韩亚洲国产 | 黄色国产区| 日韩免费av一区二区 | 在线中文字幕视频 | 在线不卡视频 | 国产欧美日韩视频 | www.久| 欧美日韩一区在线播放 | 欧美日韩网站 | 国产精品精品视频一区二区三区 | 一级毛片网 | 中文字幕一区二区三区精彩视频 | 国产激情一区二区三区 | 欧美久久国产 | 日韩一区二区成人 | 黄色av网站在线观看 | 欧美8一10sex性hd | 毛片链接| 日韩精品在线免费观看视频 | 欧美精品中文字幕久久二区 | 国产精品久久久久无码av | 天天射中文 | 在线欧美视频 | 亚洲一二三区av | 日本在线精品视频 | 一级片在线免费播放 | www.欧美.com | 中文字幕一区二区三区日韩精品 | 亚洲精品黄| 麻豆国产一区二区三区四区 | 久久久久久一区 | 97精品一区二区 | 一区二区三区欧美 |