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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機時鐘,12mhz晶振,怎樣才能達到一秒精確定時,求解,非常感謝

[復制鏈接]
跳轉到指定樓層
樓主
ID:409340 發表于 2018-10-14 10:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位大佬,如題
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:137736 發表于 2018-10-14 17:56 | 只看該作者
51單片機用12M晶體,1個周期1微秒。用time0定時器自裝入模式,定時100微秒,設置一個16位定時器標志,每次加1,加夠10000次歸零。你主程序檢查這個標志就行了。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:387733 發表于 2018-10-14 19:17 | 只看該作者
采用定時器中斷,定時50mS,然后用計數單元計數20次中斷,正好1秒,誤差為零


評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:213173 發表于 2018-10-14 20:08 | 只看該作者
運用定時器模式2 八位自動重裝可以達到一秒精確定時。
#include "REG52.H"
sbit LED = P1^0;
sbit key = P1^1;
unsigned int i=0;  
bit sign=0;
void Timer0Init()                //250微秒@12.000MHz
{
        TMOD= 0x02;                //設置定時器0模式2
        TL0 = 0x06;                //設置定時初值
        TH0 = 0x06;                //設置定時重載值
        TR0 = 1;                //定時器0開始計時
        EA= 1;
        ET0=1;
}
void delayms(unsigned int k)
{
        unsigned int i,j;
        for(i=k;i>0;i--)
                for(j=120;j>0;j--);
}
void main()
{
        Timer0Init();       
        while(1)
        {
                if((key==0)&&(sign==0))
                {
                        delayms(10);
                        if(!key)
                        {
                                sign=1;       
                                while(!key);
                        }
                }       
        }
}
void InterruptTimer0() interrupt 1
{
        if(sign==1)
        {
                i++;
                LED=0;
                if(i>=4000)//1秒
                {
                        i=0;  
                        LED=1;
                        sign=0;
                }
        }
}

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:74187 發表于 2018-10-14 20:19 | 只看該作者
  1. /********************************************************
  2. *描述:定時器0點亮一個LED
  3. ********************************************************/
  4. #include "reg51.h"
  5. #include "intrins.h" //包含左移和右移指令
  6. #include "string.h"         //字符串
  7. #include "stdio.h"         //標準輸入輸出



  8. /*******************************************************************************
  9. * 文件名:位定義
  10. * 描  述:
  11. * 功  能:
  12. * 作  者:大核桃
  13. * 版本號:1.0.1(2017.05.23)
  14. *******************************************************************************/

  15. bit flag1s = 0;//1s翻轉一次

  16. typedef unsigned char uint8;//0-255
  17. typedef unsigned int  uint16;//0-65535
  18. typedef unsigned long uint32;//0-65535*65535

  19. /*******************************************************************************
  20. * 文件名:函數前置聲明
  21. * 描  述:
  22. * 功  能:
  23. * 作  者:大核桃
  24. * 版本號:1.0.1(2017.05.23)
  25. *******************************************************************************/

  26. void Bsp_Power_Init(void);
  27. void Timer0Init(void);                //1毫秒@11.0592MHz


  28. /*******************************************************************************
  29. * 文件名:主循環入口
  30. * 描  述:
  31. * 功  能:
  32. * 作  者:大核桃
  33. * 版本號:1.0.1(2017.05.23)
  34. *******************************************************************************/
  35. void main(void)
  36. {
  37.         uint8 i = 0;

  38.         Timer0Init();    //定時器0初始化函數

  39.         while(1)
  40.         {
  41.                 if(flag1s)
  42.                 {
  43.                    P2 = 0XFE;//點亮最低位的小燈               
  44.                 }
  45.                 else
  46.                 {
  47.                    P2 = 0XFF;//滅掉最低位的小燈               
  48.                 }
  49.         }
  50. }

  51. /*******************************************************************************
  52. * 文件名:void Timer0Init(void)
  53. * 描  述: 定時器0配置
  54. * 功  能:編程模塊化
  55. * 作  者:大核桃
  56. * 版本號:1.0.1(2017.05.23)
  57. *******************************************************************************/
  58. void Timer0Init(void)                //1毫秒@11.0592MHz
  59. {
  60.         TMOD &= 0xF0;                //設置定時器模式 1111_
  61.         TMOD |= 0X01;       //16位模式,不可重裝

  62.         TL0 = (65535 - 921) % 256;                    //設置定時初值
  63.         TH0 = (65535 - 921) / 256;                     //設置定時初值

  64.         ET0 = 1;            //打開定時器0中斷使能
  65.         TR0 = 1;                    //定時器0開始計時
  66.         EA = 1;             //打開總中斷使能
  67. }


  68. void Timer0_inter(void) interrupt 1
  69. {
  70.         static uint16 tmr1s = 0;

  71.     //自動重載,初值可以不需要寫
  72.         TL0 = (65535 - 921) % 256;                    //設置定時初值
  73.         TH0 = (65535 - 921) / 256;                     //設置定時初值

  74.         tmr1s++;

  75.         if(tmr1s >= 1000)
  76.         {
  77.                 tmr1s = 0;

  78.                 flag1s = !flag1s;//1s標志位翻轉一次
  79.         }
  80.                        
  81. }

復制代碼

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:123289 發表于 2018-10-14 20:22 | 只看該作者
你需要補補定時器部分的課。
回復

使用道具 舉報

7#
ID:111634 發表于 2018-10-14 21:11 | 只看該作者
若只需一次1秒定時,可用上述方法。若需多次不間斷1秒定時,則須采用定時器方式2自動裝填定時初值,置250us定時,然后在定時中斷中計次4000,得到1s定時。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产黄色大片在线观看 | 日韩av啪啪网站大全免费观看 | 国产精品美女久久久久aⅴ国产馆 | 国产精品一区在线 | 国产污视频在线 | 午夜精品久久久久久久久久久久 | 日韩理论电影在线观看 | 九九免费观看视频 | 欧美另类视频 | 国产成人久久av免费高清密臂 | 欧美最猛黑人 | 成人黄视频在线观看 | 美日韩中文字幕 | 国产韩国精品一区二区三区 | 免费av直接看| 福利视频二区 | 国产欧美日韩二区 | 91一区二区三区 | 亚洲欧美日本在线 | 亚洲精品免费在线观看 | 992人人草| 337p日本欧洲亚洲大胆鲁鲁 | 亚洲国产一区二区在线 | 青青草网站在线观看 | 在线观看www高清视频 | www.亚洲一区二区三区 | 久久精品一区二 | 免费同性女女aaa免费网站 | 日韩精品一区二区三区中文在线 | 午夜精品网站 | 精品不卡 | 成年人在线视频 | 欧美日韩不卡合集视频 | 精品久久久久久亚洲综合网 | 欧美男人天堂 | 米奇狠狠鲁 | 一级黄色毛片免费 | 一区欧美 | 久久久91精品国产一区二区精品 | 国产欧美在线视频 | 黄视频网站在线 |