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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機timer2定時器計時的疑問

[復制鏈接]
跳轉到指定樓層
樓主
剛從51單片機轉到新的芯片來,對這個芯片的定時器不了解,有沒有人能說一下 time2中斷處理的500us中斷一次是怎么算來的 ,還有芯片手冊寫的預分頻比后分頻比是什么意思?定時時間怎么設?感覺好混亂啊,理不清楚。

void Timer2_Init (void)
{
         T2CON = 0x49;  //Bit[1,0]=01,T2時鐘分頻 1:4 FT60F02x_DS_rev1p09.pdf (1.96 MB, 下載次數: 9)

                                    //Bit[6-3]=1001,T2輸出時鐘分頻1:1
         TMR2 = 0;         
         PR2 = 100;         //設置TMR2輸出比較值定時100us=(1/4000000)*4*100(PR2)
         TMR2IF = 0;
         TMR2IE = 1;
         TMR2ON = 1;
         PEIE=1;   
}
//定時器2的中斷處理**********************
else if(TMR2IE && TMR2IF)//500us中斷一次
  {
    TMR2IF = 0;
    time2++;
    if(time2)
     {
                 if (time2>=20)//500us*20=10ms
                 {
                         KeyScan_Process();
                         time2=0;
                 }
     }               







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

使用道具 舉報

沙發
ID:7485 發表于 2019-7-17 18:21 | 只看該作者
你從51轉到哪種單片機了?是不是89c52一類的?
回復

使用道具 舉報

板凳
ID:155507 發表于 2019-7-17 22:47 | 只看該作者
你這種單片機是輝芒的, 有PIC16 like 指令集

設置TMR2輸出比較值定時100us=(1/16000000)*2*4*200(PR2)

  1. //*********************************************************
  2. /*  文件名:TEST_60F02x_Timer2.c
  3. *        功能:  FT60F02x-Time2功能演示
  4. *   IC:    FT60F023 SOP16
  5. *   晶振:  16M/2T                    
  6. *   說明:  當DemoPortIn懸空或者高電平時,
  7. *                   DemoPortOut輸出5KHz占空比50%的波形-Tm2實現
  8. *                   當DemoPortIn接地時,DemoPortOut輸出高電平.關定時器

  9. *                  FT60F023  SOP16
  10. *                 ----------------
  11. *  NC------------|1(PA1)   (PA0)16|------------NC     
  12. *  NC------------|2(PA7)   (PA2)15|------------NC
  13. *  DemoPortIn----|3(PA6)   (PA4)14|---DemoPortOut
  14. *  VDD-----------|4(VDD)   (GND)13|-----------GND
  15. *  NC------------|5(PC7)   (PC0)12|------------NC
  16. *  NC------------|6(PC6)   (PC1)11|------------NC
  17. *  NC------------|7(PC5)   (PC2)10|------------NC
  18. *  NC------------|8(PC4)   (PC3)09|------------NC
  19. *                              ----------------
  20. */
  21. //*********************************************************
  22. #include "SYSCFG.h"

  23. //**********************************************************
  24. //***********************宏定義*****************************
  25. #define  unchar     unsigned char
  26. #define  unint      unsigned int
  27. #define  unlong     unsigned long

  28. #define  DemoPortOut        RA4   
  29. #define  DemoPortIn                RA6

  30. /*-------------------------------------------------
  31. *  函數名:POWER_INITIAL
  32. *        功能:  上電系統初始化
  33. *  輸入:  無
  34. *  輸出:  無
  35. --------------------------------------------------*/
  36. //********************************************************
  37. //**************中斷處理**********************************
  38. void interrupt ISR(void)                        //PIC_HI-TECH使用
  39. {
  40.    
  41.   //定時器2的中斷處理**********************
  42.         if(TMR2IE && TMR2IF)                        //100us中斷一次 = 5KHz
  43.         {
  44.                 TMR2IF = 0;

  45.                 DemoPortOut = ~DemoPortOut; //翻轉電平
  46.         }
  47. }
  48. /*-------------------------------------------------
  49. *  函數名:POWER_INITIAL
  50. *        功能:  上電系統初始化
  51. *  輸入:  無
  52. *  輸出:  無
  53. --------------------------------------------------*/       
  54. void POWER_INITIAL (void)
  55. {
  56.          
  57.         OSCCON = 0B01110001;        //WDT 32KHZ IRCF=111=16MHZ/2=8MHZ,0.125US/T
  58.                                                          //Bit0=1,系統時鐘為內部振蕩器
  59.                                                          //Bit0=0,時鐘源由FOSC<2:0>決定即編譯選項時選擇
  60.         INTCON = 0;                          //暫禁止所有中斷
  61.         PORTA = 0B00000000;               
  62.         TRISA = 0B11101111;                //PA輸入輸出 0-輸出 1-輸入
  63.                                                         //PA3->輸出
  64.         PORTC = 0B00000000;        
  65.         TRISC = 0B11111111;                //PC輸入輸出 0-輸出 1-輸入         
  66.         WPUA = 0B01000000;             //PA端口上拉控制 1-開上拉 0-關上拉
  67.         OPTION = 0B00001000;        //Bit3=1 WDT MODE,PS=000=1:1 WDT RATE
  68.                                                         //Bit3 預分頻器分配位 0-Timer0 1-WDT
  69.                                                         //Bit7(PAPU)=0 ENABLED PULL UP PA
  70.         MSCKCON = 0B00000000;        //Bit6->0,禁止PA4, PC5穩壓輸出(60F02x保留位)
  71.                                                           //Bit5->0,TIMER2時鐘為Fosc(60F02x保留位)
  72.                                                           //Bit4->0,禁止LVR(60F02x M版之前)
  73.                             //Bit4->0, LVREN使能時,開啟LVR(60F02x M版及M版之后)  
  74.                             //Bit4->1, LVREN使能時,工作時開啟LVR, 睡眠時自動關閉LVR(60F02x M版及M版之后)      
  75.         CMCON0 = 0B00000111;         //關閉比較器,CxIN為數字IO口

  76. }
  77. /*-------------------------------------------------
  78. * 函數名稱:   TIMER2_INITIAL
  79. * 功能:      初始化設置定時器2
  80. * 相關寄存器: T2CON TMR2 PR2 TMR2IE TMR2IF PEIE GIE
  81. -------------------------------------------------*/
  82. void TIMER2_INITIAL (void)
  83. {
  84.          
  85.         T2CON = 0B00000001;         //Bit[1,0]=01,T2時鐘分頻 1:4
  86.                                                         //Bit[6-3]=0000,T2輸出時鐘分頻1:1
  87.         TMR2 = 0;                                  //TMR2賦初值
  88.         PR2 = 200;                                 //設置TMR2輸出比較值定時100us=(1/16000000)*2*4*200(PR2)
  89.                                                         //16M-2T-4分頻
  90.         TMR2IF = 0;                                //清TIMER2中斷標志
  91.         TMR2IE = 1;                                //使能TIMER2的中斷
  92.         TMR2ON = 1;                                //使能TIMER2啟動
  93.         PEIE=1;                                    //使能外設中斷
  94.         GIE = 1;                                   //使能全局中斷

  95. }
  96. /*-------------------------------------------------
  97. *  函數名: main
  98. *        功能:  主函數
  99. *  輸入:  無
  100. *  輸出:  無
  101. --------------------------------------------------*/
  102. void main()
  103. {
  104.         POWER_INITIAL();                //系統初始化
  105.         TIMER2_INITIAL();                  //初始化T2
  106.        
  107.         while(1)
  108.         {
  109.                 if(DemoPortIn == 1) //判斷輸入是否為高電平
  110.                 {
  111.                         TMR2IE = 1;         //開定時器2
  112.                          
  113.                 }
  114.                 else
  115.                 {
  116.                         TMR2IE = 0;         //關定時器2
  117.                         DemoPortOut = 1;
  118.                 }  
  119.         }
  120. }
復制代碼

回復

使用道具 舉報

地板
ID:155507 發表于 2019-7-17 23:02 | 只看該作者


有沒有人能說一下 time2中斷處理的500us中斷一次是怎么算來的



mcu+application+note_v0.07.pdf

698.99 KB, 下載次數: 6

FT60F02x_TIMER2.pdf

265.33 KB, 下載次數: 4

回復

使用道具 舉報

5#
ID:370231 發表于 2019-7-18 08:05 | 只看該作者
ahshmj 發表于 2019-7-17 18:21
你從51轉到哪種單片機了?是不是89c52一類的?

我發了有芯片手冊在上面,你可以下載來看看。
回復

使用道具 舉報

6#
ID:370231 發表于 2019-7-18 10:55 | 只看該作者

十分感謝大佬的回答,謝謝!!!
回復

使用道具 舉報

7#
ID:370231 發表于 2019-7-18 11:29 | 只看該作者
angmall 發表于 2019-7-17 22:47
你這種單片機是輝芒的, 有PIC16 like 指令集

設置TMR2輸出比較值定時100us=(1/16000000)*2*4*200(PR2)
...

  100us中斷一次 = 5KHz 這個5KHz是怎么來的?
100us=(1/16000000)*2*4*200(PR2)我把PR2=200代入這個公式等于0.02,這個0.02的值是定時時間嗎?
回復

使用道具 舉報

8#
ID:123289 發表于 2019-7-18 17:31 | 只看該作者
你51會了。
提示:在51中,12M的晶振,為什么一個時鐘脈沖是1us,而不是1/12 us 呢? 道理一樣。
回復

使用道具 舉報

9#
ID:155507 發表于 2019-7-18 19:55 | 只看該作者
a89588038 發表于 2019-7-18 11:29
100us中斷一次 = 5KHz 這個5KHz是怎么來的?
100us=(1/16000000)*2*4*200(PR2)我把PR2=200代入這個公 ...

  每100us 翻轉電平一次,一個周期為200us,所以頻率是5KHz

不用代入PR2,200就是PR2,(1/16000000)*2*4*200 = 1x10^-4 = 100us

回復

使用道具 舉報

10#
ID:370231 發表于 2019-7-19 09:38 | 只看該作者
angmall 發表于 2019-7-18 19:55
每100us 翻轉電平一次,一個周期為200us,所以頻率是5KHz

不用代入PR2,200就是PR2,(1/16000000)*2 ...

我理解了,非常感謝你的回答!!!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩成人精品在线观看 | 成年人在线视频 | 欧美中文字幕 | 九一视频在线观看 | 日韩精品一区二区三区在线播放 | 视频在线一区二区 | 国产精品一区二区久久 | 九九成人| 九色国产 | 成人av片在线观看 | 免费一级网站 | 99精品视频免费观看 | 欧美一区久久 | 日韩在线中文 | 女女百合av大片一区二区三区九县 | 999在线精品 | 精品中文字幕在线观看 | 热久久999 | 欧美一区精品 | 国产91在线精品 | 一级黄色片一级黄色片 | 亚洲欧美视频 | 亚洲精品一区二区三区蜜桃久 | 国产精品视频一二三区 | 毛片网站在线观看 | 欧美日韩不卡合集视频 | 成人亚洲精品久久久久软件 | 视频一区二区三区中文字幕 | 午夜视频免费在线观看 | 欧美成人一区二免费视频软件 | 欧美成人一区二区 | 综合网中文字幕 | 国产精品人人做人人爽 | 久久久国产一区 | 亚洲精品乱码久久久久久9色 | 中文字幕亚洲精品 | 久久曰视频 | 精品日韩一区二区三区av动图 | 免费看片国产 | 人人做人人澡人人爽欧美 | 国产精品自拍av |